TDD 란 Test Driven Development 의 약자로서
'테스트 주도 개발' 이라고 하며 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는방식을 말한다
보통의 개발 방식은
요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포
하지만 이럴경우 잠재적인 위험이 존재한다
1. 클라이언트의 요구사항이 바뀔수 있다
2. 처음부터 완벽한 설계는 어렵다
3. 버그 검출 및 능력의 저하고 코드의 품질이 떨어질수 있다
4. 테스트 코드 작성의 어려움 및 비용의 증가
TDD개발방식
테스트 코드를 작성한 뒤 실제 코드를 작성한다
TDD 개발방식은 테스트코드를 작성한 뒤 실제코드를 작성한다 때문에 테스트가 통과된 코드만을 실제 코드로 작성하게 되므로 코드의 버그가 줄고 재사용성을 높힐 수 있다
1. 재설계 시간 단축
테스트 코드를 먼저 작성하기 때문에 개발자가 무엇을 해야하는지 분명히 정의하고 개발하게 된다 따라서 개발 진행 중 설계가 변경되는 일을 방지 가능하며 시간의 단축도 가능하게된다.
2. 디버깅 시간 단축
만약 데이터가 잘못 나왔을경우 UI 문제인지 DB문제인지 전부 테스트를 할 필요없이 구축되어있는 테스팅 환경을 통해서
유닛테스팅으로 특정 버그를 빠르게 찾아낼 수 있다.
TDD 개발 방식의 단점
1. 생산성의 저하
TDD 주도 개발방식의 경우 반드시 테스트 후 실제 코드를 작성하게 되므로 일반적인 개발방식에 비해 10~30% 가량 시간이 늘어나게된다
(SI 프로젝트의 경우 품질 보다 납기일이 중요하기때문에 TDD 방식을 잘 사용하지 않는다)