7강

테스트 주도 개발(TDD)과 AI

3 조회 1

Red-Green-Refactor TDD 사이클을 Claude Code와 함께 실행 — 테스트 먼저 작성하고 AI가 통과하는 구현을 만드는 방법.

TDD와 AI — 테스트가 먼저, 구현은 나중

TDD(테스트 주도 개발)는 많은 개발자가 "좋은 방법론이지만 시간이 없다"는 이유로 미루는 방식입니다. Claude Code를 사용하면 TDD가 오히려 빨라집니다. 테스트 작성 → 실패 확인 → 구현 → 통과 확인 → 리팩터링의 사이클을 Claude가 대부분 자동으로 처리하기 때문입니다. 2024년 GitHub 연구에 따르면 AI 보조 TDD 방식의 개발자는 일반 AI 코딩 대비 버그 발생률이 40% 낮았습니다.

TDD Red-Green-Refactor 사이클

# Red: 실패하는 테스트 먼저
# Green: 통과하는 최소 구현
# Refactor: 품질 개선 (테스트는 여전히 통과)

Claude Code에 TDD를 맡기면 이 사이클이 자동화됩니다.

Claude Code TDD 실전 예시

새 유틸리티 함수 TDD

"formatCurrency(amount: number, currency: 'KRW' | 'USD' | 'JPY') 함수를
 TDD로 구현해줘.

 Red 단계:
 - __tests__/formatCurrency.test.ts 먼저 작성
 - 다음 케이스를 모두 포함할 것:
   formatCurrency(1234567, 'KRW')  → '₩1,234,567'
   formatCurrency(1234.56, 'USD')  → '$1,234.56'
   formatCurrency(1234, 'JPY')     → '¥1,234'
   formatCurrency(0, 'KRW')        → '₩0'
   formatCurrency(-500, 'USD')     → '-$500.00'
 - 테스트 실행 → 실패 확인 (함수 미존재로)

 Green 단계:
 - utils/formatCurrency.ts 최소 구현
 - Intl.NumberFormat 사용, TypeScript strict
 - 테스트 실행 → 5개 통과 확인

 Refactor 단계:
 - 중복 제거, 가독성 개선
 - 테스트 여전히 통과 확인"

기존 코드 테스트 추가 패턴

"app/actions/jobs.ts의 createJob 함수에 테스트를 추가해줘.

 먼저 함수 동작을 분석해서:
 1. 정상 케이스 (유효한 입력)
 2. 유효성 검사 실패 케이스
 3. DB 오류 케이스
 4. 권한 오류 케이스

 각 케이스별 테스트 작성 후 통과 확인.
 Supabase 클라이언트는 jest.mock으로 처리."

컴포넌트 TDD (React Testing Library)

"JobCard 컴포넌트를 TDD로 리팩터링해줘.

 테스트 케이스:
 - 공고 제목이 렌더링됨
 - 마감일이 지난 공고는 '마감' 배지가 표시됨
 - 마감일이 3일 미만이면 '마감임박' 배지
 - 클릭 시 href={/jobs/[id]} 링크로 이동
 - thumbnail_url 없을 때 기본 이미지 표시

 @testing-library/react 사용.
 기존 컴포넌트 동작은 바꾸지 말고 테스트만 추가 후
 실패하는 부분만 수정."

TDD로 버그 재발 방지

버그를 수정할 때 TDD 방식을 적용하면 같은 버그가 재발하지 않습니다.

"로그인 후 redirect가 간헐적으로 실패하는 버그가 있어.
 
 TDD 방식으로 수정해줘:
 1. 먼저 이 버그를 재현하는 테스트를 작성해줘
    (현재는 이 테스트가 실패해야 함)
 2. 버그 원인 분석
 3. 수정 코드 작성
 4. 테스트 통과 확인
 5. 회귀 테스트로 영구 추가"

이 방식의 장점은 "버그 수정 확인"과 "재발 방지"가 동시에 이루어진다는 점입니다.

테스트 커버리지 점검

"현재 테스트 커버리지 분석해줘.
 npx jest --coverage 실행 후:
 1. 커버리지 0%인 중요 파일 목록
 2. 우선순위 높은 파일 3개 선정 (비즈니스 로직 기준)
 3. 선정된 파일의 테스트 작성
 
 커버리지 목표: 비즈니스 로직 파일 70% 이상"

TDD + Claude Code 황금 규칙

# ✅ 이렇게 하세요
- 테스트 코드는 절대 수정하지 말 것 (명시적 지시)
- 테스트 기대값 변경 금지 (구현을 바꾸세요)
- 각 Red→Green 사이클 완료 시 git commit

# ❌ 이러면 안 됩니다
- "테스트가 통과하게 만들어줘" (테스트 수정 가능성)
- "이 테스트는 너무 엄격해, 완화해줘" (테스트 가치 훼손)
- 실패 테스트 무시하고 다음 단계 진행
TDD는 "나중에 테스트 추가"와 완전히 다른 개발 방식입니다. 테스트가 먼저 있으면 구현의 목표가 명확해지고, Claude Code는 그 목표를 향해 정확히 코드를 작성합니다. "테스트를 통과시켜줘"라는 명확한 목표가 있을 때 Claude의 구현 품질이 가장 높습니다.

핵심 정리

  • AI 보조 TDD로 버그 발생률 40% 감소(GitHub 2024) — 테스트 작성을 Claude에게 맡기면 TDD 속도 장벽 해소
  • "테스트 코드 수정 금지" 명시 필수 — 이 지시 없으면 Claude가 테스트 기대값 변경으로 통과시킬 수 있음
  • 버그 수정 시 재현 테스트 먼저 — 테스트 추가 → 버그 수정 → 통과 확인의 순서로 재발 방지까지 한 번에

관련 검색어  ·  클로드 코드 TDD  ·  AI 테스트 주도 개발  ·  Claude Code 테스트 자동화  ·  클로드 코드 완벽 마스터  ·  Red Green Refactor AI

채용정보
공지사항
인사이트
MY