개발 방법론
TDD
달리는 꿈나무
2023. 4. 30. 14:08
TDD란?
테스트 주도 개발 방식
소프트웨어 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법
테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식
TDD의 장점
- 깔끔한 코드 작성 가능
- 장기적인 개발 비용 절감
- 개발이 끝나고 테스트 코드 작성하는 것은 비효율 적
TDD의 궁극적인 목표는 작동하는 깔끔한 코드를 작성하는 것
리펙토링 과정을 통해 중복된 코드들을 제거하고 복잡한 코드들을 깔끔하게 작성
TDD 순서
- 실패하는 작은 단위 테스트를 작성
- 테스트를 통과하기 위한 프로덕션 코드 작성
- 다음의 테스트 코드 작성, 실패가 없을 경우에 성공 테스트 작성
- 새로운 테스트 통과를 위해 프로덕션 코드 추가 및 수정
- 1 ~ 4 단계를 반복하면서 실패/성공의 모든 테스트 케이스 작성
- 개발된 코드들에 대해 모든 중복 제거 및 리펙터링
Spring을 통한 TDD 방법
- 레포지토리 → 서비스 → 컨트롤러 순서로 개발 진행
- 레포지토리 계층의 테스트는 h2와 같은 인메모리 디비 기반의 통합 테스트
- 서비스 계층의 테스트는 모키토를 사용해 레포지토리 계층을 Mock하여 진행
- 컨트롤러 계층의 테스트는 SpringTest의 MockMvc 사용