# TDD-RED 프레임워크 · 2026 **"RED" 를 원론·증거·의견 기준으로 총체적으로 파악하고, 의미 있는 RED와 의미 없는 RED를 분리하고, 없는 것(가짜/의례적 RED)을 삭제하고, 흩어진 테크닉을 통폐합·구조화하고, 긴 시나리오로 재구성한 실행 프레임워크.** > 작성 기준: Sep 2026. 2026년 전반~9월 자료(핵심은 2026-08 사전인쇄·Spec Kit v1.0.0) + 원론(Beck/Fowler/DHH 등) + 2026 생성형 AI 에이전트 시대 자료. > 리서치 물량: **약 94개 외부 출처 정보 항목**(정확히 100개 번호, 일부 종합 링크 포함) / 14개 원문 1차 소스는 Playwright(headless → headful 폴백)로 직접 스크랩. > **레드팀 검증 반영**: 5방면(원론·수치·실용성·일관성·2026최신성)을 거쳐 v1.1로 개정 — 보고서는 `scratch/tdd-red/redteam/01~05*.md`. --- ## 문서 인덱스 | 문서 | 내용 | 한 줄 요약 | |---|---|---| | `01-principles-and-sources.md` | RED의 원론·이론·논문·주요 인물 의견 전부 파악 | "RED는 무엇인가"의 땅다지기 | | `02-meaningful-vs-meaningless-red.md` | **의미 있는 RED vs 의미 없는 RED** 분류표 | 핵심 산출물 1 | | `03-cleanup-and-consolidation.md` | 없는/가짜 RED **삭제**, 테크닉 **통폐합**·구조화 | 핵심 산출물 2 | | `04-long-scenarios.md` | RED를 **긴 시나리오**(행위 사양)로 재구성 | 핵심 산출물 3 | | `05-framework.md` | 실행 프레임워크: 제어 루프·AGENTS.md·체크리스트·게이트 | 핵심 산출물 4 | | `SOURCES.md` | 100개 정보 항목(약 94 외부) + 1차 소스 14개 | 증거 자료실 | --- ## 핵심 요약 (4줄) 1. **RED는 "실패하는 테스트를 먼저 쓰는 것"이 아니라, "한 가지 관찰 가능한 행위를 사양으로 명세하고, 그 행위가 없어서 **예상된 이유로** 실패함을 증명하는 것"**이다 (회귀=결함 재현, 특성화=레거시 전처리는 명시적 예외). 2. **의미 있는 RED** = 행위(behavior)를 하나만, 실제 결함을 잡을 수 있는 단정(assertion)으로, 구현이 아니라 인터페이스/결과를 검증하는 것. **의미 없는 RED** = 단정 없는 가짜 테스트, 구현 세부(내부) 테스트, 전부 목(mock)한 인공 시스템, 커버리지 채우기, 의례적 RED. 3. **2계층 실행**: 내부 루프(초 단위: RED→GREEN→REFACTOR) + 외부 게이트(GATE=VERIFY+REVIEW+DONE). 레드팀 검증으로 8단계 단일 목록을 폐기하고 단계 순서 모순을 해소했다. 4. **2026 에이전트 시대**: RED를 "에이전트에게 테스트-퍼스트를 프롬프트로 말하는 것"이 아니라 "**인간이 결정한 수용 기준을 보호 경로로 강제하는 완료 게이트**"로 격상한다. '숨김(held-out)'은 이 환경에서 실행 불가하여 '**보호(protected)**'(고치지 못하게)로 다운그레이드했다. --- ## 근본 정의 (Canon RED, Beck 2023 재확인 + 2026 + 레드팀 정정) - 테스트 목록(행위 시나리오)을 먼저 **전부** 나열하라. - 목록에서 **딱 하나**를 구체적이고 실행 가능한 테스트로 만들고, **실패를 확인하라**(실패 관찰 명문화는 Beck 『TDD By Example』·2026 가이드 결합 — Canon 본문은 실패를 전제만 한다). - 그 테스트(+이전 모든 테스트)가 통과하도록 코드를 바꾸되, **가장 단순한 변경**으로. - 선택적으로 리팩터(구현 설계 개선) — 행위는 바꾸지 않는다. - 목록이 비울 때까지 반복 → **공포가 지루함으로 바뀔 때까지**. - *Beck, "Canon TDD", Dec 2023 / 스크랩 `kentbeck_canon_tdd.txt`* (참고: Canon 본문은 2단계가 '하나를 구체 테스트로'까지이고 실패는 전제만 됨) --- ## 2026 자료 프레이밍 — 정정 (레드팀 실측 반영) 원래 "최근 4개월(2026-05~09)"로 과장됐으나, **실측상 4개월 창 안에 드는 외부 항목은 약 8개(8%)**에 불과하다. 다수(Google/TotT 03-10, Meta 02-11, Alderson 01-25, Drew Cain 04-09)는 2026년 1~4월 자료다. 아래 표는 실제 시기를 그대로 둔다. | 항목 | 출처(년) | 핵심 | 증거 등급 | |---|---|---|---| | VS Code + Copilot 전용 **Red/Green/Refactor 에이전트** 가이드 | 2026(Living) | IDE가 TDD 3상을 에이전트 핸드오프로 공식화 | 공식 문서 | | **TDD-Agent** (테스트 먼저 + 실행 피드백 반복) | 2026-08-17 | 저장소 수준 정답률·커버리지·뮤테이션 개선 보고 | **사전인쇄(비피어리뷰)** | | **Spec-Driven Development(SDD)** 등장 | 2025~2026 | Thoughtworks Radar 2025 · GitHub Spec Kit · Amazon Kiro · Red Hat | **2차 인용·벤더 수치** | | **Google "The Way of TDD"** (TotT) | 2026-03-10 | TDD가 은탄환이 아니라는 공식 인정 | 공식 블로그 | | **Meta "Death of Traditional Testing / JiTTests"** | 2026-02-11 | 전통 테스트 유지보수 붕괴 → 즉시생성 테스트 — **RED 승격과 반대 방향(분기)** | 공식 블로그 | | **TDD-Agent / TDAD / Spec-driven test gen** 사전인쇄 | 2026-08 | 테스트 품질·독립성·실행 피드백이 양보다 중요 | **사전인쇄** (TDAD 실재 제출은 2026-03) | | Alderson "Turns out I was wrong about TDD" | 2026-01-25 | 에이전트가 TDD 경제성을 뒤집음 (단 test-first 순서는 명시 안 함) | n=1 실무 후기 | | Emily Bache × Nizar "TDD Guard / Probity" | 2026-07-27 | 에이전트의 TDD 위반(과잉구현·테스트약화)을 **도구로 강제** | 인터뷰 | | Drew Cain "TDD Is Out, SDD Is In" | 2026-04-09 | 테스트는 검증, 스펙은 의도 — "올바른 것을 만드는가" (저자·날짜 확인 필요) | 2차 인용 사례 | | **합의(2026-09 시점)** | — | "RED를 행위 명세·독립 게이트로 승격"은 2026 신호 **일부 + 원론·실증의 결합** — 전부의 수렴은 아님(Meta JiTTests 등은 분기) | — | --- ## 디렉터리 ``` docs/tdd-red/ ├── 00-README.md ← 지금 이 파일 ├── 01-principles-and-sources.md ├── 02-meaningful-vs-meaningless-red.md ├── 03-cleanup-and-consolidation.md ├── 04-long-scenarios.md ├── 05-framework.md └── SOURCES.md (100개 정보 항목: 약 94 외부 출처) └── 레드팀 검증 → `scratch/tdd-red/redteam/01~05*.md` (5방면) ```