TDD — 테스트가 곧 설계
Entity (인물·조직)lectureverified2026-05-09

TDD — 테스트가 곧 설계

#vch#lecture-intro#C-se-tool#se-g4

TDD — 테스트가 곧 설계

1. 요약

TDD (Test-Driven Development) 는 1990년대 후반 Kent Beck 이 XP 의 핵심 관행으로 재발견 했고, 2003년 Test-Driven Development: By Example 책으로 정식 방법론이 됐다. Red → Green → Refactor 의 짧은 사이클이 핵심. Beck 자신이 "TDD 는 testing 이 아니라 design 도구" 라고 강조했다.

2. 배경 (이전 도구의 한계)

전통적 SW 개발은 코드 작성 → 나중에 테스트 작성 → 버그 발견 → 수정비용 폭발 패턴. 테스트는 검증 으로만 보였다. Beck 의 통찰: 테스트를 먼저 쓰면 → 인터페이스가 명확해진다 → 즉 테스트는 설계 도구 다.

3. 핵심 개념·표기법

Red-Green-Refactor 사이클 (수 분 ~ 수십 분):

단계의미
Red실패하는 작은 테스트 작성 (컴파일 안 돼도 됨)
Green테스트 통과시키는 최소 코드 작성 (sin 을 저질러도 OK)
Refactor새 코드 + 기존 코드 모두 정리

3 법칙 (Robert Martin):

  1. 실패하는 단위 테스트 없이는 production 코드 ❌
  2. 컴파일·실패하기에 충분한 만큼만 테스트 작성
  3. 실패하는 테스트를 통과시키는 만큼만 production 작성

4. 언어·OS 매핑 (★ 강의 핵심)

시대언어·도구TDD 활용
1998~Java + JUnit, Smalltalk + SUnitBeck 가 만든 xUnit 시리즈
2000sRuby, Python, JavaScriptRSpec, pytest, Mocha
2010sGo, Rust, Kotlin언어별 standard test runner
2020sAI 시대★ LLM 이 TDD를 자동 적용 (Claude Code 의 test_driven 기본 워크플로우)

★ Anthropic 의 Claude Code 는 TDD 비협상 원칙을 박았다 — 30분 이상 작업이면 무조건 테스트 먼저. 이는 본 강의 Plan-First 방법론의 핵심.

5. 현대까지의 영향

  • xUnit 패밀리 — JUnit, NUnit, pytest, RSpec, Mocha 등 거의 모든 언어
  • Mock 객체 (Tim Mackinnon 2000) — TDD 의 보조 도구
  • BDD (2003) — TDD 의 사용자 관점 진화
  • Property-based Testing (QuickCheck 1999, Hypothesis) — 무작위 입력 TDD
  • Mutation Testing — 테스트 강도 검증
  • AI 자동 테스트 생성 — Claude Code, Cursor 의 test_first 모드

★ TDD 의 Red-Green-Refactor 리듬 이 LLM 시대에는 spec 작성 → LLM 코드 생성 → 검증 으로 진화했다. 짧은 피드백 사이클 이라는 본질은 영원.

6. 주요 인물·사건

연도사건
1989Beck, Smalltalk 에서 Test First 실험 (자전거 부품)
1996Chrysler C3 — XP 의 일부로 TDD 정착
1999Beck + Erich Gamma, JUnit 1.0 (Java)
2003Beck, Test-Driven Development: By Example
2008Robert Martin, Clean Code — TDD 3 법칙 정식화
2014DHH (David Heinemeier Hansson), TDD is Dead 논쟁 — 그래도 TDD 살아남음
2024Anthropic Claude Code — TDD 자동화

7. 강의 활용

"테스트는 검증이 아니라 설계 도구" — Beck 의 25년 된 통찰이 LLM 시대에 부활. AI 에게 코드를 시키기 전에 테스트를 먼저 쓰면, AI 가 명세에 맞는 코드 를 만든다 — 이것이 본 강의 Plan-First × TDD 비협상 의 핵심.

출처

그룹 시리즈

synthesis/group-se_g4 (시대 그룹 종합 카드)