TDD란 ?
- "테스트 주도 개발"의 의미이다. 작은 단위테스트(Unit Test)를 먼저 작성하고, 이 테스트를 통과하는 코드를 추가적으로 계속해서 구현하는 개발방법을 이야기한다.
- 간단히 말해서, 테스트 코드를 먼저 작성하고, 그 테스트 케이스를 통과하도록 개발을 계속해서 진행하는 것이다.
TDD 개발 루틴
![](https://velog.velcdn.com/images/shinjaewon99/post/e497edab-d69a-44c9-b22d-1eb9b2579fbf/image.PNG)
- Write Failing Test
- Make Test Pass
- 테스트 케이스를 통과할 수 있는 실제 코드를 작성한다
- Refcator
- 중복 코드 제거, 일반화, 최적화 등의 리펙터링을 수행한다.
이것을 계속해서 반복적으로 수행하는 것이 TDD의 개발 루틴이다.
TDD 개발의 장점
- 객체 지향적인 코드 구현
- 디버깅 시간의 단축
- 단위 테스트를 이용하기때문에 복잡한 디버깅을 할 확률이 줄어든다.
- 재설계 시간의 단축
- 테스트 코드를 먼저 작성함으로 개발 목표를 확실하게 알수있다.
- 추가 구현의 용이함
TDD의 단점
- 개발 속도가 느리다. (생산성이 낮다.)
- 단위테스트를 지속적으로 작성하기 때문에, 개발속도가 늦다.
- 처음부터 잘 적용하기 힘들다