테스트 주도 개발(Test-driven development TDD)[1]은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다. 이 기법을 개발했거나 '재발견' 한 것으로 인정되는 Kent Beck은 2003년에 TDD가 단순한 설계를 장려하고 자신감을 불어넣어준다고 말하였다.
SUT ( System Under Test )
DOC ( Depended On Component ) - 우리가 테스트하려는 코드가 의존하는 코드
DOC 준비 비용이 큰경우
DOC가 SUT에 제공하는 계약(인터페이스) 을 준수하는 대역 코드를 사용
대역 코드가 계약을 DOC와 동일하게 준수할 것이라고 가정 (assume)