2026-03-28

TDD (Test Driven Development)

TDD란

TDD는 테스트 코드를 먼저 작성한 뒤, 그 테스트를 통과시키는 방향으로 실제 코드를 구현하는 개발 방식이다.

기능 구현보다 테스트 작성이 먼저인 개발 방법

TDD의 핵심 흐름

TDD는 보통 Red → Green → Refactor 사이클로 설명한다.

  • Red 실패하는 테스트를 먼저 작성한다.
    • 아직 기능을 구현하지 않았기 때문에 테스트는 실패한다.
  • Green 테스트를 통과할 수 있을 정도의 최소한의 코드를 작성한다.
    • 일단 동작하게 만드는 것이 목적이다.
  • Refactor 테스트가 통과하는 상태를 유지하면서 코드를 개선한다.
    • 중복 제거
    • 구조 개선
    • 가독성 향상

왜 사용하는가

  • 요구사항을 더 명확하게 정리할 수 있다 테스트를 먼저 쓰다 보면 “이 기능이 어떤 입력을 받고 어떤 결과를 내야 하는지”를 먼저 생각하게 된다.
  • 안정적으로 리팩토링할 수 있다 테스트가 있으면 코드를 수정해도 기존 기능이 깨졌는지 빠르게 확인할 수 있다.
  • 작은 단위로 개발하게 된다 한 번에 큰 기능을 만들기보다 작은 단위로 나눠 구현하게 되어 코드가 더 명확해진다.
  • 버그를 조기에 발견할 수 있다 구현 후가 아니라 구현 과정에서 바로 검증할 수 있다.

TDD와 일반 개발 방식 차이

  • 일반적인 개발 방식
    1. 기능 구현
    2. 테스트 작성
    3. 수정
  • TDD 방식
    1. 테스트 작성
    2. 기능 구현
    3. 리팩토링

⇒ 검증 기준을 먼저 만들고 구현하는 방식이라는 점이 다르다.

TDD의 장점

  • 요구사항을 코드로 명확히 표현 가능
  • 코드 품질 향상
  • 리팩토링 안정성 확보
  • 회귀 버그 방지
  • 테스트 가능한 구조를 유도

TDD의 단점

  • 초기 개발 속도가 느리게 느껴질 수 있음
  • 테스트 코드 작성 비용이 듦
  • UI처럼 자주 바뀌는 영역에는 적용이 까다로울 수 있음
  • 테스트 자체를 잘 설계해야 효과가 있음

프론트엔드에서의 TDD

  • 유틸 함수
  • 커스텀 훅
  • 상태 관리 로직
  • 폼 유효성 검사
  • 컴포넌트 동작 테스트

예시:

  • 버튼 클릭 시 특정 함수가 호출되는지
  • 입력값 검증이 올바르게 되는지
  • 상태 변경이 예상대로 동작하는지

TDD와 테스트의 차이

  • 테스트 코드 작성 = 테스트를 만드는 것
  • TDD = 테스트를 먼저 작성하고, 그 테스트를 기준으로 개발하는 방식

⇒ 테스트를 작성한다고 해서 모두 TDD인 것은 아니다.

results matching ""

    No results matching ""