1. TDD (Test-Driven Development) 테스트 주도 개발의 의미
테스트가 개발을 주도해 나가는 것
2. TDD의 흐름
1) 기존 개발의 흐름(AS-IS)
설계 → 개발 → 테스트 (→ 설계 수정)
2) TDD의 흐름(TO-BE)
설계 → 테스트 (→설계 수정) → 개발
- 기능을 검증하는 테스트를 먼저 작성
- 작성한 테스트를 통과하지 못하면 테스트를 통과할 만큼만 코드 작성
- 테스트 통과 후 개선할 코드가 있으면 리팩토링
- 리팩토링 후 다시 테스트를 실행하여 기존 기능이 잘 되고 있는지 확인 필수
-> 위 과정을 반복하여 점진적으로 기능을 완성해 나가는 것이 TDD의 흐름
3) 레드(Red)-그린(Green)-리팩터(Refactor)
- TDD 사이클을 레드-그린-리팩터로 부르기도 함
- 레드: 실패하는 테스트, 테스트 코드가 실패하면 빨간색을 이용해서 실패한 테스트를 보여주는 데서 비롯됨
- 그린: 성공한 테스트, 코드를 구현해서 실패하는 테스트를 통과시키는 것
- 리팩터: 리팩토링 과정
3. TDD의 장점
1) 유지보수 비용을 낮춤
개발 과정에서 지속적으로 코드를 정리 하므로 코드 품질이 급격히 나빠지지 않게 막아줌 -> 향후 유지보수 비용을 낮추는데 기여
2) 코드 수정에 대한 피드백이 빠름
새로운 코드를 추가하거나 기존 코드를 수정하면 테스트를 돌려서 해당 코드가 올바른지 바로 확인하여 잘못된 코드가 배포되는 것을 방지
👩🏻💻 기억할 것
1) 테스트 코드 작성이 가장 먼저
2) 테스트 코드가 통과 될 만큼만 코드를 작성(테스트 코드에 없는 코드를 미리 작성하지 않음 = 미리 구현하지 않기)
3) 리팩토링 전/후 꼭 테스트 실행 해볼 것
4) 테스트 코드 자체도 리팩토링 대상임을 잊지 말 것
참고: 최범균의 테스트 주도 개발 시작하기(TDD)
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing
https://docs.spring.io/spring-framework/docs/5.3.23/reference/html/testing.html#testing
'Spring > Test' 카테고리의 다른 글
📝 테스트 코드 작성의 장/단점과 테스트 범위에 따른 분류 (0) | 2022.11.18 |
---|---|
테스트 코드와 제이유닛(JUnit) (0) | 2022.11.16 |
Mock object를 이용한 단위 테스트 (0) | 2022.11.15 |
Edge 케이스를 고려한 단위 테스트 (0) | 2022.11.15 |
유닛 / 통합 / 기능 테스트 (0) | 2022.11.15 |