Test Driven Development의 약자로, 테스트 중심의 개발이다.
테스트 주도 개발은 애플리케이션의 가장 작은 단위의 테스트 케이스를 설계하고 개발하는 방법이다.
간단히 설명하자면, 각 기능에 대한 실패한 코드를 작성하고 그 후 테스트를 성공시키기 위한 코드를 작성하는 방법을 말한다.
이는 개발자들에게 테스트가 실패한 경우에만 새로운 코드를 쓰도록 지시하므로, 코드의 중복을 피할 수 있도록 도와주며 코드를 작성하는 시간과 코드의 길이를 줄여준다.
TDD는 응용 프로그램의 개발 전 자동 테스트를 개발하고 실행 중인 자동화 테스트를 수행하는 과정이다. 그래서 Test-First Development로 불린다.
짧은 개발 주기의 반복에 의존하는 개발 프로세스이며,
애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다.
단, 다음과 같은 오해는 하지 말자!
TDD 접근법은 '테스트'나 '디자인'에 관한 것이 아니다.
'테스트의 일부를 작성한 다음 테스트를 통과하는 시스템을 구축한다'는 것을 의미하지 않는다.
'테스트를 많이 해라'는 것을 의미하지는 않는다.

1. 테스트 케이스를 작성한다.
2, 모든 테스트를 실행하고 실패하는지 확인한다.
3. 코드를 작성한다.
4. 테스트 및 리팩토링을 실행한다.
5. 반복한다.
중요한 것은 실패하는 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야 하는 것이다.
이를 통해, 실제 코드에 대해 기대되는 바를 명확하게 정의함으로써 불필요한 설계를 피할 수 있고, 정확한 요구 사항에 집중할 수 있다.