Test Driven Development의 약자로 테스트 주도 개발 이라고 한다.
반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다.
RED : 문제를 정의하는 것에 집중한다.
GREEN : 그 문제를 해결하는데 집중한다.
Refactor : 작성한 코드를 Clean Up 하는데 집중한다.
TDD는 어떤 상황에서 해야할까
1. 처음해보는 프로그램 주제
TDD장점
보다 튼튼한 객체 지향적인 코드 생산
재설계 시간의 단축
디버깅 시간의 단축
테스트 문서의 대체 가능
추가 구현의 용이함
TDD 단점
생산성의 저하