요즘 소프트웨어 개발 방법론 중에 많이 쓰고 있다는 TDD에 대해서 궁금한 것도 있었고, 도입하고자 하는 근거를 찾고 싶었다. 그래서 켄트백의 테스트 주도 개발방법론 책과 여러 블로그 글들을 참고해보면서 간략하게 정리해보고자 한다.
소프트웨어 개발 방법론 중에 하나이며, 테스트 → 개발 → 리팩토링 → 테스트 와 같은 짧은 개발 사이클은 반복해나는 방식을 말한다. 기존에는 개발후 테스트 코드를 작성하는 방식이지만, 그 반대로 테스트코드를 먼저 작성한 뒤에 코드를 개발하는 방식이다.
위와 같은 방법들의 사이클을 계속 돌려가면서 이전 단계보다 더 품질 높은 소프트웨어가 탄생하는 것이다.
테스트 주도개발은 red, green, refactoring 단계로 수행되며, 코드 품질과 장기적으로 새로운 기능들을 확장 및 변경하는 프로젝트일수록 큰 진가를 발휘한다. 그리고 반복적인 리팩토링으로 빠른피드백을 제공한다. 하지만 무조건 사용해야 하는 부분은 아니라고 생각한다. 비교적으로 코드품질이 별로 중요하지 않거나 시간이 촉박할 때는 오히려 배보다 배꼽이 더 큰 것 같다. 새로운 방법들을 알아가는 것도 중요하지만 적합한 조건들을 미리 생각해보면서 시기에 맞게 적용을 해야 한다고 생각한다.