테스트 주도 개발 ( TDD )

song yuheon·2023년 9월 20일
0

Spring

목록 보기
75/93
post-thumbnail

TDD란?


TDD는 소프트웨어 개발 방법론 중 하나이다.
테스트가 개발의 중심을 차지하는 방식이다.
TDD 방법론은 테스트 케이스 작성에 중점을 둔 개발 방식으로 개발자가 더 안정적이고 유지보수가 쉬운 코드를 작성하도록 도와준다.


1. TDD의 3단계 (Red-Green-Refactor)



  1. Red (빨간색 단계)

    • 테스트 작성
      개발자는 먼저 실패하는 테스트 케이스를 작성한다.
      이 테스트 케이스는 아직 구현되지 않은 기능을 테스트하므로 실행 시 실패해야 한다.
  2. Green (초록색 단계)

    • 코드 작성
      개발자는 테스트 케이스를 통과하기에 충분한 코드를 작성한다.
      여기서 목표는 테스트 케이스를 빠르게 통과시키는 것이다.
  3. Refactor (리팩토링 단계)

    • 코드 개선
      개발자는 코드를 개선하여 더 좋은 설계를 얻는다.
      중요한 점은 리팩토링 중에도 테스트 케이스를 계속 통과해야 한다는 것이다.

2. TDD의 이점


  1. 코드 품질 향상

    • TDD 방식은 코드 품질을 향상시키며, 버그 발생 가능성을 줄인다.
  2. 리팩토링 용이

    • 테스트 케이스가 있으면 리팩토링이 쉬워지며 변경에 따른 부작용을 빠르게 발견할 수 있다.
  3. 간결한 코드

    • TDD는 필요한 만큼의 코드만 작성하도록 유도한다.
      결과적으로 코드베이스가 더 간결하고 관리하기 쉬워진다.
  4. 장기적인 관점에서 개발 비용 감소

    • TDD는 장기 서비스에서의 비용을 현저히 줄일 수 있다.

3. TDD의 단점


  1. 시작이 어려움

    • TDD를 처음 시작할 때는 시간이 오래 걸릴 수 있으며 테스트 케이스 작성에 익숙해지는 데 시간이 필요하다.
  2. 학습 곡선

    • TDD는 학습 곡선이 있다.
      특히 테스팅 프레임워크와 관련 도구를 익히는 데 시간이 필요할 수 있다.
  3. 복잡한 테스트 케이스

    • 일부 기능은 테스트 케이스 작성이 어려울 수 있다.
      특히 외부 시스템과의 상호 작용이 많은 경우 테스트 케이스 작성이 복잡해질 수 있다.
  4. 초기 개발 비용

    • 초기 개발 비용이 비교적 높을 수 있다.

4. TDD 적용


  1. 단위 테스트

    • TDD는 주로 단위 테스트 작성에서 시작한다.
      단위 테스트는 소프트웨어의 가장 작은 단위를 테스트한다.
  2. 테스트 케이스 작성

    • 개발자는 기능 명세를 바탕으로 테스트 케이스를 작성한다.
  3. 테스트 주도 개발

    • 개발자는 테스트를 먼저 작성하고 그 테스트를 통과하는 코드를 작성함으로써 기능을 개발한다.

profile
backend_Devloper

0개의 댓글