TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 함.
반복 테스트를 이용한 소프트웨어 개발 방법론으로 작은 단위의 테스트 코드를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현함.
짧은 개발 주기의 반복에 의존하는 개발 방법론이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시함.
보통의 개발 방식은 '요구사항분석-설계-개발-테스트-배포'의 개발주기를 갖음.
이러한 방식은 개발속도를 늦추는 잠재적인 요소가 존재하는데,
위와같은 이유로 재설계를 반복하여 점진적으로 완성되는 단계를 거치게 됨.
재설계로 인해 개발자는 코드를 삽입, 수정, 삭제하는 과정에서 불필요한 코드가 남거나 중복될 가능성이 큼.
결론적으로 이러한 코드들은 재사용과 관리자 어려워서 유지보수를 어렵게 만듦.
작은 기능 수정에도 모든 부분을 테스트하여야 하기 때문에 자체 버그검출능력이 떨어지게 됨.
앞서 말했듯 TDD개발방식은 먼저 테스트 코드를 작성한 뒤에 실제 코드를 작성함.
설계 단계에서 무엇을 테스트해야 할 지 미리 정의해야만 하므로 테스트 코드를 작성하는 도중 발생하는 예외사항을 테스트 케이스에 추가하면서 설계를 개선할 수 있음.
이후 테스트 코드를 통과한 코드만을 실제 코드로 작성함.
이러한 반복적인 단계가 진행되면서 코드의 버그가 줄어들고 소스코드가 간결해짐.