TDD 개념
TDD는 애플리케이션의 작은 기능에 대한 테스트를 설계하고 개발하는 것부터 시작합니다.
소프트웨어가 완전히 개발되기전에 모든 테스트 케이스에 대해 반복적으로 테스트하여, 테스트가 주가 되어 개발을 진행하는 것이다.
기존 테스트와 차이점은 소스코드가 확신할 수 있는 기준을 만들 수 있습니다.
TDD Red-Green-Refactor 개발 주기
- RED : 실패하는 테스트 코드 작성.(에러 처리 확인)
- GREEN : 테스트 코드를 성공 시키기 위한 실제 코드를 작성.
- YELLOW : 중복 코드 제거, 일반화 등의 리펙토링을 수행합니다.
실패하는 테스트 코드를 작성할 때까지 실제코드를 작성하지 않는다.
컴파일은 실패하지 않으면서, 실행이 실패하는 정도로만 단위 테스트를 작성한다.
실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성해야합니다.(오버 엔지니어링 방지)
TDD 테스트 수행 방법.
- 테스트 추가
- 테스트를 실행하고 새로운 테스트가 실패하는지 확인.
- 코드 작성
- 테스트 실행 및 코드 리펙토링.
- 반복.
TDD 장점
- 버그에 조기 알림, 버그에 대해 신속한 피드백
- 코드가 명확해지고 이해하기 쉬어진다.
- 미리 테스트의 기준을 정할수 있어, 필요 이상의 코드 리펙토링 시간을 줄일 수 있다.
TDD 단점
- 전체 기능 테스트가 필요한 상황에서 충분한 테스트를 수행하지 못한다.
- 기존 테스트에 비하여 테스트 코드를 작성해야 되기때문에 시간이 더 걸린다.
- 테스트 코드 작성에 대해 러닝 커브가 있다.
References
https://www.guru99.com/test-driven-development.html
https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html
https://en.wikipedia.org/wiki/Test-driven_devel∑opment>
https://wooaoe.tistory.com/33