Test Driven Development의 약자
- 테스트 주도 개발을 의미함
- 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현함
- 코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증할 수 있음
- 리팩토링시 안정성을 확보할 수 있음
- 개발 및 테스팅 시간과 비용을 절감할 수 있음
- 이러한 특징을 갖추려면 좋은 테스트를 작성해야 함
좋은 테스트(FIRST)
- Fast
- Independent
- Repeatable
- Self-Validating
- Timely
빠르게 동작하며 각각의 테스트는 독립적이고 어떤 환경에서도 반복 가능하며 자체 검증이 가능하고 테스트하려는 실제 코드를 구현하기 직전에 구현해야 함
테스트 코드를 먼저 작성해야 하는 이유
- 깔끔한 코드를 작성할 수 있으며 개발 후 테스트 코드를 작성하는 것은 매우 귀찮기 때문