TDD = TFD(Test-First-Development) + Refactoring
실제 코드를 작성하기 전 테스트 코드를 먼저 작성하여 개발하는 SW개발 방법론
자체 버그 검출 능력 저하
소스코드의 품질 저하
자체 테스트 비용 증가
디자인(설계)단계
테스트 코드 작성
코드 작성 단계
반복적인 단계가 진행되면서 자연스럽게 코드의 버그는 줄어들고, 소스코드는 간결해짐. 또한, 테스트 케이스 작성으로 인해 자연스럽게 설계가 개선됨으로 재설계 시간이 절감됨
1) 하나의 작은 단위의 테스트 코드를 작성한다.
2) 테스트를 한다.
3) 테스트가 통과될 때까지 테스트 코드를 수정한다.
4) 테스트가 통과된 테스트 코드는 리펙토링을 한다.
5) 리펙토링한 코드를 테스트한다.
6) 리펙토링한 코드가 통과 될 때까지 코드를 수정한다.
7) 테스트가 통과되면 테스트 케이스에 있는 다음 테스트 코드를 작성한다.
단위테스트를 하는 이유는 TDD가 지향하는 Clean code that works을 실현하기 위한 일종의 방법임