# 03 · 삭제(Cleanup)와 통폐합(Consolidation)·구조화 **목적**: 02에서 '의미 없는 RED'로 분류된 것을 **삭제/수정**하고, 흩어진 테크닉·용어·도구적 접근을 **하나의 구조**로 통폐합한다. --- ## 1단계 · 삭제 (없는 것/가짜 것을 제거) "없는 것" = 행위가 없어서 **존재 이유가 없는** RED. 다음을 명시적으로 제거한다. - [ ] [02-#1] 단정 없는 `expect(true)` 류 · 태어나서 한 번도 실제 결함을 잡은 적 없는 테스트 삭제 - [ ] [02-#3] 프라이빗 메서드/내부 구현 세부 테스트 → 제거 또는 블랙박스 행위 테스트로 재작성 - [ ] [02-#4] 전부 목으로 만든 인공 시스템 테스트 → 실제 경계 통합 테스트로 교체 (단, 순수 로직 계층에 한정 — 네이티브/경계 서비스는 예외) - [ ] [02-#5] 복붙 기대값(자기검증 파괴) 테스트 → 손으로 쓴 기대값으로 교체 - [ ] [02-#6] 커버리지 %만 위한 테스트(단정 축소) 제거 - [ ] [02-#9] 전 계층에 중복된 동일 시나리오 테스트 → 최저 충분 계층 하나로 축소 - [ ] [02-#8] 비결정/flaky 테스트 → 격리(owner 지정)·수리·**수리 불가 시 삭제** - [ ] [02-추가] 죽은 테스트(실행 안 됨·스킵·영구 스킵·대상 코드 소멸) 삭제 — 02 DELETE에 11번째로 승격 - [ ] [02-추가] AI 에이전트가 추가한, 이유를 설명할 수 없는 '검증용 더미' 테스트 삭제 - [ ] [02-#2/#5] 테스트 목록에 없는 즉흥·무의도 구현 세부 테스트 제거 > 삭제 후 **정리 국면**에서는 뮤테이션 점수 회귀 없음을 변경 파일 증분으로 확인(커버리지 말고). 삭제가 행위 보호를 깨면 유지한 채 재작성. --- ## 2단계 · 통폐합 (흩어진 것들을 하나의 축으로) 기존에 별개로 통용되던 개념들을 "출처(사양/행위)"라는 단일 축으로 묶는다. ### 2-1. 테스트 전략 통폐합 → 하나의 포트폴리오 | 통폐합 전 (산재) | 통폐합 후 (하나의 축: 검증 계층) | |---|---| | unit / integration / e2e / system | **테스트 피라미드**(많은 단위 + 적당한 통합 + 소수 E2E) | | TDD / ATDD / BDD / SDD | **Spec → 수용 기준 → 테스트**의 단일 사양 흐름 | | approval / golden master / snapshot | **승인 테스트**(대용량 출력 비교) — 용도만 다름 | | characterization test | **특성화** = 기존 동작 보호용 승인 (RED 정의 예외) | | example / property / contract / mutation | **검증 보강 세트**: 예(가독성)+프로퍼티(넓이)+계약(경계)+뮤테이션(강도) | ### 2-2. TDD 3상 → "RED가 중심인 단일 피드백 루프"로 통합 RED를 독립된 절차가 아니라 **루프의 첫 반복 게이트**로 재배치: ``` [Spec] → [RED: 행위 하나 명세+실패증명] → [GREEN: 최소구현] → [REFACTOR: 행위 불변 정리] ↑__________________ TRACE/회귀 누적 ___________________│ ``` - 여기서 "RED"는 02의 12가지 **패턴 카탈로그**(5축 충족)에 맞는 테스트만 허용한다. - GREEN에서 단정·테스트를 고치지 않는다(two hats). - REFACTOR는 행위를 바꾸지 않으며 항상 전체 스위트 초록 유지. ### 2-3. 빨강의 3가지 구현 전략 → 하나의 '진행 규칙'으로 `Fake it → Triangulate → Obvious`를 "**불확실함이 크면 작게, 확신이 있으면 일반 구현**"이라는 하나의 규칙으로 통합. (Beck: Obvious가 확실하면 바로 그것.) ### 2-4. 에이전트 시대 프레임워크와 인간 TDD 통합 → SHORT-SPEC + LONG-TRACE 루프 - **빠른 계층(short loop)**: 단위·통합 테스트 — 에이전트가 로컬에서 초 단위로 실행 (Alderson) - **느린 계층(long gate)**: E2E·수용 테스트 — PR/CI에서 실행, **보호 경로**·독립 (Alderson, 2026 TDD-Agent) - **사양 계층(spec)**: 수용 시나리오(긴 시나리오) — 올바른 것을 만드는가 (SDD) --- ## 3단계 · 구조화 (용어·책임·소유권 정리) | 항목 | 확정 | |---|---| | "**의미 있는 RED**" = 행위·단정·예상된 실패·결정성·의도 5축 충족 (02) | KEEP | | "**의미 없는 RED**" = 5축 위반(8종) + 별도 프로세스 금지(2종: 의례적·에이전트 약화) — 02-10가지 | DELETE/수정 | | RED의 목적 = **사양 명세 + 독립 검증 + 완료 게이트** (2026 재정의) | 정의 | | 테스트의 책임 주체 = **프로그래머** (고객/에이전트 부담 전가 금지) | Shore | | 커버리지 = 진단, 뮤테이션 = 단정 강도, 시나리오 커버리지 = 행위 완성 (50–52) | 매트릭스 | | 에이전트 테스트 = 초안, 인간 리뷰 필수 (95) | 가드레일 | | 테스트 이름 규칙 = `동작_시나리오_기대` (02: 설명력 패턴; SOURCES 46) | 표준 | | 구조 = AAA / Given-When-Then (47) | 표준 | --- ## 산출물 요약 ``` 의미 있는 RED 12개 ← KEEP 의미 없는 RED 10개 ← DELETE/REWRITE 전략 5묶음 ← 통폐합 (피라미드/사양/승인/특성화/검증보강 — 특성화는 승인과 별도 행 유지) TDD 3상 ← 단일 루프로 통합 빨강 3전략 ← 하나의 진행 규칙 빠른/느린/사양 ← 3-계층 구조화 8개 용어 ← 확정(구조화) ```