정의
테스트케이스를 작성 후 실제 코드를 개발하여 리팩토링 하는 절차를 따른다.
매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.
우리는 보통 개바할 때, 설계(디자인)를 한 이후 코드 개발과 테스트 과정을 순서대로 거치게 된다.
하지만 TDD는 기존 방법과는 다르게, 테스트 케이스를 먼저 작성한 이후에 실제 코드를 개발후 리팩토링 절차를 밟는다.
이러한 반복적인 테스트와 수정을 통해 고품질의 소프트웨어를 만들어 낼 수 있다.
시스템 결합 방지 : 작업과 동시에 테스트를 진행하면서 실시간으로 오류 파악이 가능함
짧은 개발 주기를 통해 고객의 요구사항을 빠르게 수용 가능
피드백이 가능하고 진행 사항 파악이 쉽다.
자동화 도구를 이용한 TDD 테스트케이스를 단위 테스트로 사용이 가능하다.
ex) JAVA의 JUnit, C&C++의 CppUnit
개발자가 기대하는 앱의 동작에 관한 문서를 테스트가 제공해준다.
기존 개발 프로세스에 테스트 설계가 추가되므로 생산 비용 증가
테스트의 방향서, 프로젝트 성격에 따른 테스트 프레임워크 선택 등 추가로 고려할 부분의 증가
TDD를 활용하면, 처음 시작하는 단계에서 테스트케이스를 설계하기 위한 초기 비용이 더 들게 된다.
하지만 개발과정에 있어서 '초기비용' 보다 '유지 보수 비용'이 더 클 수 있다는 것을 명심하자.
또한 안전성이 필요한 소프트웨어 프로젝트에서는 개발 초기 단계부터 확실하게 테스트를 다져놓고 가는 것이 중요하다.