본문 바로가기
개발 방법론

TDD

by 달리는 꿈나무 2023. 4. 30.

TDD란?

테스트 주도 개발 방식

소프트웨어 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법

테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식

TDD의 장점

  • 깔끔한 코드 작성 가능
  • 장기적인 개발 비용 절감
  • 개발이 끝나고 테스트 코드 작성하는 것은 비효율 적

TDD의 궁극적인 목표는 작동하는 깔끔한 코드를 작성하는 것

리펙토링 과정을 통해 중복된 코드들을 제거하고 복잡한 코드들을 깔끔하게 작성

TDD 순서

  1. 실패하는 작은 단위 테스트를 작성
  2. 테스트를 통과하기 위한 프로덕션 코드 작성
  3. 다음의 테스트 코드 작성, 실패가 없을 경우에 성공 테스트 작성
  4. 새로운 테스트 통과를 위해 프로덕션 코드 추가 및 수정
  5. 1 ~ 4 단계를 반복하면서 실패/성공의 모든 테스트 케이스 작성
  6. 개발된 코드들에 대해 모든 중복 제거 및 리펙터링

Spring을 통한 TDD 방법

  1. 레포지토리 → 서비스 → 컨트롤러 순서로 개발 진행
  2. 레포지토리 계층의 테스트는 h2와 같은 인메모리 디비 기반의 통합 테스트
  3. 서비스 계층의 테스트는 모키토를 사용해 레포지토리 계층을 Mock하여 진행
  4. 컨트롤러 계층의 테스트는 SpringTest의 MockMvc 사용