위키에는 아래와 같이 TDD를 정의하고 있다.
테스트 주도 개발(Test-driven development TDD)은
매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.
개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다.
말만 들으면 테스트코드를 짜놓고 코드를 짜맞추는거 같아서
이상하게 들릴 수 있으나,
현실적으로 개발을 하다보면 시간이 부족하여 테스트를 미처 끝내지 못하고
배포하는 경우가 많다고한다.
이에 테스트 코드를 미리 짜놓고 개발하는 것이 현실적으로 안전하다고도
볼 수 있다.
장점
- 테스트 코드를 짜다보면 설계를 구체적으로 할 수 있다.
- 배포 전 오류 검사가 용이하며, 디버깅 시간을 단축시킨다.
- 코드를 읽을 때, 테스트 코드에는 모든 기능이 모여있어,
해당 코드를 읽고 서비스를 쉽게 이해할 수 있다.
단점
- 테스트 코드 작성에 너무 많은 시간을 소모할 수 있다.
- 서비스 개발 전에 테스트 코드를 짜기 때문에, 테스트 코드가 완벽하지 않을 수 있다.
회사를 들어가면 내규에 맞게 개발을 따라가게 될 것이지만,
개인적으로는 서비스의 구체성이 자주 변하는 스타트업의 경우에는
TDD개발이 부적합하다고 느껴진다.