TDD가 무엇인지 알아보기 전에 익스트림 프로그래밍에 대해 간략하게 알아보자. (나무 위키 체고)
eXtream Programming (XP)
익스트림 프로그래밍(eXtream Programming, XP)이란 애자일 프로그래밍의 대표적인 개발방법론 중 하나로, 고객이 원하는 소프트웨어를 빠른 시간 내에 프로토타입의 형태로 전달하고 이를 통해 고객이 원하는 소프트웨어를 이끌어내며, 수시로 발생하는 요구사항에 대처하는 것을 목표로 한다.
다른 애자일 방법론과 구별되는 XP의 특징은 테스팅이다. 구현과 테스트를 하나의 쌍으로 취급하여, 실제 구현과 동시에 테스트 코드를 작성하도록 한다.
TDD (Test Driven Development)
테스트 주도 개발(Test Driven Development, TDD)이란 위에서 설명한 익스트림 프로그래밍 개발 방법론의 실천 방안 중 하나이다. 개발이 이루어진 다음 그것이 계획대로 잘 완성되었는지 테스트 케이스를 작성하고 테스트하는 타 방식과는 달리, 테스트 케이스를 먼저 작성한 다음 테스트 케이스에 맞추어 실제 개발 단계로 이행하는 개발 방법론을 말한다. 묵시적으로 잠재된 상황을 가정하지 않고 테스트 케이스만을 완벽하게 수행하는 것을 목표로 하기 때문에 매우 빠르게 목표를 완료할 수 있다.
TDD 자체가 하나의 테스트가 완전하지 않다는 것을 가정하고 있기 때문에 1차 테스트를 완료한 다음에 새로운 테스트 케이스를 확장해서 작성하고 그것을 통과하기 위한 개발에 들어가는 과정을 끊임없이 반복하여 큰 규모의 프로젝트를 완성해가는 것이다.
장점
1. 유지 보수가 쉽다.
2. 프로그래밍 시간이 단축된다.