보통의 개발 방식은 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포 형태의 개발 주기를 갖는데 이러한 방식은 소프트웨어 개발을 느리게 하는 잠재적 위험이 존재한다. 소비자의 요구사항이 명확하지 않을 수도 있고 소스코드의 품질이 저하될 수 있기 때문이다. 추가로 테스트 비용의 증가라는 위험성도 가지고 있다. 이러한 점 때문에 부분적으로 기능 수정을 하게 되는데 기능 수정을 함으로써 모든 부분을 테스트해야 하므로 전체적인 버그를 검출하기 어려워지는 문제가 발생한다. TDD(Test Driven Development) 기존 설계 방법과는 다르게, 테스트케이스를 먼저 작성한 후 실제 코드를 개발하는 리팩토링 절차를 밟아 실행하는 것 반복 테스트를 이용한 소프트웨어 방법론, 작은 단위의 테스트 케이스를..