2026-03-28
TDD (Test Driven Development)
TDD란
TDD는 테스트 코드를 먼저 작성한 뒤, 그 테스트를 통과시키는 방향으로 실제 코드를 구현하는 개발 방식이다.
기능 구현보다 테스트 작성이 먼저인 개발 방법
TDD의 핵심 흐름
TDD는 보통 Red → Green → Refactor 사이클로 설명한다.
- Red
실패하는 테스트를 먼저 작성한다.
- 아직 기능을 구현하지 않았기 때문에 테스트는 실패한다.
- Green
테스트를 통과할 수 있을 정도의 최소한의 코드를 작성한다.
- 일단 동작하게 만드는 것이 목적이다.
- Refactor
테스트가 통과하는 상태를 유지하면서 코드를 개선한다.
- 중복 제거
- 구조 개선
- 가독성 향상
왜 사용하는가
- 요구사항을 더 명확하게 정리할 수 있다 테스트를 먼저 쓰다 보면 “이 기능이 어떤 입력을 받고 어떤 결과를 내야 하는지”를 먼저 생각하게 된다.
- 안정적으로 리팩토링할 수 있다 테스트가 있으면 코드를 수정해도 기존 기능이 깨졌는지 빠르게 확인할 수 있다.
- 작은 단위로 개발하게 된다 한 번에 큰 기능을 만들기보다 작은 단위로 나눠 구현하게 되어 코드가 더 명확해진다.
- 버그를 조기에 발견할 수 있다 구현 후가 아니라 구현 과정에서 바로 검증할 수 있다.
TDD와 일반 개발 방식 차이
- 일반적인 개발 방식
- 기능 구현
- 테스트 작성
- 수정
- TDD 방식
- 테스트 작성
- 기능 구현
- 리팩토링
⇒ 검증 기준을 먼저 만들고 구현하는 방식이라는 점이 다르다.
TDD의 장점
- 요구사항을 코드로 명확히 표현 가능
- 코드 품질 향상
- 리팩토링 안정성 확보
- 회귀 버그 방지
- 테스트 가능한 구조를 유도
TDD의 단점
- 초기 개발 속도가 느리게 느껴질 수 있음
- 테스트 코드 작성 비용이 듦
- UI처럼 자주 바뀌는 영역에는 적용이 까다로울 수 있음
- 테스트 자체를 잘 설계해야 효과가 있음
프론트엔드에서의 TDD
- 유틸 함수
- 커스텀 훅
- 상태 관리 로직
- 폼 유효성 검사
- 컴포넌트 동작 테스트
예시:
- 버튼 클릭 시 특정 함수가 호출되는지
- 입력값 검증이 올바르게 되는지
- 상태 변경이 예상대로 동작하는지
TDD와 테스트의 차이
- 테스트 코드 작성 = 테스트를 만드는 것
- TDD = 테스트를 먼저 작성하고, 그 테스트를 기준으로 개발하는 방식
⇒ 테스트를 작성한다고 해서 모두 TDD인 것은 아니다.