TDD (Test Driven Development)
TDD란 "테스트 주도 개발"이라는 소프트웨어 개발 방법론 중 하나이다. 스프링을 공부하는 사람이라면 테스트 코드에 대해서 한번쯤 들어봤을 것이다. 개발 후 테스트가 아니라, 테스트코드를 먼저 작성하고 이후에 개발하는 스타일이다.
(※ 다만 실제 회사에 적용하는 것은 회사마다 천차만별이며, 주위에 물어보아도 효율적이지 못하다는 이유로 도입하지 않았다는 의견이 많았다.)
TDD를 이용한 개발
- 테스트 케이스 작성 : 기능 구현 없이 테스트 코드를 작성한다. 이때, 최대한 빨리 테스트를 통과하기 위해 실패하는 테스트 코드를 작성할 수 있다.
- 통과하는 케이스 작성 : 테스트 코드 통과를 위한 실제 기능을 구현한다.
- 리팩토링 : 리팩토링을 통해 성능이나 재사용성, 가독성 등을 챙기도록 코드를 개선한다.
- 2번 3번 과정을 반복한다.
TDD의 장점 (+)
1. 디버깅 시간 단축
어쩌면 TDD의 가장 큰 장점일 것이다. 유닛 테스트를 진행하므로 어디서 에러가 났는지 바로 찾아볼 수 있다.
2. 빠른 피드백
기능단위로 테스트하므로 더 큰 단위의 작업을 하기 전에 미리 에러를 발견할 수 있다.
3. 유지보수 용이
단위 테스트 기반의 테스트 코드이기 때문에 추후 에러상황에서 모듈 테스트를 해보면 쉽게 에러를 찾을 수 있다.
TDD의 단점 (-)
1. 생산성 저하
TDD의 가장 큰 단점이라고 할 수 있다. 개발의 절대적인 시간 자체가 늘어나기 때문에 납기일을 맞춰야 하는 많은 상황에서 쉽게 채택되지 못한다.
2. 익숙하지 않다
TDD에 익숙하지 않은 사람들에게 교육하고, 환경을 만드는 것에 또 비용이 든다. 오래도록 자신의 스타일을 고수해온 개발자들을 TDD에 맞게 바꾸는 것은 어렵다.