# TDD는 무엇이고 왜 하는 것일까? 🤔 ## TDD (Test Driven Development) > TDD란, 테스트가 주도하는 개발을 말한다. 테스트 코드를 먼저 작성한 뒤 해당 테스트를 통과하는 코드를 구현하는 것을 우리는 TDD라고 부른다. ## TDD를 왜 해야 하는가? TDD를 왜 해야 하는지를 이해하기 위해서는 TDD를 추상적으로 이해하는 것이 중요하다. > TDD란, **결정과 피드백 사이의 간격을 좁히기 위해서 수행하는 것**이다. 여기서 말하는 결정과 피드백은 다음과 같다. ### 결정 - 원하는 구현 결과를 얻기 위해 세운 계획 - ex) A라는 기능을 구현하기 위해 B라는 기술을 이용하기로 함. ### 피드백 - 결정에 대한 결과 (성공 또는 실패) - ex) 해당 기술을 이용해본 결과 버그가 발생 / 잘 동작 ## 그렇다면 TDD를 하면 좋은 상황은? ### TDD를 도입하면 좋을 상황 - 불확실성이 높은 개발 - 처음 시도해보는 주제/기능/기술 (내부적 불확실성) - 요구 조건이 변경될 여지가 있는 프로젝트 (외부적 불확실성) - 코드의 변화가 잦은 개발 - 리팩토링이 자주 발생하는 코드 (개발 중의 변화) - 유지보수가 이루어져야하는 코드 (개발 후의 변화) #### 특히 타인이 자신의 코드를 유지보수해야 하는 일이 생기는 경우 TDD가 큰 효과를 보인다. 고친 코드가 정상적으로 동작하는지 쉽게 확인할 수 있기 때문 ## Reference https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html