@ai-dev-methodologies/rlp-desk 0.15.3 → 0.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +34 -4
  3. package/docs/rlp-desk/failure-modes.md +191 -0
  4. package/package.json +10 -3
  5. package/src/node/MANIFEST.txt +3 -0
  6. package/src/node/prompts/prompt-assembler.mjs +2 -2
  7. package/src/node/run.mjs +70 -3
  8. package/src/node/runner/campaign-main-loop.mjs +97 -13
  9. package/src/node/util/debug-log.mjs +10 -6
  10. package/src/node/util/lifecycle-metrics.mjs +102 -0
  11. package/src/scripts/lib_ralph_desk.zsh +66 -0
  12. package/src/scripts/run_ralph_desk.zsh +23 -3
  13. package/docs/plans/bug-report-overhaul-backlog.md +0 -49
  14. package/docs/plans/bug-report-overhaul-v0.md +0 -238
  15. package/docs/plans/bug-report-overhaul-v1.md +0 -319
  16. package/docs/plans/native-agent-revert.md +0 -184
  17. package/docs/plans/polished-gliding-toucan.md +0 -234
  18. package/docs/plans/pr-e-phase-c1-blocked-recovery-hygiene-v0.md +0 -233
  19. package/docs/plans/spicy-booping-galaxy.md +0 -717
  20. package/docs/plans/strategic-review/rlp-desk-strategic-review.md +0 -125
  21. package/docs/plans/v0.15-stabilization-phase-a-prep.md +0 -130
  22. package/docs/plans/v0.15-stabilization-plan.md +0 -178
  23. package/docs/plans/v0.16-real-llm-sv-gate-spec.md +0 -177
  24. package/docs/rlp-desk/internal/verification-policy-gap-analysis.md +0 -523
  25. package/docs/rlp-desk/internal/verification-strategy-research.md +0 -2097
  26. package/docs/rlp-desk/plans/cozy-gliding-trinket.md +0 -53
  27. package/docs/rlp-desk/plans/frolicking-churning-honey.md +0 -253
  28. package/docs/rlp-desk/plans/keen-sauteeing-snowflake.md +0 -245
  29. package/docs/rlp-desk/plans/mutable-booping-corbato.md +0 -163
  30. package/docs/rlp-desk/plans/rlp-desk-0.11-handoff-7fixes.md +0 -352
  31. package/docs/rlp-desk/plans/rlp-desk-0.11.1-tmux-pane-disappearance.md +0 -260
  32. package/docs/rlp-desk/plans/rlp-desk-elegant-papert-agent-a8cd695ffca2a3ad8.md +0 -84
  33. package/docs/rlp-desk/plans/rlp-desk-elegant-papert.md +0 -270
  34. package/docs/rlp-desk/plans/rlp-desk-tmux-flywheel-routing.md +0 -730
  35. package/docs/rlp-desk/plans/toasty-whistling-diffie-agent-a6814625642e956da.md +0 -201
  36. package/docs/rlp-desk/plans/toasty-whistling-diffie.md +0 -117
  37. package/docs/rlp-desk/plans/validated-snacking-crayon.md +0 -204
  38. package/examples/calculator/.claude/ralph-desk/logs/loop-test/iter-001.worker-output.log +0 -0
  39. package/examples/calculator/.claude/ralph-desk/logs/loop-test/iter-001.worker-prompt.md +0 -38
  40. package/examples/calculator/.claude/ralph-desk/logs/loop-test/iter-001.worker-trigger.sh +0 -28
  41. package/examples/calculator/.claude/ralph-desk/logs/loop-test/session-config.json +0 -25
  42. package/examples/calculator/.claude/ralph-desk/logs/loop-test/status.json +0 -10
  43. package/examples/calculator/.claude/ralph-desk/logs/loop-test/worker-heartbeat.json +0 -1
@@ -1,2097 +0,0 @@
1
- # RLP Desk Verification Strategy Research
2
-
3
- > Internal document — gitignored, not published.
4
- > Last updated: 2026-03-24 (v3 — 학술논문, 정형 방법론, 기업 QE, 추가 스킬)
5
-
6
- ## 1. 핵심 문제
7
-
8
- ### 실전 사례
9
- - Trading 시스템: mock 73개 ALL PASS → Redis 무한루프, 매도 실패, 유령 포지션, 시그널 이중 경로
10
- - 근본 원인: L1(unit test)만 요구, L2/L3/L4 강제 없음
11
- - "code inspection"을 검증으로 인정 → Verifier가 대충 PASS
12
-
13
- ### 역사적 사례
14
- | 사건 | 손실 | 근본 원인 | 잡았어야 할 계층 |
15
- |------|------|----------|----------------|
16
- | Knight Capital | $440M / 45분 | 7년 미테스트 dead code + 수동 배포 | L4 (deploy verify) |
17
- | Boeing 737 MAX | 346명 사망 | 단일 센서 의존 시스템 테스트 누락 | L3 (E2E simulation) |
18
- | Mars Climate Orbiter | $327M | 단위 불일치 (파운드 vs 뉴턴) | L2 (contract test) |
19
- | Therac-25 | 3명 사망 | race condition, timing 미테스트 | L2 (concurrency test) |
20
- | AI 생성 테스트 | 구현 복사 tautological test | L1은 pass하지만 버그 못 잡음 | mutation testing gate |
21
-
22
- ---
23
-
24
- ## 2. 검증 계층 모델 (L1-L4)
25
-
26
- ```
27
- L1: Unit Test — 함수 단위 (mock 허용), 항상 필수
28
- L2: Integration — 외부 서비스 실제 연결, 해당 시 필수
29
- L3: E2E Simulation — 알려진 입력 → 전 구간 재현, 항상 필수
30
- L4: Deploy Verify — 실제 환경 동작 확인, 배포 시 필수
31
- ```
32
-
33
- 규칙:
34
- - 빈칸/TODO → Verifier 무조건 FAIL
35
- - "N/A — 사유" 명시 시에만 skip
36
- - "inspection"은 automated 검증으로 불인정
37
-
38
- ---
39
-
40
- ## 3. 속일 수 없는 AC 6가지 속성
41
-
42
- 1. **Observable outcome** — 관찰 가능한 결과
43
- 2. **Quantitative threshold** — 숫자 pass/fail 기준
44
- 3. **Negative test** — "일어나면 안 되는 것"
45
- 4. **Edge case** — boundary value 명시
46
- 5. **Implementation-independent** — HOW가 아닌 WHAT
47
- 6. **Third-party verifiable** — 코드 모르는 사람도 검증 가능
48
-
49
- 출처: Specification by Example (Gojko Adzic), Example Mapping (Cucumber)
50
-
51
- ---
52
-
53
- ## 4. 비코드 검증 패턴
54
-
55
- | 유형 | 검증 방법 | 정량 기준 |
56
- |------|----------|----------|
57
- | 디자인 | pixel diff, WCAG | diff < 5%, contrast 4.5:1 |
58
- | 콘텐츠 | 텍스트 존재, 링크, 맞춤법 | broken links 0, EPT < 2 |
59
- | API | contract test, 스키마 | Pact pass, OpenAPI 0 errors |
60
- | 배포 | health check, canary | /health 200, error < 0.5% |
61
- | 인프라 | validate, policy scan | Checkov HIGH 0건 |
62
- | 문서 | 링크, 코드블록 실행 | broken 0, 예제 실행 가능 |
63
- | 데이터 마이그레이션 | row count, checksum | source == target, SHA 10% |
64
- | 보안 | OWASP ASVS, SAST | CVSS ≥ 7.0 취약점 0건 |
65
-
66
- ---
67
-
68
- ## 5. 테스트 품질 게이트
69
-
70
- ```
71
- Gate 1: 테스트 존재 (coverage ≥ 80%)
72
- Gate 2: 테스트가 버그 잡음 (mutation score ≥ 60%)
73
- Gate 3: 행동 검증 (anti-pattern checklist pass)
74
- ```
75
-
76
- Anti-patterns:
77
- - Liar: assertion 없이 실행만
78
- - Inspector: private 메서드/내부 상태 검증
79
- - Mockery: mock만 테스트
80
- - Tautological: 구현 로직 복사한 expected value
81
- - Snapshot abuse: 300줄 HTML diff 무검토 승인
82
-
83
- ---
84
-
85
- ## 6. 언어/프레임워크 중립성
86
-
87
- ### 추상 검증 카테고리 (도구가 아닌 카테고리로 지정)
88
-
89
- | 카테고리 | Python | JS/TS | Go | Rust | Shell | Java |
90
- |----------|--------|-------|----|------|-------|------|
91
- | unit-test | pytest | vitest/jest | go test | cargo test | bats | junit |
92
- | lint | ruff | eslint/biome | golangci-lint | clippy | shellcheck | checkstyle |
93
- | type-check | mypy | tsc --noEmit | (built-in) | (built-in) | n/a | (built-in) |
94
- | format | ruff format | prettier | gofmt | cargo fmt | shfmt | google-java-format |
95
- | security | bandit | npm audit | govulncheck | cargo audit | n/a | spotbugs |
96
- | mutation | mutmut | stryker | — | cargo-mutants | — | pitest |
97
- | concurrency | — | — | go test -race | loom | — | jcstress |
98
- | backward-compat | griffe | api-extractor | apidiff | cargo-semver-checks | — | japicmp |
99
-
100
- ### Polyglot 프로젝트 처리
101
- test-spec에 per-component 블록 지원:
102
- ```
103
- ## Component: backend (python)
104
- | AC | Category | Command |
105
-
106
- ## Component: frontend (typescript)
107
- | AC | Category | Command |
108
- ```
109
-
110
- ---
111
-
112
- ## 7. 추가 검증 차원 (현재 전략에서 누락)
113
-
114
- | 차원 | 설명 | 도구 | 우선순위 |
115
- |------|------|------|---------|
116
- | perf-regression | "이전보다 느려졌는가" | k6, hyperfine, benchstat | Medium |
117
- | accessibility | WCAG AA 준수 | axe-core, Playwright | Medium |
118
- | backward-compat | API/라이브러리 호환성 | semver-checks, Pact | High |
119
- | concurrency | race condition | go -race, loom, jcstress | High |
120
- | db-consistency | 마이그레이션 후 정합성 | pgTAP, alembic round-trip | Medium |
121
- | observability | 로그/메트릭/트레이스 존재 | OTel weaver, grep | Low |
122
- | error-recovery | 장애 복구 | toxiproxy, chaos-mesh | Medium |
123
- | anti-gaming | AI가 테스트 속이는 것 방지 | hidden test, assertion 체크 | High |
124
-
125
- ---
126
-
127
- ## 8. AI 검증 특수 문제
128
-
129
- ### AI-generated test의 한계 (Mark Seemann)
130
- - "Tests work best when you have seen them fail" — AI가 만든 테스트는 한 번도 실패한 적 없음
131
- - 구현을 읽고 expected value를 복사 → tautological test
132
- - mock이 버그와 같은 가정을 인코딩
133
-
134
- ### NIST: AI Agent 평가 속임 방지 (2026)
135
- 1. **Solution contamination**: AI가 답을 인터넷에서 검색
136
- 2. **Grader gaming**: assertion 비활성화, 테스트 전용 로직 삽입
137
-
138
- 방지 방법:
139
- - Worker가 볼 수 없는 hidden test
140
- - assertion 무결성 체크 (assert 문 삭제 감지)
141
- - Worker와 Verifier에 다른 모델 사용
142
- - 테스트 코드에 `if __name__ == '__test__'` 패턴 탐지
143
-
144
- ### AI 코드의 실제 위험도 (Harness 2025, CodeRabbit)
145
- - AI 생성 PR: 1.7x 더 많은 이슈, 1.4x 더 많은 critical 버그
146
- - 72% 조직이 AI 코드로 인한 프로덕션 사고 경험
147
- - XSS 취약점 2.74x 더 높음
148
-
149
- ---
150
-
151
- ## 9. 외부 스킬 (skills.sh)
152
-
153
- ### 설치 가능한 관련 스킬
154
-
155
- | 스킬 | 설치수 | 용도 |
156
- |------|--------|------|
157
- | `aj-geddes/useful-ai-prompts@mutation-testing` | 135 | mutation testing 가이드 |
158
- | `am-will/codex-skills@tdd-test-writer` | 857 | TDD 테스트 작성 |
159
- | `jwilger/agent-skills@mutation-testing` | 76 | mutation testing 워크플로우 |
160
- | `proffesor-for-testing/agentic-qe@mutation-testing` | 51 | QE 관점 mutation testing |
161
- | `swingerman/atdd@atdd` | 7 | ATDD 2-stream (acceptance + unit) |
162
- | `bacoco/bmad-skills@bmad-test-strategy` | 19 | 테스트 전략 수립 |
163
- | `mikeyobrien/ralph-orchestrator@test-driven-development` | 30 | ralph loop TDD |
164
- | `doubleslashse/claude-marketplace@requirements-clarification` | 20 | 요구사항 명확화 |
165
-
166
- ---
167
-
168
- ## 10. 참고 레포
169
-
170
- | 레포 | 핵심 아이디어 |
171
- |------|-------------|
172
- | [swingerman/atdd](https://github.com/swingerman/atdd) | ATDD 2-stream + mutation testing, Claude Code 플러그인 |
173
- | [eyaltoledano/claude-task-master](https://github.com/eyaltoledano/claude-task-master) | PRD → task list, complexity scoring, TDD autopilot |
174
- | [dodona-edu/universal-judge](https://github.com/dodona-edu/universal-judge) | 언어 중립 테스트 러너 (TESTed) |
175
- | [darrenhinde/OpenAgentsControl](https://github.com/darrenhinde/OpenAgentsControl) | 6단계 검증 파이프라인 AI agent |
176
- | [qodo-ai/pr-agent](https://github.com/qodo-ai/pr-agent) | 15+ 전문 agent PR 리뷰 |
177
- | [automazeio/ccpm](https://github.com/automazeio/ccpm) | PRD → Epic → Issue 트래킹 |
178
- | [ruvnet/sparc](https://github.com/ruvnet/sparc) | SPARC (Spec→Pseudo→Arch→Refine→Complete) |
179
-
180
- ---
181
-
182
- ## 11. 방법론 출처
183
-
184
- | 방법론 | 출처 | 핵심 |
185
- |--------|------|------|
186
- | Specification by Example | Gojko Adzic (10년 회고) | 구체적 예시가 AC, 2.75x 품질 향상 |
187
- | Example Mapping | Matt Wynne (Cucumber) | Yellow/Blue/Green/Red 카드, 25분 세션 |
188
- | ATDD 2-stream | swingerman/atdd | acceptance test = 불변, Worker 수정 불가 |
189
- | Shape Up | Basecamp | appetite 기반 scoping, circuit breaker |
190
- | INVEST | Agile | Independent, Negotiable, Valuable, Estimable, Small, Testable |
191
- | IEEE 829 | IEEE | 16 clause 테스트 계획 표준 |
192
- | ISTQB | ISTQB Foundation | EP, BVA, decision table, state transition |
193
- | ISO 25010:2023 | ISO | 9가지 품질 특성 (safety, flexibility 추가) |
194
- | DO-178C | FAA | 리스크 기반 검증 수준 (DAL A-E), 독립 검증 의무 |
195
- | Three Amigos | John Ferguson Smart | Intent + Correctness + Adversarial 3관점 |
196
- | Testing Trophy | Kent C. Dodds | integration 중심 (unit < integration < e2e) |
197
- | Google Mutation Testing | IEEE TSE 2021 | 24,000+ 개발자, 82% productive mutants |
198
- | NIST CAISI | NIST 2026 | AI agent 평가 속임 방지 가이드 |
199
-
200
- ---
201
-
202
- ## 12. 구현 우선순위
203
-
204
- | 순위 | 항목 | 근거 |
205
- |------|------|------|
206
- | **P0** | test-spec L1/L2/L3/L4 필수 섹션 | 실전 장애 직접 방지 |
207
- | **P0** | Verifier Layer Enforcement | TODO → FAIL, inspection ≠ verification |
208
- | **P0** | Criteria Mapping에 Layer 컬럼 | AC별 검증 계층 추적 |
209
- | **P1** | 추상 검증 카테고리 (언어 중립) | 다중 언어 프로젝트 지원 |
210
- | **P1** | brainstorm Given/When/Then + Task Type | PRD 품질 강제 |
211
- | **P1** | Worker TDD + L3 E2E 의무 | unit test만 돌리고 끝내기 방지 |
212
- | **P1** | anti-gaming 대책 | hidden test, assertion 무결성 |
213
- | **P2** | Anti-pattern 체크리스트 | L1 품질 개선 |
214
- | **P2** | perf-regression, accessibility, concurrency | 추가 검증 차원 |
215
- | **P2** | Sweep 검증 (도메인 특화) | trading 등 특수 도메인 |
216
- | **P3** | per-component polyglot 지원 | 복합 스택 프로젝트 |
217
- | **P3** | formal verification 연동 | 장기 비전 (Lean4, Isabelle) |
218
-
219
- ---
220
-
221
- ## 13. 외부 스킬 흡수 분석
222
-
223
- ### 13-1. swingerman/atdd — 2-Stream ATDD
224
-
225
- **핵심 방법론:**
226
- - Acceptance test(WHAT)와 Unit test(HOW)를 완전 분리
227
- - Acceptance test는 Worker가 수정 불가 (read-only contract)
228
- - Spec은 Given/When/Then + **도메인 언어만** 사용 (기술 용어 금지)
229
- - Spec-Guardian agent가 implementation leakage 감지
230
-
231
- **7단계 워크플로우:**
232
- 1. Given/When/Then spec 작성 (도메인 언어만)
233
- 2. 프로젝트별 test pipeline 생성 (parser → IR → generator)
234
- 3. Acceptance test 실행 → 반드시 FAIL (RED)
235
- 4. TDD로 구현 (unit test + code → 양쪽 pass)
236
- 5. Spec leakage 감사
237
- 6. Mutation testing 실행
238
- 7. 다음 feature로 반복
239
-
240
- **Implementation leakage 예시:**
241
- ```
242
- BAD: "GIVEN the UserService has an empty userRepository"
243
- GOOD: "GIVEN there are no registered users"
244
- ```
245
-
246
- 금지 패턴: class/function 이름, DB 테이블, API 엔드포인트, 프레임워크 용어, 파일 경로
247
-
248
- **rlp-desk 흡수 지점:**
249
- | ATDD 구성요소 | rlp-desk 적용 위치 |
250
- |-------------|-------------------|
251
- | Acceptance test (불변) | test-spec 내 별도 섹션, Verifier가 소유 |
252
- | Spec-Guardian | Verifier prompt에 leakage 체크 규칙 추가 |
253
- | 도메인 언어 강제 | brainstorm에서 AC 작성 시 기술 용어 금지 가이드 |
254
- | Mutation testing | Verifier 검증 게이트 Gate 2 |
255
-
256
- 출처: https://github.com/swingerman/atdd
257
-
258
- ---
259
-
260
- ### 13-2. Mutation Testing 스킬 (3개 통합)
261
-
262
- **비교:**
263
- | 차원 | aj-geddes (135) | jwilger (76) | agentic-qe (51) |
264
- |------|-----------------|-------------|-----------------|
265
- | Kill rate 기준 | 80%+ | **100% 강제** | 95%+ excellent |
266
- | 시나리오 검증 | 없음 | **GWT 시나리오 필수** | 학습 기반 |
267
- | 병렬 실행 | 없음 | 순차 | **8 workers** |
268
- | 증분 테스트 | 파일 단위 | changed files | **changed lines** |
269
- | 증거 출력 | HTML | **JSON packet** | JSON+MD+HTML |
270
-
271
- **흡수할 핵심:**
272
-
273
- 1. **시나리오 커버리지 검증 (jwilger)**
274
- - surviving mutant에 대응하는 GWT 시나리오가 없으면 → 코드 삭제 or 시나리오 추가 (사람 판단)
275
- - 시나리오 없이 테스트만 추가하는 건 metric gaming
276
-
277
- 2. **Mutation type → 테스트 추천 (공통)**
278
- - `>=` → `>` 생존: boundary test 추가
279
- - `&&` → `||` 생존: 한쪽만 true인 케이스 추가
280
- - statement 삭제 생존: return value 미검증
281
- - arithmetic 생존: 계산 결과 미검증
282
-
283
- 3. **증거 패킷 형식 (jwilger)**
284
- ```json
285
- {
286
- "tool": "cargo-mutants",
287
- "scope": ["src/money.rs"],
288
- "total_mutants": 42,
289
- "killed": 40,
290
- "survived": 2,
291
- "score": 95.2,
292
- "survivors": [{"file":"...","line":45,"mutation_type":"arithmetic"}],
293
- "verdict": "FAIL"
294
- }
295
- ```
296
-
297
- 4. **언어별 도구 매핑 (공통)**
298
- - Rust: cargo-mutants
299
- - JS/TS: Stryker
300
- - Python: mutmut
301
- - Java: PITest
302
- - Elixir: Muzak
303
-
304
- 출처: aj-geddes/useful-ai-prompts, jwilger/agent-skills, proffesor-for-testing/agentic-qe
305
-
306
- ---
307
-
308
- ### 13-3. TDD 스킬 (4개 통합)
309
-
310
- **핵심 발견: Context Isolation이 TDD 강제의 열쇠**
311
-
312
- 단일 컨텍스트 LLM은 자연스럽게 "구현을 먼저 설계하고 테스트를 맞추는" 치팅을 함.
313
- 해결책: RED/GREEN/REFACTOR 각 단계를 **별도 Agent**로 분리.
314
-
315
- ```
316
- RED: test-writer agent (구현 계획 못 봄)
317
- GREEN: implementer agent (테스트 파일만 봄)
318
- REFACTOR: refactorer agent (통과한 코드만 봄)
319
- ```
320
-
321
- **backpressure gate (ralph-orchestrator):**
322
- - 테스트 미통과 → 다음 단계 진입 거부
323
- - lint 실패 → 다음 단계 진입 거부
324
- - typecheck 실패 → 다음 단계 진입 거부
325
-
326
- **TEA (bmad) — Risk-Based 테스트 전략:**
327
- - P0-P3 리스크 분류 (probability × impact)
328
- - P0/P1 시나리오 먼저 테스트
329
- - 40개 재사용 가능 test fixture/helper Knowledge Base
330
- - Requirements → Tests 추적 (Traceability Matrix)
331
- - go/no-go gate: 릴리스 결정은 추적 가능한 증거 기반
332
-
333
- **TDD Anti-patterns (공통):**
334
- - "Implement X with tests" → 구현 우선으로 전락
335
- - "Test existing code" → 함수가 이미 존재한다고 가정
336
- - 단계 결합 → RED와 GREEN을 한 번에 하면 TDD 아님
337
-
338
- **rlp-desk 흡수 지점:**
339
- | TDD 구성요소 | rlp-desk 적용 위치 |
340
- |-------------|-------------------|
341
- | Context isolation | Worker 내부에서 RED/GREEN/REFACTOR 단계 분리 지시 |
342
- | Backpressure gate | Verifier가 테스트/lint/typecheck 통과 확인 후 PASS |
343
- | Risk-based prioritization | brainstorm에서 US별 리스크 분류 |
344
- | Traceability matrix | test-spec의 Criteria Mapping 확장 |
345
- | Requirements clarification | brainstorm에서 2-3개 targeted 질문 (10개+ 금지) |
346
-
347
- 출처: modu-ai/moai-adk, bacoco/bmad-skills, mikeyobrien/ralph-orchestrator, am-will/codex-skills
348
-
349
- ---
350
-
351
- ## 14. 통합 흡수 전략 — rlp-desk 적용 맵
352
-
353
- ### brainstorm 단계
354
- - Given/When/Then AC + 도메인 언어 강제 (ATDD)
355
- - Task Type 식별 + US별 리스크 분류 P0-P3 (TEA)
356
- - 2-3개 targeted 명확화 질문 (requirements-clarification)
357
- - 검증 계층(L1-L4) 지정 (실전 피드백)
358
-
359
- ### PRD 템플릿
360
- - AC를 Given/When/Then + 도메인 언어 (기술 용어 금지)
361
- - Boundary Cases 필수
362
- - Task Type + Risk Level 필드
363
- - 검증 계층 매핑 (AC별 L1/L2/L3/L4)
364
-
365
- ### test-spec 템플릿
366
- - L1/L2/L3/L4 필수 섹션 (실전 피드백)
367
- - Acceptance test 섹션 (Worker 수정 불가, ATDD)
368
- - Anti-pattern 체크리스트
369
- - Mutation testing gate
370
- - Deploy Checklist
371
- - Traceability Matrix (Requirements → Tests → Evidence)
372
-
373
- ### Worker prompt
374
- - TDD 강제: RED→GREEN→REFACTOR (context isolation 권장)
375
- - L3 E2E 실행 의무
376
- - Acceptance test 수정 금지
377
- - Backpressure gate: 테스트/lint/typecheck 통과 전 complete 금지
378
-
379
- ### Verifier prompt
380
- - Layer Enforcement: L1~L4 각 계층 실행 확인 (TODO → FAIL)
381
- - Spec-Guardian: AC에 기술 용어 leakage 체크
382
- - Mutation testing: score ≥ 60% (Phase 1), 시나리오 커버리지 검증
383
- - Anti-gaming: assertion 무결성, hidden test, inspection ≠ verification
384
- - Backpressure: 테스트 미통과 → FAIL
385
-
386
- ### governance.md
387
- - 리스크 기반 검증 수준 정의 (low/medium/high/critical)
388
- - 리스크 높을수록 검증 계층 + mutation + consensus 강제
389
-
390
- ---
391
-
392
- ## 15. 도메인별 AC 템플릿 라이브러리
393
-
394
- ### 15-1. Web API Endpoint
395
- - CRUD 정확성: 200/201/204/400/401/403/404/409/422/500 각 상태코드
396
- - 인증/인가: 미인증→401, 권한 없음→403, 다른 사용자 리소스 접근 차단
397
- - 입력 검증: 필수 필드 누락→422, 잘못된 타입→400, SQL injection→400(not 500)
398
- - 페이지네이션: 기본 size 제한, page=0/-1→400, 마지막 페이지 초과→빈 배열
399
- - 에러: 일관된 JSON 구조, 내부정보 미노출, 5xx→서버 로그 + correlation ID
400
- - 보안 헤더: X-Content-Type-Options, X-Frame-Options, CSP, CORS
401
- - 출처: Shieldfy API Security Checklist, OWASP
402
-
403
- ### 15-2. Frontend UI Component
404
- - 렌더링: 정상 데이터, 빈 데이터, 최대 길이, 특수문자, 로딩/에러/빈 상태
405
- - 인터랙션: hover/focus/active, 키보드 내비게이션, 폼 유효성, 포커스 트랩 없음
406
- - 반응형: 320px/768px/1024px/1920px, 터치 타겟 44x44px, 가로 스크롤 없음
407
- - 접근성(WCAG 2.2 AA): 대비 4.5:1, alt 텍스트, label 연결, 스크린리더, 200% 줌
408
- - 출처: GOV.UK, A11Y Project Checklist, Lost Pixel
409
-
410
- ### 15-3. Data Pipeline
411
- - 수집: 소스 연결, 소스 불가 시 재시도, 스키마 drift 검증, 중복 처리
412
- - 변환: 알려진 N건 입출력 검증, NULL 처리, 타입 캐스팅, 집계 수동 대조
413
- - 유효성: 완전성(NULL%), 유일성(PK 중복), 참조 무결성, 범위, 포맷, freshness
414
- - 출력: 스키마 일치, 멱등성, 파티셔닝, 메트릭 발행
415
- - 장애 복구: 체크포인트, 부분 실패 → 비일관 상태 없음, DLQ, 알림
416
- - 출처: lakeFS, Monte Carlo, Integrate.io
417
-
418
- ### 15-4. CLI Tool
419
- - 인자 파싱: --help/-h, --version, 필수 인자 누락→에러+사용법, 미지 플래그→유사 제안
420
- - 출력: stdout=정상, stderr=에러, --json, --quiet, --verbose, 비TTY시 색상 해제
421
- - 종료 코드: 0=성공, 1=에러, 2=사용법, 부분 실패→0 아님
422
- - 에러 메시지: 원인+해결법, 경로 포함, sudo 제안, 비디버그시 스택트레이스 없음
423
- - 견고성: Ctrl+C 클린업, SIGTERM 정상종료, SIGPIPE 처리, stdout 리다이렉트 동작
424
- - 출처: clig.dev (CLI Guidelines)
425
-
426
- ### 15-5. Infrastructure
427
- - 프로비저닝: IaC 정의, plan 확인, apply 멱등, 태그 적용
428
- - 네트워킹: 최소 권한 SG, 비공개 서브넷 DB, LB 헬스체크, TLS 자동갱신
429
- - 보안: IAM 최소 권한, 하드코딩 크레덴셜 없음, 저장소 암호화, 감사 로깅
430
- - 모니터링: 헬스체크, CPU/메모리/디스크 수집, 알림 설정, 로그 중앙화, 런북
431
- - DR: 자동 백업+복원 테스트, 멀티AZ, 페일오버 테스트, RTO/RPO 문서화
432
- - 출처: Mercari Production Readiness Checklist
433
-
434
- ### 15-6. Batch Job
435
- - 스케줄링: cron 확인, 이전 실행 중 중복 방지(mutex), 수동 트리거, TZ 명시
436
- - 멱등성: 재실행=동일 결과, 체크포인트 추적, 부분+재실행=전체 실행
437
- - 에러 복구: transient→재시도(backoff), permanent→DLQ, 부분 실패 안전
438
- - 로깅: 시작/종료 시간, 처리/실패/스킵 건수, 실행 ID, 대시보드
439
- - 출처: AWS Batch, BullMQ
440
-
441
- ### 15-7. Real-Time System
442
- - 지연: p50/p95/p99 SLA, 2x 부하시 20% 이내 증가, E2E 측정
443
- - 처리량: 정상 N msg/s, 버스트 2N T분, 선형 확장, 손실 0
444
- - 백프레셔: 프로듀서 throttle(crash 아님), 신호 전파 T초 내, 큐 80% 알림
445
- - 페일오버: 컨슈머 장애→T초 내 대체, 브로커 장애→재라우팅, 데이터 손실 0
446
- - 순서/전달: 파티션 내 순서 보장, at-least-once/exactly-once 문서화, DLT 구성
447
- - 출처: Conduktor, Azure Reliability, New Relic
448
-
449
- ### 15-8. Mobile App
450
- - 플랫폼: 최소 iOS/Android 버전, HIG/Material 가이드, safe area
451
- - 오프라인: 핵심 기능 캐시, 오프라인 표시, 큐잉→온라인 동기화, 충돌 해결
452
- - 권한: 필요 시점에 요청, 사전 설명, 거부 시 fallback, 미사용 권한 없음
453
- - 알림: 가치 시연 후 요청, 탭→올바른 화면, 잠금화면 민감정보 없음, 채널 분류
454
-
455
- ---
456
-
457
- ## 16. 검증 계층별 상세 체크리스트 (L1-L4)
458
-
459
- ### L1 Unit Test (25항목)
460
- **커버리지 게이트:**
461
- - Happy path, 각 에러 경로, null/empty/zero, boundary(n-1,n,n+1), return value assertion, side effect 검증
462
- **테스트 설계:**
463
- - 1 테스트 = 1 행동, 이름=given/when/then, 독립성, mock=외부 의존성만
464
- **입력 엣지케이스:**
465
- - 특수문자(SQL injection, XSS), Unicode/emoji, 최대 길이, 잘못된 타입
466
- **비즈니스 로직:**
467
- - 상태 전이, 동시성, 타임아웃/재시도, 무효 상태 조합, 롤백
468
-
469
- ### L2 Integration Test (서비스별)
470
- **DB:** 연결풀, CRUD, 트랜잭션, ACID, 제약조건, 마이그레이션 가역성, 연결 손실 복구
471
- **Redis:** set/get/expire, pub/sub, 연결 손실 복구, 캐시 미스, 직렬화
472
- **HTTP API:** auth, 헤더, 상태코드, 타임아웃, 재시도(429/503), rate limit, TLS
473
- **Message Queue:** produce/consume/ack, DLQ, 순서, 우선순위, 재생, publisher confirm, durability
474
- **File System:** read/write/delete, 권한, 디스크 풀, 인코딩, 동시 접근
475
- **Email/SMS:** 전송 확인, 템플릿 변수 치환, rate limit, 바운스, 수신 거부
476
-
477
- ### L3 E2E Simulation
478
- **사전조건:** 알려진 입력 정의, 기대 출력(정량) 정의, 환경 초기화, baseline 확보
479
- **실행:** 전체 파이프라인, 모든 서브시스템, 실제 호출(mock 아님), 타이밍/순서 검증, async 완료 대기
480
- **검증:** baseline ± 허용 오차, 출력 형식 스키마, DB 상태, 예상 외 부작용 없음
481
- **에러 전파:** 각 단계 실패 전파, 부분 실패→비일관 없음, 재시도 멱등
482
- **정리:** 테스트 데이터 삭제, 외부 계정 초기화, 잔여 큐 메시지 없음
483
-
484
- ### L4 Deploy Verification
485
- **즉시 (5분):** /health 200, 버전 일치, 프로세스 실행 확인, ERROR 로그 0건, 의존성 연결
486
- **설정:** 환경변수, 시크릿 로드, 피처 플래그, SSL 유효+30일 이상, DNS
487
- **데이터:** 마이그레이션 완료, 미적용 없음, 롤백 스테이징 테스트 완료
488
- **트래픽:** P95 SLA 이내, 에러율 < 0.1%, CPU/메모리 정상, 오토스케일링
489
- **카나리 (Google SRE):** 컨트롤 그룹 대비, HTTP 코드+지연 primary signal, 대표 트래픽 사이클 이상, 자동 롤백
490
- **모니터링:** 대시보드 golden signals, 알림 라우팅, synthetic probe, 로그 수집
491
- **롤백:** 단일 명령, 이전 아티팩트 존재, DB 마이그레이션 롤백 테스트, 의사결정자 연락 가능
492
-
493
- 출처: Google SRE Launch Checklist, AWS Well-Architected, Cortex, bregman-arie/sre-checklist
494
-
495
- ---
496
-
497
- ## 17. 테스트 설계 템플릿
498
-
499
- ### Equivalence Partitioning 워크시트
500
- | 파티션 ID | 타입 | 범위/값 | 대표값 | 테스트 ID |
501
- 규칙: 파티션당 최소 1 TC, invalid 파티션은 각각 독립 TC
502
-
503
- ### Boundary Value Analysis 워크시트
504
- 2-value BVA: min, min-1, max, max+1
505
- 3-value BVA: min-1, min, min+1, max-1, max, max+1
506
-
507
- ### Decision Table
508
- 조건 N개 → 2^N 규칙 → 규칙당 1 TC → 무관 조건 병합으로 축소
509
-
510
- ### State Transition → TC 매핑
511
- | 현재 상태 | 이벤트 | 다음 상태(pass) | 다음 상태(fail) | TC ID |
512
- + 무효 전이 TC (발생하면 안 되는 전이)
513
-
514
- ### Error Guessing 카테고리별 체크리스트
515
- **Null/Missing:** null, undefined, "", 필수 필드 누락, 빈 배열/객체
516
- **Overflow:** MAX_INT±1, 최대 길이+1, 최대 depth, 스택 오버플로우
517
- **Concurrent:** 동시 업데이트, 더블클릭, 1ms 내 동일 요청, read-during-write
518
- **Encoding:** Unicode, SQL injection, XSS, path traversal, null byte, URL encoding
519
- **Timezone:** 연말→연초, 윤년 2/29, DST 전환, UTC vs local, 2038 문제
520
-
521
- ---
522
-
523
- ## 18. Gaming 방지 Given/When/Then 패턴
524
-
525
- ### Negative (일어나면 안 되는 것)
526
- ```
527
- Then NO user record is created
528
- Then the response does NOT contain "password_hash"
529
- Then order status is still "cancelled"
530
- ```
531
-
532
- ### Boundary (정확한 경계값)
533
- ```
534
- Scenario Outline: username length 2→422, 3→201, 30→201, 31→422
535
- ```
536
-
537
- ### Concurrent (race condition)
538
- ```
539
- When user A and user B simultaneously POST (last item)
540
- Then exactly 1 order created, exactly 1 receives 409, inventory = 0 (not -1)
541
- ```
542
-
543
- ### Failure (X가 깨졌을 때)
544
- ```
545
- Given the database connection is unavailable
546
- Then response 503, NO stack trace, Retry-After header present
547
- ```
548
-
549
- ### Performance (N ms 이내)
550
- ```
551
- Given 100 concurrent users
552
- Then p95 < 200ms AND zero 5xx AND CPU < 90%
553
- ```
554
-
555
- ---
556
-
557
- ## 19. Mutation Testing 상세
558
-
559
- ### Surviving Mutant → 테스트 추천 매핑 (완전 테이블)
560
- | 생존 mutant 유형 | 근본 원인 | 테스트 액션 |
561
- |-----------------|----------|-----------|
562
- | 산술 연산 교체 (+→-) | 계산 결과 미검증 | 알려진 입력의 정확한 숫자 출력 assert |
563
- | 경계 이동 (<→<=) | boundary 미테스트 | n-1, n, n+1 테스트 추가 |
564
- | null 반환 주입 | null 경로 미검증 | null/empty 결과 처리 테스트 |
565
- | boolean 반환 뒤집기 | return값 미검증 | assertTrue/assertFalse |
566
- | void 메서드 삭제 | 부작용 미검증 | 상태 변경/호출 횟수 검증 |
567
- | 빈 컬렉션 반환 | 컬렉션 내용 미검증 | size > 0 또는 특정 요소 |
568
- | 조건 부정 (==→!=) | 실패 경로 미테스트 | 거부/실패 케이스 추가 |
569
- | increment 뒤집기 (++→--) | 카운터 미검증 | 루프 종료 상태 assert |
570
- | 문자열 변경 | 문자열 정확히 미비교 | exact string assert |
571
- | dead code | 도달 불가 | 코드 삭제 또는 도달성 테스트 |
572
-
573
- ### 동치 mutant 판단 결정 트리
574
- ```
575
- 생존 → 테스트가 해당 라인 실행? NO → 커버리지 갭 (동치 아님)
576
- → 관찰 가능한 출력 변경? NO → dead code/로깅 → 동치, 억제
577
- → 테스트가 해당 값 assert? YES → assertion 약함 → 강화
578
- ```
579
-
580
- ---
581
-
582
- ## 20. TDD 단계별 체크리스트
583
-
584
- ### RED (실패 테스트 작성)
585
- - 즉시 실행 → 반드시 FAIL (pass하면 새 행동 아님)
586
- - 1 테스트 = 1 행동
587
- - 테스트 이름: MethodName_Scenario_Expected
588
- - 프로덕션 코드 미작성 상태
589
- - 구현 leakage 없는 assertion
590
-
591
- ### GREEN (최소 구현)
592
- - 테스트만 보고 구현 (구현 계획 참조 금지)
593
- - 딱 통과할 만큼만 (over-engineering 금지)
594
- - 테스트 수정 금지
595
- - 다른 테스트 우연히 통과시키지 않음
596
-
597
- ### REFACTOR (개선)
598
- - 모든 테스트 통과 상태에서만 시작
599
- - 새 기능 추가 금지 (새 RED 필요)
600
- - 테스트 assertion 변경 금지
601
- - 끝난 후에도 모든 테스트 통과
602
-
603
- ### Metric Gaming 감지 체크리스트
604
- | 패턴 | 징후 | gaming 이유 |
605
- |------|------|------------|
606
- | No-assertion | assert 없이 호출만 | 커버리지만 올림 |
607
- | Tautological | `!= null` (null 불가능한 곳) | 항상 통과 |
608
- | Pre-passing | 코드 작성 후 테스트 | RED 안 봄 |
609
- | Logic in test | if/for in test body | 테스트에 버그 유입 |
610
- | Shared state | 순서 의존 | 비재현성 |
611
-
612
- ---
613
-
614
- ## 21. Test Quality Scoring Rubric (0-100)
615
-
616
- 10개 차원 × 0-10점:
617
- 1. 테스트 네이밍 명확성
618
- 2. AAA 구조 (Arrange/Act/Assert)
619
- 3. 단일 Act per test
620
- 4. Assertion 구체성
621
- 5. Assertion 밀도 (1-3개 적정)
622
- 6. 테스트 격리성
623
- 7. 순서 독립성
624
- 8. Mock 규율 (외부 의존만)
625
- 9. 테스트 내 로직 없음
626
- 10. Mutation score
627
-
628
- 해석: 0-49 비신뢰, 50-69 기본, 70-84 양호, 85-100 고신뢰
629
-
630
- ### Spec-Guardian Leakage 탐지 규칙
631
- 금지: class/type 이름, 메서드명, DB 테이블, API 경로, HTTP verb, 프레임워크 용어, 데이터 구조, 파일 경로, 에러 코드/예외 이름, 테스트 프레임워크 용어
632
- 이식성 테스트: "다른 언어/스택으로 구현해도 Given/When/Then 한 줄도 안 바꿔도 되는가?"
633
-
634
- ### AC Quality Scoring (0-12)
635
- 6개 차원 × 0-2점: 단일 행동, 도메인 언어, 이해관계자 명확성, 이식성, 구체적 예시, 독립성
636
- 0-5 거부, 6-9 수정, 10-12 승인
637
-
638
- ---
639
-
640
- ## 22. Property-Based Testing 흡수
641
-
642
- ### 핵심 원칙
643
- ```
644
- GIVEN ANY <임의 입력, 제약 조건 충족>
645
- WHEN <함수 호출 또는 액션>
646
- THEN <조건이 항상 성립>
647
- ```
648
- "ANY"와 "ALWAYS/NEVER"로 보편적 검증 — 특정 입출력 쌍이 아닌 불변 조건 검증
649
-
650
- ### Property 식별 체크리스트
651
- - [ ] 핵심 불변 조건 식별 완료
652
- - [ ] 추상적 표현 (특정 입출력 아님)
653
- - [ ] 수학적으로 건전
654
- - [ ] 완전성 검증 (버그를 잡을 만큼 충분한 property)
655
- - [ ] 과잉 명세 없음
656
- - [ ] 보편 양화사 사용 ("모든", "항상", "절대 ~아님")
657
-
658
- ### 언어별 도구
659
- | 언어 | 프레임워크 | 핵심 기능 |
660
- |------|-----------|----------|
661
- | JS/TS | fast-check | composable arbitraries, 자동 shrinking, runner 무관 |
662
- | Python | Hypothesis | @given 데코레이터, st.composite, pytest 통합 |
663
- | Rust | proptest | ProptestConfig, 전략 조합 |
664
- | Java | jqwik | @Property, @ForAll |
665
-
666
- ### Shrinking (최소 반례 탐색)
667
- 실패 시 자동으로 최소 재현 케이스 생성 — 디버깅 효율 극대화
668
- fast-check: 통합 shrinking (별도 함수 불필요)
669
- Hypothesis: 자동 최소화 + 실패 DB 저장
670
-
671
- ### rlp-desk 적용
672
- - test-spec에 "Property Tests" 선택적 섹션 추가
673
- - 순수 함수/알고리즘/데이터 변환에 property 정의 권장
674
- - Verifier가 property test 존재 여부 + invariant 건전성 체크
675
-
676
- 출처: fast-check.dev, hypothesis.works, dubzzz/fast-check, laurigates/claude-plugins
677
-
678
- ---
679
-
680
- ## 23. Visual/Accessibility/E2E 스킬 흡수
681
-
682
- ### Visual Regression Testing
683
- - Playwright + screenshot 비교 (336 installs — 가장 인기 스킬)
684
- - pixel diff threshold 설정 (기본 5%, 엄격 1%)
685
- - 실패 시 before/after 스크린샷 증거 캡처
686
- - CI에서 자동 실행 가능
687
-
688
- ### E2E Testing 5-Dimension Scoring
689
- | 차원 | 0 (나쁨) | 1 | 2 (좋음) |
690
- |------|---------|---|---------|
691
- | 셀렉터 | CSS class | data-testid | semantic role |
692
- | 독립성 | 공유 상태 | 약한 의존 | 완전 격리 |
693
- | 안정성 | 고정 timeout | 부분 intelligent wait | 완전 intelligent wait |
694
- | 범위 | E2E에서 unit 로직 | 핵심 워크플로우 | 피라미드 정렬 |
695
- | 데이터 | 하드코딩 | 부분 동적 | 자동 정리 |
696
-
697
- ### E2E 체크리스트
698
- - [ ] Semantic 셀렉터 (role, label, testid)
699
- - [ ] Page Object 패턴
700
- - [ ] 외부 API mock
701
- - [ ] 병렬 실행
702
- - [ ] 실패 시 스크린샷/비디오 캡처
703
- - [ ] 테스트 데이터 정리
704
- - [ ] E2E에서 edge case 피하기 (unit에서 처리)
705
- - [ ] 크로스 브라우저
706
- - [ ] 접근성 검증
707
- - [ ] CI/CD 통합
708
-
709
- 출처: manutej/luxor-claude-marketplace, proffesor-for-testing/agentic-qe, thapaliyabikendra/ai-artifacts
710
-
711
- ---
712
-
713
- ## 24. Traceability & Audit 스킬 흡수
714
-
715
- ### Traceability Matrix 패턴
716
- **cumulative tagging (aidoc-flow-framework):**
717
- ```
718
- @brd: BRD.01.01.30 → 비즈니스 요구사항
719
- @prd: PRD.01.01.30 → 제품 요구사항
720
- @code: CODE.01.01.30 → 구현
721
- ```
722
- 모든 아티팩트에 상위 레이어 태그 누적 → 끊김 없는 감사 체인
723
-
724
- **spec-compliance-validator:**
725
- frame concerns → acceptance criteria → tests 양방향 연결
726
- Design by Contract 강제, 위반 테스트 필수
727
-
728
- ### Pre-Push 10-Phase Audit (codebase-audit-pre-push)
729
- 1. 정크 파일 제거
730
- 2. .gitignore 검증
731
- 3. 소스 코드 분석 (dead code, magic number, debug 문)
732
- 4. 보안 검사 **(ZERO-TOLERANCE: 하드코딩 시크릿, SQL injection)**
733
- 5. 확장성 평가 (N+1 쿼리, 미인덱스, 메모리 누수)
734
- 6. 아키텍처 리뷰
735
- 7. 성능 최적화
736
- 8. 문서 완전성
737
- 9. 테스트 커버리지
738
- 10. 최종 회귀 검증
739
-
740
- CRITICAL blocker: 하드코딩 시크릿, SQL injection, 미보호 auth, 스택트레이스 노출
741
-
742
- ### 12-Attack-Surface Security (repo-sentinel)
743
- 0-12번 공격 표면 × 심각도(CRITICAL/HIGH/MEDIUM/LOW)
744
- 4-Stage DAG: 민감 자산 → 법적 준수 → 공개 표면 → 릴리스
745
-
746
- ### Drift Detection
747
- SHA-256 해시 기반 상위 문서 변경 감지
748
- .drift_cache.json에 파일 해시 + 수정 시간 + 리뷰 이력
749
-
750
- ### rlp-desk 적용
751
- - test-spec에 Traceability Matrix 섹션 (US→AC→Test→Evidence)
752
- - Verifier가 traceability 완전성 체크 (연결 안 된 AC → FAIL)
753
- - 보안 체크리스트를 Verifier prompt에 포함 (시크릿, injection)
754
-
755
- 출처: vladm3105/aidoc-flow-framework, knowlet/skills, sickn33/antigravity-awesome-skills, mathews-tom/praxis-skills
756
-
757
- ---
758
-
759
- ## 25. 추가 외부 자료
760
-
761
- ### 기업 QE 패턴
762
- | 기업 | 패턴 | 핵심 |
763
- |------|------|------|
764
- | Spotify | Testing Honeycomb | 마이크로서비스: integration 중심 (unit 아님), 서비스 경계에서 테스트 |
765
- | Stripe | Testing 2.0 | 결정적 시뮬레이션, ML 테스트 생성, 지속적 장애 주입, property 기반, 100% 재현 |
766
- | Shopify | 5-Flow Load Test | browsing, admin, flash sale, API, headless + Game Day chaos |
767
-
768
- ### Contract-First 도구
769
- | 도구 | 입력 | 방식 |
770
- |------|------|------|
771
- | Schemathesis | OpenAPI/GraphQL 스키마 | property-based 자동 생성 — zero per-endpoint 유지보수 |
772
- | Dredd | OpenAPI | example-based, hook 지원 |
773
- | Microcks | AsyncAPI/OpenAPI/gRPC | mock + conformance test 동시 |
774
- | Pact (Message) | 이벤트 계약 | consumer-driven, Kafka/SQS/RabbitMQ |
775
- | Specmatic | AsyncAPI | 실행 가능 계약 |
776
-
777
- ### 비기능 테스트 템플릿
778
- **Load (k6):** smoke(2VU 1m) → load(ramping 100VU) → stress(300 arrival/s) → soak(50/s 4h)
779
- **Chaos Game Day:** 가설 → 폭발 반경 → 사전 체크리스트 → 실험 단계 → 사후 분석
780
- **Security (OWASP):** 11 카테고리 89 테스트, ZAP CI 자동 스캔 + 분기별 수동 펜테스트
781
- **Metamorphic Testing:** 입출력 관계 검증 (정확한 값이 아닌), AI 시스템 44편 연구 191 MR, 18% 실패율
782
-
783
- ### 추가 GitHub 레포
784
- | 레포 | 용도 |
785
- |------|------|
786
- | schemathesis/schemathesis | OpenAPI property-based 테스트 |
787
- | dastergon/awesome-chaos-engineering | chaos engineering 리소스 목록 |
788
- | t3l3machus/OWASP-Testing-Guide-Checklist | OWASP 89 테스트 체크리스트 |
789
- | bregman-arie/sre-checklist | SRE 체크리스트 |
790
-
791
- ### 추가 스킬 (skills.sh)
792
- | 스킬 | 설치수 | 용도 |
793
- |------|--------|------|
794
- | playwright-visual-testing | 336 | 시각 회귀 테스트 |
795
- | fast-check/javascript-testing-expert | 61 | property-based (공식 fast-check 레포!) |
796
- | hypothesis-testing | 60 | Python property-based |
797
- | trace-check | 47 | 요구사항 추적성 |
798
- | codebase-audit-pre-push | 37 | 10-phase 코드 감사 |
799
- | qe-visual-accessibility | 28 | 시각+접근성 테스트 |
800
- | repo-sentinel | 22 | 12-표면 보안 감사 |
801
- | spec-compliance-validator | 9 | 스펙 준수 검증 |
802
-
803
- ---
804
-
805
- ## 26. 학술 논문 — AI 코드 검증
806
-
807
- ### 핵심 논문
808
-
809
- | 논문 | 저자 | 연도 | 핵심 기여 | 출처 |
810
- |------|------|------|----------|------|
811
- | TDAD: Test-Driven AI Agent Definition | Tzafrir Rehan | 2026 | 행동 명세→실행 가능 테스트 컴파일. anti-gaming 3중 장치: visible/hidden test, semantic mutation, spec evolution | arXiv 2603.08806 |
812
- | TDAD: Reducing Code Regressions via Graph-Based Impact Analysis | Alonso, Yovine, Braberman | 2026 | 소스→테스트 의존성 그래프. regression 70% 감소(6.08%→1.82%). 일반 TDD 지시는 오히려 악화(9.94%) | arXiv 2603.17973 |
813
- | TOGLL: Correct and Strong Test Oracle Generation with LLMs | Hossain, Dwyer | 2024 (ICSE 2025) | LLM 기반 oracle 생성. 3.8x 더 정확한 assertion, 1023 unique bugs 탐지 | arXiv 2405.03786 |
814
- | Test Oracle Automation in the Era of LLMs | Molina et al. | 2024 (TOSEM 2025) | LLM oracle이 기존 SOTA 초과 — 종합 서베이 | arXiv 2405.12766 |
815
- | AutoSpec: Automated Specification Synthesis | Wen et al. | 2024 | ACSL 어노테이션(loop invariant, pre/post condition) 자동 합성 | arXiv 2404.00762 |
816
- | AgentGuard: Runtime Verification of AI Agents | Koohestani | 2025 (ASE) | 비침습 검사 레이어. Adaptive MDP + 확률적 모델 체킹 | arXiv 2509.23864 |
817
- | CodeHalu: Code Hallucinations in LLMs | Tian et al. | 2024 (AAAI 2025) | 4가지 환각 유형(mapping, naming, resource, logic). 8883 샘플 벤치마크 | arXiv 2405.00253 |
818
- | Detecting Hallucinations via Deterministic AST | — | 2026 (FORGE) | 비실행 AST 분석. F1=0.934, 77% 자동 교정 | arXiv 2601.19106 |
819
- | Mutation-Guided Test Generation at Meta | Foster, Harman et al. | 2025 | 10,795 Kotlin 클래스, 9095 mutant, 73% 테스트 수용률. Messenger/WhatsApp 배포 | arXiv 2501.12862 |
820
- | Comprehensive Study on LLMs for Mutation Testing | Wang et al. | 2024 | GPT-4o 93.4% fault detection. LLM mutant가 실제 버그에 111% 더 가까움 | arXiv 2406.09843 |
821
- | Metamorphic Testing (foundational) | T.Y. Chen et al. | 1998 | oracle 문제 해결. metamorphic relations = 다중 입력 간 필요 속성 | HKUST-CS98-01 |
822
- | Towards Verified AI | Seshia, Sadigh, Sastry | 2016/2022 | 5가지 도전+5가지 원칙. VerifAI, Scenic 도구 | arXiv 1606.08514 |
823
-
824
- ### TDAD anti-gaming 3중 장치 (rlp-desk 흡수 대상)
825
- 1. **Visible/Hidden test split** — Worker가 볼 수 있는 테스트 + 볼 수 없는 테스트 분리
826
- 2. **Semantic mutation testing (MutationSmith)** — 프롬프트 변이체 생성 → 테스트가 잘못된 행동을 잡는지 검증
827
- 3. **Spec evolution scenarios** — 명세 변경 시 기존 테스트가 regression 감지하는지 검증
828
-
829
- 결과: 92% v1 성공, 97% hidden pass rate, 86-100% mutation score
830
-
831
- ### 핵심 발견: 일반 TDD 지시는 오히려 해롭다
832
- TDAD 두 번째 논문: 일반적 "TDD를 따르세요" 지시 → regression이 6.08%에서 **9.94%로 악화**.
833
- 의존성 그래프 기반 컨텍스트 정보 제공 시 → **1.82%로 감소**.
834
- → Worker에게 "TDD 해" 보다 "이 파일 변경 시 이 테스트들이 영향받음"이 효과적.
835
-
836
- ---
837
-
838
- ## 27. 정형 방법론
839
-
840
- | 방법론 | 창시자 | 연도 | 핵심 | rlp-desk 적용 |
841
- |--------|--------|------|------|--------------|
842
- | V-Model | — | 1980s | 개발 단계↔테스트 단계 1:1 매핑. Verification(올바르게 만들었나) vs Validation(올바른 것을 만들었나) | test-spec에 V&V 구분 |
843
- | STAMP/STPA | Nancy Leveson (MIT) | 2004 | 안전을 동적 제어 문제로 봄. unsafe control action 식별 | 고위험 US에 STPA 분석 |
844
- | Cleanroom SE | Harlan Mills (IBM) | 1987 | 결함 예방 > 결함 제거. 수학적 함수로서의 소프트웨어. 사용 기반 통계 테스트 → MTTF 인증 | Verifier의 독립 검증 철학 |
845
- | Design by Contract | Bertrand Meyer | 1986 | precondition, postcondition, class invariant. client-supplier 계약 | AC를 contract로 형식화 |
846
- | N-Version Programming | Chen, Avizienis | 1977 | 동일 명세 → 독립 구현 N개 → 다수결. consensus 기반 결함 탐지 | consensus verification 이론적 기반 |
847
- | Metamorphic Testing | T.Y. Chen | 1998 | oracle 없이 검증 — 다중 실행 간 관계(MR) 검증 | property-based testing과 결합 |
848
-
849
- ### Design by Contract → rlp-desk AC 강화
850
- ```
851
- precondition: Given (입력 조건이 충족될 때)
852
- postcondition: Then (결과가 이 조건을 만족해야 함)
853
- invariant: 항상 성립하는 조건 (상태 불변식)
854
- ```
855
- AC를 이 3요소로 분해하면 "속일 수 없는 AC"가 자연스럽게 도출됨.
856
-
857
- ---
858
-
859
- ## 28. 산업 표준 (추가)
860
-
861
- | 표준 | 범위 | 핵심 | 출처 |
862
- |------|------|------|------|
863
- | IEC 61508 | 기능 안전 (전 산업) | SIL 1-4 리스크 등급, Part 1-4 규범+Part 5-7 가이드 | IEC |
864
- | ISO/IEC/IEEE 29119 | 소프트웨어 테스트 | 5개 파트(개념, 프로세스, 문서, 기법, 키워드). 가장 포괄적 테스트 표준 | ISO |
865
- | ISO/IEC 42001 | AI 관리 시스템 | 세계 최초 AI MS 표준 (2023). PDCA 방법론, 리스크 관리, 인증 가능 | ISO |
866
- | NIST AI RMF 1.0 | AI 리스크 관리 | 자발적 프레임워크. Govern→Map→Measure→Manage. 240+ 기관 참여 | NIST |
867
- | NIST SP 800-53 r5 | 보안 컨트롤 | 20개 패밀리 1000+ 컨트롤. 클라우드/IoT 포함. Update 1 (2024) | NIST CSRC |
868
-
869
- ---
870
-
871
- ## 29. 테스팅 철학 / 기초 저작
872
-
873
- | 저작 | 저자 | 연도 | 핵심 원칙 |
874
- |------|------|------|----------|
875
- | The Art of Software Testing | Glenford Myers | 1979/2011 | 성공적 테스트 = 에러를 찾는 테스트. 완전 테스트는 불가능 |
876
- | Lessons Learned in Software Testing | Kaner, Bach, Pettichord | 2002 | 293개 경험 기반 교훈. 맥락 중심 방법론. 위험 기반+탐색적 테스트 |
877
- | Growing OO Software, Guided by Tests | Freeman, Pryce | 2009 | Double Loop TDD (외부 acceptance + 내부 unit). London-style mock |
878
- | Rapid Software Testing | James Bach, Michael Bolton | 진행중 | 인간 중심. 경량 휴리스틱. "빠른"이 아니라 "낭비 제거" |
879
- | Testing vs Checking | Michael Bolton | 2009/2013 | Checking=기존 믿음 확인(자동화 가능). Testing=탐구(인간 판단 필요) |
880
- | Continuous Delivery | Humble, Farley | 2010 | 배포 파이프라인 = 자동화된 게이트. 체크인→릴리스 전 과정 |
881
- | Release It! | Michael Nygard | 2007/2018 | 안정성 패턴: Circuit Breaker, Bulkhead, Timeout, Fail Fast, Back Pressure |
882
- | Testing on the Toilet | Google | 2007~ | DAMP over DRY. 테스트는 읽기 쉬워야. 수백 편의 실전 조언 |
883
-
884
- ### Bolton의 "Testing vs Checking" → rlp-desk에 적용
885
- - **Checking** (자동화 가능) = L1 unit test, L2 integration, lint, type check
886
- - **Testing** (인간 판단 필요) = 탐색적 테스트, UX 검증, 비즈니스 로직 타당성
887
- - Verifier가 하는 건 주로 checking. 진짜 testing은 사용자가 해야 함.
888
- - → Verifier verdict에 "checked" vs "tested" 구분 필요할 수 있음
889
-
890
- ---
891
-
892
- ## 30. 현대 테스팅 원칙
893
-
894
- ### Modern Testing 7 Principles (Alan Page, Brent Jensen)
895
- 1. 비즈니스 개선이 최우선
896
- 2. Lean Thinking + Theory of Constraints로 팀 가속
897
- 3. 안전망이 아닌 지속적 개선의 힘
898
- 4. 팀의 품질 문화에 깊이 관심
899
- 5. 고객만이 품질을 판단할 수 있음
900
- 6. 데이터를 광범위하게 활용
901
- 7. 팀 전체에 테스트 능력 확산
902
-
903
- ### Shift Left + Shift Right
904
- - **Shift Left**: 테스트를 개발 초기로 이동 → 비용 절감, 품질 향상
905
- - **Shift Right**: 프로덕션에서 테스트 → 실제 사용자 행동, 카나리, A/B, 피처 플래그
906
- - 양방향 결합: 프로덕션 텔레메트리가 개발 테스트 전략에 피드백
907
-
908
- ### Chaos Engineering 5원칙 (principlesofchaos.org)
909
- 1. 정상 상태 행동에 대한 가설 수립
910
- 2. 실세계 이벤트 변경 (하드웨어 장애, 트래픽 급증)
911
- 3. 프로덕션에서 실험 실행
912
- 4. 자동화된 지속 실험
913
- 5. 폭발 반경 최소화
914
-
915
- ### Observability-Driven Testing
916
- - 시스템 텔레메트리(로그, 메트릭, 트레이스)로 테스트 시나리오 유도 및 검증
917
- - OpenTelemetry 표준. 마이크로서비스/분산 시스템에 필수
918
-
919
- ---
920
-
921
- ## 31. 기업 QE 패턴 (추가)
922
-
923
- | 기업 | 핵심 혁신 | 규모 | 출처 |
924
- |------|----------|------|------|
925
- | Netflix | FIT(장애 주입) + ChAP(chaos 자동화) + Kayenta(카나리 통계 분석) | 수억 구독자 | netflixtechblog.com |
926
- | Google | Mutation testing, SRE Ch.17 테스트, TotT, 80/15/5 피라미드 | 수십억 테스트/일 | testing.googleblog.com |
927
- | Meta | Sapienz(자동 테스트 설계) + SapFix(자동 패치) + Rich-State(ICSE 2024: +38% 커버리지, +115% 결함) | 수만 테스트/일 | engineering.fb.com |
928
- | Uber | BITS(E2E 샌드박스, 사고 71% 감소) + Ballast(적응형 부하) + Testopedia(flaky 관리, 600K 테스트) | 600K Go 테스트 | uber.com/blog |
929
- | Microsoft | 1ES CloudTest + Flaky 관리(49K flaky 탐지) + L0-L3 분류 | 100+ 제품팀 | devblogs.microsoft.com |
930
- | Amazon | One-box 배포 + gamma 환경 + staggered rollout + 자동 롤백 | 글로벌 | aws.amazon.com/builders-library |
931
- | Slack | Project Cornflake: 자동 flaky 탐지+억제. pass rate 20%→96%. 553시간 절약 | 1185 자동 PR | slack.engineering |
932
- | Atlassian | Flakinator: 22K 빌드 복구, 7K unique flaky 탐지. 스택 무관 | 수백만 실행/일 | atlassian.com/blog |
933
- | Antithesis | 결정적 시뮬레이션 테스트. 수년 프로덕션을 수시간에. Jane Street $105M 투자 | $105M Series A | antithesis.com |
934
-
935
- ### DORA 2024-2025 핵심 발견
936
- - AI 역설: 개인 생산량 증가(21% 더 많은 task, 98% 더 많은 PR) → 조직 전달 속도 1.5% 감소, 안정성 7.2% 감소
937
- - "AI는 이미 있는 것을 증폭시킨다" — 프로세스가 좋으면 좋아지고, 나쁘면 나빠짐
938
- - 고품질 문서를 가진 팀이 목표 달성 2x 더 높음
939
- - 이상적 CFR(Change Failure Rate): 0-2% (8.5%만 달성)
940
- - 출처: dora.dev/research/2024, dora.dev/research/2025
941
-
942
- ---
943
-
944
- ## 32. 테스트 Anti-Pattern 전체 카탈로그 (23종)
945
-
946
- | # | 패턴 | 설명 |
947
- |---|------|------|
948
- | 1 | Liar | assertion 없이 항상 통과 |
949
- | 2 | Giant | 수천 줄, 수십 케이스 한 파일 |
950
- | 3 | Mockery | mock만 테스트 |
951
- | 4 | Inspector | 캡슐화 위반, 리팩터시 깨짐 |
952
- | 5 | Excessive Setup | 설정 수백 줄 |
953
- | 6 | Slow Poke | 극단적으로 느린 단위 테스트 |
954
- | 7 | Happy Path | 성공만 테스트, boundary/exception 없음 |
955
- | 8 | Generous Leftovers | 정적 메모리/DB에 상태 남김 → 연쇄 실패 |
956
- | 9 | Local Hero | 특정 개발 환경에서만 통과 |
957
- | 10 | Nitpicker | 관심 없는 부분까지 전체 출력 비교 |
958
- | 11 | Secret Catcher | assertion 없이 예외 발생에 의존 |
959
- | 12 | Greedy Catcher | 아무 예외나 통과 (의도된 예외 아닐 수 있음) |
960
- | 13 | Sequencer | 비순서 데이터에 순서 의존 |
961
- | 14 | Hidden Dependency | 미문서화된 외부 의존성 |
962
- | 15 | Enumerator | Test1, Test2, Test3 — 의미 없는 이름 |
963
- | 16 | Stranger | 프로덕션 코드와 무관한 것 테스트 |
964
- | 17 | OS Evangelist | 특정 OS에서만 통과 |
965
- | 18 | Success Against All Odds | 정확히 검증하려는 게 아니라 통과하도록 작성 |
966
- | 19 | Free Ride | 기존 테스트에 assertion 추가 (새 테스트 안 만듦) |
967
- | 20 | The One | 전체 클래스를 단일 테스트로 |
968
- | 21 | Peeping Tom | 행동 아닌 구현 상세 테스트 |
969
- | 22 | Flickering | 간헐적 pass/fail (flaky) |
970
- | 23 | Dead Tree | 실행 안 되거나 주석 처리된 테스트 |
971
-
972
- 학술 연구: **480개 distinct test smell** 카탈로그 (2024 SBQS), 86% JUnit 테스트가 최소 1개 smell 보유
973
-
974
- ---
975
-
976
- ## 33. Flaky Test 관리
977
-
978
- | 수치 | 출처 |
979
- |------|------|
980
- | flaky 경험 팀 비율: 10%(2022)→26%(2025) | testdino.com 벤치마크 |
981
- | flaky 탐지 AI 시장: $512M (2024) | 산업 리포트 |
982
- | 가장 흔한 원인: race condition > 네트워크 > 외부 의존성 | ACM 서베이 |
983
- | Google: 1.5%의 테스트가 flaky, 전체 실패의 84%가 flaky 원인 | Google Testing Blog |
984
- | FlakyGuard(ASE 2025): 47.6% 자동 수리, 51.8% 수용 | arXiv 2511.14002 |
985
-
986
- ---
987
-
988
- ## 34. Emerging 패러다임
989
-
990
- ### Antithesis — 결정적 시뮬레이션 테스트 (DST)
991
- - 모든 비결정성(클럭, 스레드 인터리빙, 난수)을 결정적으로 만듦 → 완벽 재현
992
- - property-based + fuzzing + 결정적 시뮬레이션 결합
993
- - 수년 프로덕션을 수시간에 시뮬레이션
994
- - Jane Street, Ethereum (The Merge 검증), MongoDB 사용
995
- - $105M Series A (2025, Jane Street 리드)
996
-
997
- ### AI 코드 테스트 자동 생성 비교
998
- | 도구 | 커버리지 | 컴파일 정확도 | 방식 |
999
- |------|---------|------------|------|
1000
- | Diffblue Cover | 50-69% | ~99% | 강화학습 기반 Java |
1001
- | Copilot | 5-29% | ~65% | LLM 기반 |
1002
- | Claude Code | 7-17% | — | LLM 기반 |
1003
- | Qodo Cover | 프로젝트별 상이 | 높음 | agentic 기반 |
1004
-
1005
- ### Contract Testing 심화
1006
- | 유형 | 설명 | 도구 |
1007
- |------|------|------|
1008
- | Consumer-Driven (CDCT) | 소비자 기대에서 시작, 실제 사용 행동만 테스트 | Pact, Spring Cloud Contract |
1009
- | Provider-Driven | 제공자 스키마 기반, 피드백 루프 없음 | OpenAPI, Swagger |
1010
- | Bidirectional (BDCT) | 양쪽 계약 게시 → 제3자 매칭 | PactFlow |
1011
- | Message Pact | 비동기 이벤트 (Kafka, RabbitMQ) | Pact Message |
1012
- | Schema Registry | Avro/Protobuf/JSON Schema 호환성 강제 | Confluent, AWS Glue |
1013
-
1014
- ### 추가 스킬 (skills.sh)
1015
- | 스킬 | 설치수 | 용도 |
1016
- |------|--------|------|
1017
- | api-contract-testing | 283 | API 계약 테스트 |
1018
- | static-code-analysis | 209 | 정적 분석 |
1019
- | lint-and-validate | 148 | 린트+검증 |
1020
- | chaos-engineer | 70 | chaos engineering |
1021
- | qa-resilience | 63 | QA 복원력 |
1022
- | chaos-engineering-resilience | 61 | chaos+복원력 |
1023
- | code-review | 51 | 코드 리뷰 |
1024
- | contract-tester | 49 | 계약 테스트 |
1025
-
1026
- ---
1027
-
1028
- ## 35. 테스트 전략 프레임워크 / 휴리스틱
1029
-
1030
- | 프레임워크 | 저자 | 핵심 | 출처 |
1031
- |-----------|------|------|------|
1032
- | PRISMA | Erik van Veenendaal | 리스크 기반 우선순위. impact × likelihood 매트릭스 → 테스트 배분 | ctqb.org PDF |
1033
- | HTSM v6.3 | James Bach | 4 카테고리 휴리스틱: 기법, 프로젝트 요소, 제품 요소, 품질 기준 | satisfice.com (2024.12) |
1034
- | SBTM | Jon & James Bach | 시간 박스 탐색 세션(60-120분) + PROOF 디브리프 | satisfice.com |
1035
- | ACC | James Whittaker/Google | Attribute(형용사) × Component(명사) × Capability(동사) 교차 매트릭스 | code.google.com |
1036
- | TPA | TMAP | Function Point → Test Point. effort = size × strategy × productivity | tmap.net |
1037
- | Test Heuristics Cheat Sheet | Hendrickson, Lyndsay, Emery | 2페이지 입력 유형별 공격 목록. Explore It! 부록 | ministryoftesting.com |
1038
- | Little Black Book on Test Design | Rikard Edgren | 테스트 설계 기법 + 아이디어 무료 e-book | thetesteye.com PDF |
1039
-
1040
- ### HTSM → rlp-desk brainstorm 흡수
1041
- US 작성 시 4 카테고리로 검증 관점 체크:
1042
- 1. **기법**: 어떤 테스트 기법이 적합한가? (EP, BVA, state transition, 탐색적)
1043
- 2. **프로젝트**: 제약 조건은? (시간, 도구, 환경, 인력)
1044
- 3. **제품**: 어떤 품질 속성이 중요한가? (기능, 성능, 보안, 사용성)
1045
- 4. **품질 기준**: pass/fail 기준은 정량적인가?
1046
-
1047
- ---
1048
-
1049
- ## 36. 추가 테스트 기법
1050
-
1051
- ### Combinatorial/Pairwise Testing (NIST ACTS)
1052
- - NIST 연구: 대부분 결함은 1-6개 파라미터 상호작용에서 발생
1053
- - ACTS 도구: t-way covering array 생성 (t=1~6), 제약 조건 지원
1054
- - 출처: csrc.nist.gov/projects/automated-combinatorial-testing-for-software
1055
-
1056
- ### Model-Based Testing (GraphWalker)
1057
- - 시스템을 directed graph로 모델링 → 경로 생성 알고리즘으로 테스트 시퀀스
1058
- - 출처: graphwalker.github.io
1059
-
1060
- ### Fuzzing
1061
- | 도구 | 대상 | 특징 |
1062
- |------|------|------|
1063
- | OSS-Fuzz (Google) | C/C++, Rust, Go, Python, Java, JS | 13,000+ 취약점, 50,000+ 버그 발견 |
1064
- | AFL++ | C/C++ | 커버리지 기반, AFL 후속 |
1065
- | cargo-fuzz | Rust | libFuzzer 래퍼 |
1066
- | Bolero | Rust | property testing + fuzzing 통합 — 하나의 테스트로 양쪽 실행 |
1067
-
1068
- ### Symbolic Execution
1069
- | 도구 | 대상 | 용도 |
1070
- |------|------|------|
1071
- | KLEE | LLVM | 모든 실행 경로 추론 → 높은 커버리지 입력 생성 |
1072
- | angr | 다중 아키텍처 바이너리 | 바이너리 분석 + symbolic execution |
1073
- | Mythril | Ethereum EVM | 스마트 컨트랙트 reentrancy, overflow 탐지 |
1074
-
1075
- ### Differential Testing
1076
- - 동일 명세의 복수 구현 비교 → 불일치 = 버그
1077
- - oracle 없이 검증 가능
1078
- - DLLens(2024-2025): LLM으로 딥러닝 라이브러리 차분 테스트 강화
1079
-
1080
- ### Approval/Snapshot Testing
1081
- - ApprovalTests: 15+ 언어 지원. 복잡한 출력(PDF, XML, 이미지)의 golden master 비교
1082
- - pdf-visual-diff: PDF → PNG 변환 후 pixel 비교
1083
- - 출처: approvaltests.com
1084
-
1085
- ---
1086
-
1087
- ## 37. API 테스트 도구
1088
-
1089
- | 도구 | 방식 | 강점 |
1090
- |------|------|------|
1091
- | Hurl | plain text HTTP runner (Rust) | chaining, JSONPath assertion, CI 친화 |
1092
- | Karate | Gherkin-like DSL | API+mock+perf+UI 통합, glue code 불필요 |
1093
- | REST Assured | Java DSL | Hamcrest matchers, method chaining |
1094
- | Newman (Postman) | CLI collection runner | CI/CD 파이프라인, headless 실행 |
1095
- | Schemathesis | OpenAPI/GraphQL | property-based 자동 생성, zero per-endpoint 유지보수 |
1096
-
1097
- ### Hurl 예시 (rlp-desk test-spec에 적합)
1098
- ```hurl
1099
- GET https://api.example.com/users
1100
- HTTP 200
1101
- [Asserts]
1102
- jsonpath "$.users" count == 10
1103
-
1104
- POST https://api.example.com/users
1105
- {"name": "John"}
1106
- HTTP 201
1107
- [Captures]
1108
- user_id: jsonpath "$.id"
1109
-
1110
- GET https://api.example.com/users/{{user_id}}
1111
- HTTP 200
1112
- [Asserts]
1113
- jsonpath "$.name" == "John"
1114
- ```
1115
-
1116
- ---
1117
-
1118
- ## 38. DevOps/SRE 테스트 통합
1119
-
1120
- ### 배포 검증 패턴
1121
- | 패턴 | 설명 | 위험도 |
1122
- |------|------|--------|
1123
- | Smoke | 핵심 경로 테스트 | 최저 |
1124
- | Canary | 2-25% 트래픽 라우팅 + 메트릭 모니터링 | 중간 |
1125
- | Blue-Green | 동일 환경 2개, 한 번에 전환 | 중간 |
1126
- | Shadow | 프로덕션 트래픽 미러링 (사용자 무영향) | 최저 |
1127
-
1128
- ### Feature Flag 테스트
1129
- - 활성화/비활성화 양쪽 코드 경로 테스트 (37%만 체계적으로 수행)
1130
- - 플래그 서비스 불가 시 fallback 테스트
1131
- - 10개 플래그 = 1,024 상태 → 리스크 기반 조합 선택
1132
- - 90일 sunset 정책 → 플래그 부채 방지
1133
- - 출처: launchdarkly.com, yrkan.com
1134
-
1135
- ### DB 마이그레이션 테스트
1136
- - 스키마 검증: 컬럼, 제약조건, 인덱스, 기본값
1137
- - 데이터 무결성: FK 생존, 타입 정확도
1138
- - 롤백: undo 마이그레이션이 스키마를 깨끗이 복원
1139
- - 성능: 10K 행 2초 → 100M 행 4시간 가능 → 사전 측정
1140
- - Zero-downtime: Expand-Contract 패턴 (추가→마이그레이션→제거)
1141
- - `flyway check -drift`: 실제 DB vs 마이그레이션 이력 불일치 탐지
1142
-
1143
- ### Compliance as Code
1144
- | 도구 | 용도 |
1145
- |------|------|
1146
- | Chef InSpec | CIS, PCI DSS, SOC2 벤치마크 프로파일 실행 |
1147
- | OPA (Rego) | K8s admission, Terraform plan, API 인가 정책 |
1148
- | Terratest | Go로 실제 인프라 프로비저닝→검증→파괴 |
1149
- | Pulumi Test | TypeScript/Python/Go로 인프라 unit test |
1150
-
1151
- ---
1152
-
1153
- ## 39. 테스트 데이터 관리
1154
-
1155
- ### 팩토리 라이브러리
1156
- | 언어 | 라이브러리 | 특징 |
1157
- |------|-----------|------|
1158
- | Python | factory_boy | Django/SQLAlchemy, SubFactory |
1159
- | Ruby | FactoryBot | build_stubbed (DB 안 침) |
1160
- | JS/TS | Fishery | TypeScript-first, Thoughtbot |
1161
- | Any | Faker | 다국어 가짜 데이터 |
1162
-
1163
- Best practice: 결정적 seed → 재현 가능, fully random 금지, lint factory, `build` > `create`
1164
-
1165
- ### 데이터 마스킹 (GDPR)
1166
- - EDPB 2024: 마스킹 안 된 프로덕션 데이터 dev/test 사용 = GDPR Article 5(1)(a) 위반
1167
- - 2024-2025 벌금: 8M-22M EUR (약한 가명처리 대상)
1168
-
1169
- ### Testcontainers
1170
- - 테스트당 Docker 컨테이너 생성 → 자동 정리
1171
- - 고정 포트 금지 (CI 충돌), 이미지 버전 고정 (latest 금지)
1172
-
1173
- ---
1174
-
1175
- ## 40. 비전통 출력 테스트
1176
-
1177
- | 출력 유형 | 테스트 방법 | 도구 |
1178
- |----------|-----------|------|
1179
- | PDF | 페이지 → PNG 변환 → pixel diff | pdf-visual-diff, Applitools |
1180
- | Email | 가짜 SMTP 서버 → API로 수신 확인 | Mailpit (MailHog 대체), Mailtrap, MailSlurp |
1181
- | Webhook | unique URL에 수신 → payload 검사 | webhook.site, Beeceptor, Hookdeck |
1182
- | 로그 | caplog/structlog 캡처 → assert | pytest caplog, pytest-structlog |
1183
- | Cron | 로직 분리 → unit test + 스케줄 모니터링 | Cronitor |
1184
- | CSV/Excel/JSON | 생성 → 파싱 → 필드/행 assert | csv, openpyxl, JSON Schema |
1185
- | 설정 변경 | 스키마 검증 + 행동 테스트 | ctests (USENIX) |
1186
-
1187
- ---
1188
-
1189
- ## 41. 규제 산업 검증 프레임워크
1190
-
1191
- ### 의약품/제약 (GAMP 5)
1192
- 소프트웨어 카테고리별 검증 강도:
1193
- | Cat | 유형 | 리스크 | 검증 |
1194
- |-----|------|--------|------|
1195
- | 1 | 인프라 (OS, 방화벽) | 최저 | 설치 확인 |
1196
- | 3 | 비설정형 COTS | 중간 | 벤더 체크 + 리스크 기반 테스트 |
1197
- | 4 | 설정형 소프트웨어 (ERP) | 중상 | Cat3 + 프로세스/데이터 흐름 |
1198
- | 5 | 커스텀/비스포크 | 최고 | Cat4 + 공급자 감사 + 코드 리뷰 + unit test |
1199
-
1200
- → AI agent 적용: 단순 설정 변경 = Cat3, 복잡 통합 = Cat4, 신규 알고리즘 = Cat5
1201
-
1202
- ### IQ/OQ/PQ 3단계 검증
1203
- | 단계 | 질문 | AI agent 대응 |
1204
- |------|------|--------------|
1205
- | IQ (설치 검증) | 올바르게 설치됐나? | 환경 설정 검증 |
1206
- | OQ (운영 검증) | 올바르게 동작하나? | 기능 테스트 (L1+L2) |
1207
- | PQ (성능 검증) | 실제 조건에서 작동하나? | E2E + 부하 테스트 (L3+L4) |
1208
-
1209
- ### 자동차 (ISO 26262 ASIL)
1210
- | ASIL | 위험 | 커버리지 요구 |
1211
- |------|------|-------------|
1212
- | A | 최저 | statement coverage |
1213
- | B | 중간 | branch coverage |
1214
- | C | 높음 | branch + function/call |
1215
- | D | 최고 | MC/DC coverage |
1216
-
1217
- → AI agent 적용: 읽기 전용 = ASIL-A, 데이터 변경 = ASIL-B/C, 금융/보안 = ASIL-D
1218
-
1219
- ### SOTIF (ISO 21448) — AI agent에 직접 적용 가능
1220
- "정상 작동하지만 불충분한" 시나리오 분석:
1221
- | 영역 | 설명 |
1222
- |------|------|
1223
- | 알려진 안전 | 검증 완료 |
1224
- | 알려진 위험 | 완화 완료 |
1225
- | 미지의 안전 | 잔여 위험 수용 |
1226
- | 미지의 위험 | 시나리오 테스트로 축소해야 함 |
1227
-
1228
- → AI agent가 "설계되지 않은 상황"을 만났을 때 어떻게 되는지 명시적으로 테스트
1229
-
1230
- ### 금융 서비스
1231
- **SOX 4가지 테스트 방법:** Inquiry(질문) + Observation(관찰) + Inspection(검사) + Sampling(샘플링)
1232
- → AI agent: (1) 결정 로직 리뷰, (2) 실행 관찰, (3) 로그/산출물 검사, (4) 독립 재실행 비교
1233
-
1234
- **MiFID II 알고리즘 트레이딩 5가지 필수 테스트:**
1235
- | 테스트 | AI agent 대응 |
1236
- |--------|--------------|
1237
- | 지연 테스트 | API 지연 시 agent 행동 |
1238
- | 단절 테스트 | 서비스 장애 시 복구 |
1239
- | 오류 거래 | 롤백/취소 처리 |
1240
- | 가격 변동 스트레스 | 비정상 입력 시 행동 |
1241
- | 메시지율 스트레스 | 고동시성 행동 |
1242
- 스트레스 기준: **최근 6개월 최대치 × 2**
1243
-
1244
- ---
1245
-
1246
- ## 42. 보안 테스트 심화
1247
-
1248
- ### OWASP Testing Guide v4.2 — 91 테스트 (11 카테고리)
1249
- 정보 수집(10) + 설정 관리(8) + ID 관리(7) + 인증(10) + 인가(4) + 세션(8) + 데이터 검증(16) + 에러 처리(2) + 암호화(3) + 비즈니스 로직(9) + 클라이언트(12)
1250
-
1251
- ### STRIDE → 테스트 매핑
1252
- | 위협 | 보안 속성 | 테스트 |
1253
- |------|----------|--------|
1254
- | Spoofing | 인증 | 자격 증명 검증, 세션 토큰, 위장 시도 |
1255
- | Tampering | 무결성 | 체크섬, 디지털 서명, 비인가 수정 |
1256
- | Repudiation | 부인 방지 | 감사 추적 완전성, 로그 변조 탐지 |
1257
- | Info Disclosure | 기밀성 | 암호화, 접근 제어, 정보 유출 스캔 |
1258
- | DoS | 가용성 | 부하 테스트, 자원 고갈, rate limiting |
1259
- | Elevation | 인가 | 권한 경계 테스트, 역할 상승 시도 |
1260
-
1261
- ### CWE Top 25 (2024) — 상위 10
1262
- 1. XSS (CWE-79), 2. Out-of-bounds Write (CWE-787), 3. SQL Injection (CWE-89), 4. CSRF (CWE-352), 5. Path Traversal (CWE-22), 6. Out-of-bounds Read (CWE-125), 7. OS Command Injection (CWE-78), 8. Use After Free (CWE-416), 9. Missing Authorization (CWE-862), 10. Unrestricted File Upload (CWE-434)
1263
-
1264
- ---
1265
-
1266
- ## 43. 접근성 테스트 심화
1267
-
1268
- ### WCAG 2.2 — 4원칙 (POUR) + 86 성공 기준
1269
- - Perceivable, Operable, Understandable, Robust
1270
- - Level A (필수), AA (권장), AAA (이상)
1271
- - WCAG 2.2 신규 9개: Focus Not Obscured, Dragging Movements, Target Size, Consistent Help, Redundant Entry, Accessible Auth 등
1272
-
1273
- ### DHS Trusted Tester v5.0 — 20 테스트 절차
1274
- 키보드 접근, 폼, 링크/버튼, 이미지, 반복 콘텐츠, 구조, 언어, 대비, 테이블, 미디어 등
1275
-
1276
- ### EN 301 549 — WCAG 넘어선 요구사항
1277
- - 실시간 텍스트 500ms 이내, 자막 100ms 동기화, 터치 범위 380-1220mm, 대체 생체 인증
1278
-
1279
- ---
1280
-
1281
- ## 44. 국제화/지역화 테스트
1282
-
1283
- ### i18n 체크리스트
1284
- - UTF-8 전 계층 (DB, API, UI, 파일)
1285
- - 비라틴 스크립트 (아랍어, 중국어, 키릴)
1286
- - RTL 레이아웃 + 양방향 텍스트
1287
- - 텍스트 확장 (독일어 +20%, 일부 언어 +200-400%)
1288
- - 날짜/시간 (MM/DD vs DD/MM vs YYYY-MM-DD, 12h vs 24h)
1289
- - 소수점 (1,234.56 vs 1.234,56)
1290
- - 정렬 규칙 (독일어 ü, 스페인어 ñ)
1291
-
1292
- ### Pseudo-Localization 5가지 기법
1293
- | 기법 | 탐지 대상 |
1294
- |------|----------|
1295
- | Accented chars (a→ä) | 인코딩, 폰트 |
1296
- | 40% padding | 잘림, 오버플로우 |
1297
- | 구분자 ^...^ | 잘림, 문자열 결합 |
1298
- | 리소스 ID 해시 | 소스 위치 추적 |
1299
- | 다중 스크립트 padding | 폰트 fallback |
1300
-
1301
- ---
1302
-
1303
- ## 45. 프라이버시/GDPR 테스트
1304
-
1305
- ### 7가지 데이터 주체 권리 테스트
1306
- | 권리 | 테스트 |
1307
- |------|--------|
1308
- | 접근 | 고객이 보유 개인정보 전체를 요청/수신 가능? |
1309
- | 정정 | 부정확 데이터 수정 가능? |
1310
- | 삭제 | 삭제 요청 → 모든 시스템에서 완전 삭제? |
1311
- | 제한 | 특정 처리 제한 가능? |
1312
- | 이동성 | 읽기 가능 형식으로 내보내기? |
1313
- | 반대 | 처리(특히 마케팅) 거부 가능? |
1314
- | 자동 결정 | 자동 의사결정에 보호장치? |
1315
-
1316
- ### 8-Point QA 프레임워크
1317
- 데이터 최소화, 보안 처리, 접근 제어, 삭제/보존, 동의 관리, 이동성, 암호화/익명화, 로깅/모니터링
1318
-
1319
- ---
1320
-
1321
- ## 46. QE 도서 (2023-2026)
1322
-
1323
- | 도서 | 저자 | 연도 | 핵심 |
1324
- |------|------|------|------|
1325
- | Software Testing with Generative AI | Winteringham | 2025 | LLM으로 테스트 계획, 데이터 생성, UI 자동화, 탐색적 테스트 |
1326
- | AI and Software Testing | Rex Black et al. | 2022 | AI 신뢰성, ML 테스트, AI 기반 자동화. Independent Press Award 수상 |
1327
- | Guide to Software Quality Engineering | Pargaonkar | 2024 | 개발/테스트/QA 종합 가이드 |
1328
- | Full Stack Testing | Gayathri Mohan | 2022 | 10 카테고리 40+ 도구 |
1329
-
1330
- ---
1331
-
1332
- ## 47. 추가 스킬 (skills.sh — v3)
1333
-
1334
- | 스킬 | 설치수 | 용도 |
1335
- |------|--------|------|
1336
- | security-auditor | 336 | 보안 감사 |
1337
- | api-contract-testing | 283 | API 계약 테스트 |
1338
- | static-code-analysis | 209 | 정적 분석 |
1339
- | senior-secops | 204 | SecOps |
1340
- | lint-and-validate | 148 | 린트+검증 |
1341
- | performance-testing | 95 | 성능 테스트 |
1342
- | security-architect | 89 | 보안 아키텍처 |
1343
- | chaos-engineer | 70 | chaos engineering |
1344
- | qa-resilience | 63 | QA 복원력 |
1345
- | flyway-migrations | 62 | DB 마이그레이션 |
1346
- | load-test-builder | 57 | 부하 테스트 |
1347
- | audit-expert | 46 | 감사 |
1348
-
1349
- ---
1350
-
1351
- ## 48. 규제 산업 → AI agent 테스트 7가지 보편 패턴
1352
-
1353
- 1. **리스크 기반 강도 조절** (GAMP Cat1-5, ASIL A-D, SOX tiers)
1354
- → agent 액션을 리스크별 분류, 커버리지 비례 배분
1355
-
1356
- 2. **V-Model 추적성** (ASPICE SWE.1-6, IQ/OQ/PQ)
1357
- → 요구사항 → 테스트 → 결과 양방향 추적
1358
-
1359
- 3. **다중 방법 검증** (SOX 4방법, ISO 26262 5가지)
1360
- → 정적 분석 + 동적 테스트 + 수동 리뷰 + 모니터링
1361
-
1362
- 4. **시나리오 기반 안전 분석** (SOTIF 4분면, STRIDE 6위협)
1363
- → "미지의 위험" 영역 축소
1364
-
1365
- 5. **필수 감사 추적** (21 CFR Part 11 60+ 항목, SOX)
1366
- → 모든 agent 액션 who/what/when/why/prior-state 기록
1367
-
1368
- 6. **구체적 임계값 스트레스** (MiFID II: 6개월 최대 × 2)
1369
- → 과거 데이터 기반 방어 가능한 스트레스 공식
1370
-
1371
- 7. **버전별 배포 게이트** (MiFID II, GAMP 5, ASPICE)
1372
- → 특정 버전의 test+approval 없이 배포 불가
1373
-
1374
- ---
1375
-
1376
- ## 49. Best Practice 강제 — 레포 & 스킬 분석
1377
-
1378
- ### 핵심 발견: Vercel의 Rule Template 패턴이 gold standard
1379
-
1380
- **vercel-labs/agent-skills** (612+ installs, 원본):
1381
- - 66개 규칙 파일, 8개 우선순위 카테고리
1382
- - 각 규칙: title, impact(CRITICAL/HIGH/MEDIUM/LOW), tags, INCORRECT 코드, CORRECT 코드
1383
- - 핵심: "이것은 틀렸다(anti-pattern) → 이것이 맞다(pattern)" 대비로 강제
1384
-
1385
- ### 4가지 강제 패턴 (rlp-desk 흡수 대상)
1386
-
1387
- **Pattern A: Rule Template (Vercel)**
1388
- ```yaml
1389
- title: [규칙명]
1390
- impact: CRITICAL | HIGH | MEDIUM | LOW
1391
- tags: [카테고리]
1392
- ## Incorrect (anti-pattern + 코드)
1393
- ## Correct (올바른 패턴 + 코드)
1394
- ```
1395
- → rlp-desk: 프레임워크별 rule pack으로 test-spec에 참조 가능
1396
-
1397
- **Pattern B: Checklist Enforcement (affaan-m/everything-claude-code, 3.1K installs)**
1398
- 반드시 통과해야 하는 체크리스트:
1399
- - 함수 < 50줄, 파일 < 800줄, 중첩 ≤ 4단계
1400
- - 보안 8항목: 하드코딩 시크릿 없음, SQL injection 방지, XSS 방지, CSRF, rate limit
1401
- - 테스트 커버리지 ≥ 80% (비협상)
1402
- - TDD: RED→GREEN→REFACTOR
1403
- - `any` 금지 (`unknown` 사용), `console.log` 프로덕션 금지
1404
- → rlp-desk: Verifier가 체크리스트 통과 여부 확인
1405
-
1406
- **Pattern C: Test Anatomy Rules (goldbergyoni/javascript-testing-best-practices, 24K stars)**
1407
- 테스트 구조 강제:
1408
- - 3-part 테스트명: "[Unit] [Scenario] [Expected]"
1409
- - AAA 패턴: Arrange / Act (1줄) / Assert (1줄)
1410
- - Black-box만: public 메서드만 테스트
1411
- - 현실적 데이터: Faker 사용, "foo/bar" 금지
1412
- - 5가지 결과 테스트: 응답, 상태 변경, 외부 호출, 메시지, 관찰성
1413
- - Stub > Mock: mock 남용 방지
1414
- - 고정 fixture 금지: 테스트별 데이터 생성
1415
- → rlp-desk: Worker prompt에 테스트 작성 규칙으로 포함
1416
-
1417
- **Pattern D: Codebase-Derived Standards (github/awesome-copilot, 7.6K installs)**
1418
- 기존 코드베이스 분석 → 규칙 자동 생성:
1419
- - 들여쓰기, 네이밍, 주석, 조건문, 함수 구조 패턴 추출
1420
- - 불일치 탐지 → 소수 패턴 플래그
1421
- - 30+ 공식 스타일 가이드 참조
1422
- → rlp-desk: brainstorm 시 프로젝트 분석 → 프로젝트 맞춤 규칙 생성
1423
-
1424
- ---
1425
-
1426
- ## 50. 프레임워크별 Best Practice 레포 (강제 기준 소스)
1427
-
1428
- ### 코딩 표준
1429
-
1430
- | 레포 | Stars | 언어 | 규칙 수 | 강제 방식 |
1431
- |------|-------|------|---------|----------|
1432
- | airbnb/javascript | 143K | JS/TS | 31 섹션 | ESLint config으로 기계 강제 |
1433
- | goldbergyoni/nodebestpractices | 100K | Node.js | 102개 | 번호+설명+Otherwise |
1434
- | ryanmcdermott/clean-code-javascript | 91K | JS | 함수 레벨 | INCORRECT/CORRECT 대비 |
1435
- | faif/python-patterns | 40K | Python | 35+ 패턴 | anti-pattern 포함 (Singleton, God Object) |
1436
- | golang-standards/project-layout | 50K | Go | 디렉토리 구조 | /src 금지, /internal 강제 |
1437
- | alibaba/p3c | 30K | Java | 49 PMD 규칙 | IDE 플러그인 자동 검사 |
1438
- | vercel-labs/agent-skills | — | React/Next.js | 66 규칙 | impact 분류 + 코드 대비 |
1439
-
1440
- ### 테스트 표준
1441
-
1442
- | 레포 | Stars | 핵심 규칙 |
1443
- |------|-------|----------|
1444
- | goldbergyoni/javascript-testing-best-practices | 24K | 50+ 규칙. 3-part naming, AAA, 5 outcomes |
1445
- | testing-library/react-testing-library | 19K | 행동 테스트, role/label 쿼리, 접근성 우선 |
1446
- | testcontainers | 9K | 실제 컨테이너로 mock 대체 |
1447
-
1448
- ### 인프라/DevOps 표준
1449
-
1450
- | 레포/도구 | 강제 방식 |
1451
- |----------|----------|
1452
- | OPA (Rego) | K8s admission, Terraform plan 정책 |
1453
- | Chef InSpec | CIS/PCI/SOC2 프로파일 실행 |
1454
- | Terratest | Go 테스트로 실제 인프라 검증 |
1455
- | tflint | Terraform 린트 |
1456
-
1457
- ### UI/UX 표준
1458
-
1459
- | 레포 | 핵심 |
1460
- |------|------|
1461
- | vercel-labs/web-interface-guidelines | 100+ 규칙. `<div onClick>` 금지, `aria-label` 필수, zoom 비활성화 금지 |
1462
- | a11yproject.com/checklist | WCAG 2.2 AA 체크리스트 |
1463
- | GOV.UK govuk-frontend | 접근성 AC 템플릿 |
1464
-
1465
- ---
1466
-
1467
- ## 51. Vercel Web Interface Guidelines — 핵심 Anti-Pattern (Worker/Verifier에 적용)
1468
-
1469
- ### 반드시 금지 (Verifier가 탐지)
1470
- - `user-scalable=no` 또는 `maximum-scale=1` (zoom 비활성화)
1471
- - `onPaste` + `preventDefault` (붙여넣기 차단)
1472
- - `transition: all` (속성 명시 필요)
1473
- - `outline-none` without `focus-visible` 대체
1474
- - `<div onClick>` 또는 `<span onClick>` (반드시 `<button>`)
1475
- - 이미지 `width`/`height` 미지정
1476
- - 50+ 항목 `.map()` without virtualization
1477
- - 폼 입력 `<label>` 없음
1478
- - 아이콘 버튼 `aria-label` 없음
1479
- - 하드코딩 날짜/숫자 포맷 (`Intl.DateTimeFormat`/`Intl.NumberFormat` 사용)
1480
-
1481
- ### 반드시 포함 (Worker가 따름)
1482
- - `<button>` for actions, `<a>`/`<Link>` for navigation
1483
- - `autocomplete` + meaningful `name` on inputs
1484
- - 에러 메시지에 해결 방법 포함
1485
- - 비동기 업데이트 시 `aria-live="polite"`
1486
- - 숫자 컬럼 `font-variant-numeric: tabular-nums`
1487
-
1488
- ---
1489
-
1490
- ## 52. rlp-desk 적용: Best Practice 강제 전략
1491
-
1492
- ### brainstorm 단계
1493
- - 프로젝트 스택 식별 → 해당 best practice 레포 참조
1494
- - 예: React → vercel-labs/agent-skills 66 규칙, JS → airbnb/javascript
1495
- - Pattern D: 기존 코드 분석 → 프로젝트 맞춤 규칙
1496
-
1497
- ### PRD 템플릿
1498
- - AC에 해당 프레임워크 규칙 참조 필드 추가
1499
- - 예: `standards_ref: airbnb/javascript, vercel-react-best-practices`
1500
-
1501
- ### test-spec 템플릿
1502
- - "Standards Compliance" 섹션 추가
1503
- - 해당 프레임워크의 lint config 실행 명령
1504
- - anti-pattern 탐지 grep/lint 명령
1505
- - 예: `npx eslint --config airbnb . --max-warnings 0`
1506
-
1507
- ### Worker prompt
1508
- - Pattern C 테스트 규칙 포함: 3-part naming, AAA, 5 outcomes, 현실적 데이터
1509
- - 해당 프레임워크 anti-pattern 목록 제공
1510
-
1511
- ### Verifier prompt
1512
- - Pattern A/B 체크리스트로 준수 여부 판단
1513
- - anti-pattern 탐지 시 FAIL + 구체적 위반 사항 보고
1514
- - 함수 길이, 파일 크기, 중첩 깊이 정량 체크
1515
-
1516
- ### 추가 스킬 (skills.sh 참조)
1517
-
1518
- | 카테고리 | 스킬 | 설치수 |
1519
- |---------|------|--------|
1520
- | 아키텍처 | architecture-patterns | 9.4K |
1521
- | 코딩 표준 | coding-standards | 3.1K |
1522
- | Playwright E2E | playwright-testing | 435 |
1523
- | 클린 코드 | clean-code-principles | 332 |
1524
- | 정적 분석 | static-code-analysis | 209 |
1525
- | Playwright 초기화 | playwright-e2e-init | 91 |
1526
- | DevOps | devops-flow | 87 |
1527
- | 아키텍처 설계 | architecture-design | 57 |
1528
- | API 패턴 | implementing-api-patterns | 22 |
1529
-
1530
- ---
1531
-
1532
- ## 53. 전체 스킬 카탈로그 (도메인별)
1533
-
1534
- ### 코딩 표준 & 아키텍처
1535
- | 스킬 | 설치수 | 용도 |
1536
- |------|--------|------|
1537
- | architecture-patterns | 9.4K | 아키텍처 패턴 |
1538
- | write-coding-standards-from-file | 7.6K | 기존 코드에서 표준 생성 |
1539
- | coding-standards | 3.1K | 코딩 표준 템플릿 |
1540
- | vercel-react-best-practices | 612 | React/Next.js 66 규칙 |
1541
- | clean-code-principles | 332 | 클린 코드 원칙 |
1542
- | coding-standards (davila7) | 288 | 코딩 표준 |
1543
- | architecture-design | 57 | 아키텍처 설계 |
1544
-
1545
- ### 테스트 & QA
1546
- | 스킬 | 설치수 | 용도 |
1547
- |------|--------|------|
1548
- | tdd-test-writer | 857 | TDD 테스트 작성 |
1549
- | playwright-testing | 435 | Playwright E2E |
1550
- | playwright-visual-testing | 336 | 시각 회귀 |
1551
- | api-contract-testing | 283 | API 계약 테스트 |
1552
- | static-code-analysis | 209 | 정적 분석 |
1553
- | aj-geddes/mutation-testing | 135 | mutation testing |
1554
- | lint-and-validate | 148 | 린트+검증 |
1555
- | performance-testing | 95 | 성능 테스트 |
1556
- | playwright-e2e-init | 91 | Playwright 초기화 |
1557
- | jwilger/mutation-testing | 76 | mutation + GWT 시나리오 |
1558
- | qa-resilience | 63 | QA 복원력 |
1559
- | chaos-engineering-resilience | 61 | chaos engineering |
1560
- | fast-check/testing-expert | 61 | property-based (공식) |
1561
- | hypothesis-testing | 60 | Python property-based |
1562
- | load-test-builder | 57 | 부하 테스트 |
1563
- | agentic-qe/mutation-testing | 51 | 학습 기반 mutation |
1564
- | trace-check | 47 | 요구사항 추적 |
1565
- | contract-tester | 49 | 계약 테스트 |
1566
- | moai-workflow-tdd | 35 | RED-GREEN-REFACTOR |
1567
- | ralph-orchestrator/tdd | 30 | ralph TDD |
1568
- | qe-visual-accessibility | 28 | 시각+접근성 |
1569
- | bmad-test-strategy | 19 | TEA 테스트 전략 |
1570
- | atdd | 7 | 2-stream ATDD |
1571
-
1572
- ### 보안
1573
- | 스킬 | 설치수 | 용도 |
1574
- |------|--------|------|
1575
- | security-auditor | 336 | 보안 감사 |
1576
- | senior-secops | 204 | SecOps |
1577
- | security-architect | 89 | 보안 아키텍처 |
1578
- | chaos-engineer | 70 | chaos engineering |
1579
- | security-audit | 29 | 보안 감사 |
1580
- | repo-sentinel | 22 | 12-표면 보안 |
1581
-
1582
- ### 인증 & DB
1583
- | 스킬 | 설치수 | 용도 |
1584
- |------|--------|------|
1585
- | create-auth-skill | 10.6K | 인증 구현 |
1586
- | database-design | 172 | DB 설계 |
1587
- | oauth-implementation | 185 | OAuth |
1588
- | flyway-migrations | 62 | DB 마이그레이션 |
1589
-
1590
- ### 모바일
1591
- | 스킬 | 설치수 | 용도 |
1592
- |------|--------|------|
1593
- | senior-mobile | 276 | 모바일 종합 |
1594
- | flutter-development | 271 | Flutter |
1595
- | swift-expert | 112 | Swift |
1596
- | mobile-developer | 74 | 모바일 종합 |
1597
-
1598
- ### 데이터 & ML
1599
- | 스킬 | 설치수 | 용도 |
1600
- |------|--------|------|
1601
- | senior-data-engineer | 754 | 데이터 엔지니어링 |
1602
- | etl-pipeline | 243 | ETL |
1603
- | data-engineer | 208 | 데이터 엔지니어 |
1604
- | kafka-engineer | 214 | Kafka |
1605
-
1606
- ### DevOps & 인프라
1607
- | 스킬 | 설치수 | 용도 |
1608
- |------|--------|------|
1609
- | devops-flow | 87 | DevOps 워크플로우 |
1610
- | ops-devops-platform | 73 | DevOps 플랫폼 |
1611
- | devops-expert | 66 | DevOps 전문가 |
1612
- | github-workflow-automation | 66 | GitHub Actions |
1613
- | monitoring-expert | 50 | 모니터링 |
1614
- | scaffold | 40 | 프로젝트 스캐폴드 |
1615
- | monitoring-observability | 32 | 관찰성 |
1616
- | terraform-iac-expert | 28 | Terraform |
1617
-
1618
- ### 문서화
1619
- | 스킬 | 설치수 | 용도 |
1620
- |------|--------|------|
1621
- | api-changelog-versioning | 136 | API 변경 이력 |
1622
- | project-docs | 53 | 프로젝트 문서 |
1623
- | changelog | 47 | 변경 이력 |
1624
- | documentation-patterns | 21 | 문서화 패턴 |
1625
-
1626
- ### 에러 처리 & 복원력
1627
- | 스킬 | 설치수 | 용도 |
1628
- |------|--------|------|
1629
- | resilience-patterns | 17 | 복원력 패턴 |
1630
- | message-queues | 21 | 메시지 큐 |
1631
- | microservices-patterns | 30 | 마이크로서비스 |
1632
-
1633
- ---
1634
-
1635
- ## 54. 통합 정책 체계 — 전체 리서치를 아우르는 규칙
1636
-
1637
- ### Tier 0: 불변 원칙 (모든 프로젝트에 적용)
1638
-
1639
- ```
1640
- P0-1: 검증 없는 완료는 없다
1641
- → 모든 US는 최소 L1(unit) + L3(E2E) 검증 필수
1642
- → "code inspection"은 검증이 아니다
1643
- → TODO/빈칸이 남은 test-spec → Verifier 무조건 FAIL
1644
-
1645
- P0-2: AC는 속일 수 없어야 한다
1646
- → Given/When/Then 형식 필수
1647
- → 정량적 기준 필수 (숫자, 시간, 에러율)
1648
- → 부정 테스트(일어나면 안 되는 것) 필수
1649
- → 경계값 테스트 필수
1650
- → 도메인 언어만 사용 (기술 용어 금지)
1651
-
1652
- P0-3: 테스트가 실제로 버그를 잡는지 검증한다
1653
- → mutation testing gate (score ≥ 60%)
1654
- → anti-pattern 체크: Liar, Inspector, Mockery, Tautological
1655
- → surviving mutant에 대응 시나리오 없으면 gaming
1656
-
1657
- P0-4: Worker와 Verifier는 독립적이다
1658
- → Verifier는 Worker의 코드를 신뢰하지 않음
1659
- → Acceptance test는 Worker가 수정 불가
1660
- → 가능하면 다른 모델/엔진 사용 (consensus)
1661
-
1662
- P0-5: 모든 변경은 추적 가능하다
1663
- → 요구사항 → AC → 테스트 → 증거 traceability
1664
- → 감사 추적: who/what/when/why/prior-state
1665
- ```
1666
-
1667
- ### Tier 1: 리스크 기반 확장 (프로젝트 리스크에 따라 적용)
1668
-
1669
- ```
1670
- 리스크 분류:
1671
- LOW = 읽기 전용, 문서, 설정 (→ L1+L3)
1672
- MEDIUM = 기능 추가, 리팩터 (→ L1+L2+L3)
1673
- HIGH = 프로덕션 배포, 데이터 변경 (→ L1+L2+L3+L4)
1674
- CRITICAL = 금융, 보안, 의료 (→ L1+L2+L3+L4+consensus+mutation)
1675
-
1676
- 리스크별 확장:
1677
- MEDIUM+: 외부 서비스 연결 시 L2 integration 필수
1678
- HIGH+: deploy verification (L4) + 롤백 테스트 필수
1679
- CRITICAL+: consensus verification + mutation gate + 보안 체크리스트
1680
- ```
1681
-
1682
- ### Tier 2: 도메인별 규칙 팩 (해당 도메인 시 적용)
1683
-
1684
- ```
1685
- [코드]
1686
- → 프레임워크 best practice 참조 (Vercel 66규칙, Airbnb, goldbergyoni 등)
1687
- → 함수 <50줄, 파일 <800줄, 중첩 ≤4
1688
- → TDD: RED→GREEN→REFACTOR (단, 일반 "TDD 해" 지시는 금지 — TDAD 논문)
1689
- → 테스트 3-part naming, AAA 패턴, 5가지 결과 테스트
1690
-
1691
- [API]
1692
- → CRUD 상태코드 완전 매핑 (200/201/204/400/401/403/404/409/422/500)
1693
- → 인증/인가 negative test 필수
1694
- → contract test (Pact/Schemathesis)
1695
- → rate limit + security headers
1696
-
1697
- [프론트엔드/UI]
1698
- → 반응형 4 breakpoint (320/768/1024/1920)
1699
- → 접근성 WCAG 2.2 AA (contrast 4.5:1, label, keyboard)
1700
- → visual regression (pixel diff < 5%)
1701
- → Vercel anti-pattern 탐지 (<div onClick> 금지 등)
1702
-
1703
- [데이터 파이프라인]
1704
- → 입출력 row count 일치
1705
- → NULL 처리 + 스키마 검증
1706
- → 멱등성 (재실행 = 동일 결과)
1707
- → 알려진 입력의 정량적 출력 검증
1708
-
1709
- [인프라]
1710
- → IaC로만 (수동 변경 금지)
1711
- → terraform validate + plan diff + Checkov
1712
- → health check + 모니터링 + 알림
1713
- → 롤백 절차 테스트 완료
1714
-
1715
- [배포]
1716
- → smoke test (5분 이내)
1717
- → canary (메트릭 기반 자동 판단)
1718
- → 롤백 <5분 가능
1719
- → 이전 버전 아티팩트 보존
1720
-
1721
- [모바일]
1722
- → 최소 OS 버전 지원
1723
- → 오프라인 모드 + 동기화
1724
- → 권한 요청 시점 + 거부 시 fallback
1725
- → 알림 딥링크 정상 동작
1726
-
1727
- [보안]
1728
- → OWASP Top 10 / CWE Top 25 체크
1729
- → SAST + SCA (CVSS ≥7.0 = 0건)
1730
- → 하드코딩 시크릿 ZERO-TOLERANCE
1731
- → 보안 수정 시: PoC 재현 → 수정 → 회귀 테스트
1732
-
1733
- [데이터/GDPR]
1734
- → 7가지 주체 권리 테스트 (접근/정정/삭제/제한/이동/반대/자동결정)
1735
- → 테스트 데이터 마스킹/익명화
1736
- → 동의 관리 + 철회 동작
1737
-
1738
- [문서]
1739
- → 깨진 링크 0건
1740
- → 코드 예제 실행 가능
1741
- → API 변경 시 문서 동기화
1742
- ```
1743
-
1744
- ### Tier 3: 검증 품질 메타 규칙 (테스트 자체의 품질)
1745
-
1746
- ```
1747
- Q1: 테스트는 행동을 검증한다 (구현이 아닌)
1748
- Q2: 테스트는 독립적이다 (순서 무관, 상태 공유 없음)
1749
- Q3: 테스트는 결정적이다 (flaky 아님)
1750
- Q4: 테스트는 빠르다 (단위 <100ms, 통합 <5s, E2E <30s)
1751
- Q5: 테스트는 읽기 쉽다 (DAMP > DRY, 3-part naming)
1752
- Q6: 테스트는 현실적 데이터를 사용한다 (foo/bar 금지)
1753
- Q7: 테스트는 5가지 결과를 검증한다 (응답/상태/외부호출/메시지/관찰성)
1754
-
1755
- Test Quality Score (0-100):
1756
- 0-49: 비신뢰 → FAIL
1757
- 50-69: 기본 → 경고 후 PASS
1758
- 70-84: 양호 → PASS
1759
- 85-100: 고신뢰 → PASS
1760
- ```
1761
-
1762
- ### 적용 흐름
1763
-
1764
- ```
1765
- brainstorm
1766
- │ 프로젝트 스택 식별
1767
- │ 리스크 분류 (LOW/MEDIUM/HIGH/CRITICAL)
1768
- │ 해당 도메인 규칙 팩 선택
1769
- │ Given/When/Then AC 작성 + 정량 기준
1770
-
1771
- init
1772
- │ PRD: Tier 0 불변 원칙 + Tier 2 도메인 규칙 참조
1773
- │ test-spec: L1-L4 + 도메인별 체크리스트 + anti-pattern
1774
-
1775
- run
1776
- │ Worker: Tier 2 규칙 따라 구현+테스트
1777
- │ Verifier: Tier 0 + Tier 1 + Tier 3 검증
1778
- │ → L1-L4 실행 확인
1779
- │ → AC 충족 확인 (Given/When/Then)
1780
- │ → 테스트 품질 점수
1781
- │ → anti-pattern 탐지
1782
- │ → mutation score 체크
1783
-
1784
- verdict
1785
- │ 모든 Tier 통과 → PASS
1786
- │ 하나라도 실패 → FAIL + 구체적 위반 사항
1787
- ```
1788
-
1789
- ---
1790
-
1791
- ## 55. 성공 서비스 4가지 조건 → 검증 개선안
1792
-
1793
- ### 배경
1794
- 성공 서비스 공통 조건: 명확한 범위 설정, 풍부한 테스트 케이스, 독립적인 작업 환경, 고정된 의존성 관리.
1795
- 한계: 테스트 부족하거나 문제 정의가 모호한 소프트웨어에는 적용 어렵다.
1796
- → rlp-desk가 이 한계를 극복하는 도구가 되어야 한다.
1797
-
1798
- ### 개선 1: Ambiguity Gate (범위 명확성 게이트)
1799
- - AC Quality Score 0-12 (6차원 × 0-2점): 단일 행동, 도메인 언어, 이해관계자, 이식성, 구체적 예시, 독립성
1800
- - 0-5: REJECT (init 차단), 6-9: WARN, 10-12: PASS
1801
- - "잘 동작", "빠르게", "안전하게" 등 모호 형용사 탐지 → 정량 기준 요구
1802
- - boundary case 미정의 → "경계값은?" 질문
1803
- - 적용: brainstorm + init 전 게이트
1804
-
1805
- ### 개선 2: Test Sufficiency Gate (테스트 충분성 게이트)
1806
- - 공식: test_count ≥ AC_count × 3 (happy + negative + boundary 최소)
1807
- - Per-AC 최소 3개: happy path 1 + negative 1 + boundary 1
1808
- - happy만 있고 negative 없음 → FAIL
1809
- - EP 커버리지 + BVA 커버리지 + Decision Table 완성도 체크
1810
- - 적용: Verifier verdict 전 체크
1811
-
1812
- ### 개선 3: Scope Lock Enforcement (작업 환경 격리)
1813
- - git diff --name-only로 Worker 수정 파일 vs US 범위 대조
1814
- - 범위 밖 파일 수정 + 정당 사유 없음 → FAIL
1815
- - 의존성 파일(package.json 등) 변경 시 AC에 명시 여부 확인
1816
- - 적용: Verifier scope 검증
1817
-
1818
- ### 개선 4: Reproducibility Gate (의존성 고정 & 재현성)
1819
- - lock 파일 존재 + 커밋 포함
1820
- - 새 의존성 exact 버전 고정 (^/~ 아닌)
1821
- - clean install 후 빌드 성공
1822
- - 보안 취약점 스캔 통과
1823
- - 테스트에 외부 네트워크 의존 없음
1824
- - 적용: test-spec Reproducibility 섹션
1825
-
1826
- ### 한계 극복: 모호한 프로젝트에도 적용
1827
- ```
1828
- [모호한 요청] → [Ambiguity Gate] → [Given/When/Then 생성] → [Sufficiency Gate] → [구현+검증]
1829
- ```
1830
- Ambiguity Gate가 모호한 입력을 명확한 AC로 변환하는 과정을 강제.
1831
- Test Sufficiency Gate가 테스트 부족을 허용하지 않음.
1832
-
1833
- ### 기존 정책 체계에 통합
1834
-
1835
- | 기존 | 개선안 | 통합 위치 |
1836
- |------|--------|----------|
1837
- | Tier 0 P0-2 (AC 속임 방지) | + Ambiguity Gate (점수 기반 차단) | brainstorm→init 게이트 |
1838
- | Tier 0 P0-3 (mutation gate) | + Test Sufficiency Gate (AC×3 최소) | Verifier 체크 |
1839
- | Tier 0 P0-4 (독립 검증) | + Scope Lock Enforcement (git diff) | Verifier scope 검증 |
1840
- | Tier 2 도메인 규칙 | + Reproducibility Gate (lock+clean install) | test-spec 섹션 |
1841
-
1842
- ---
1843
-
1844
- ## 56. Superpowers 스킬 분석 — rlp-desk 흡수
1845
-
1846
- ### Iron Law 패턴
1847
-
1848
- 모든 superpowers 스킬이 **절대 위반 불가 1줄 규칙**을 가짐:
1849
-
1850
- | 스킬 | Iron Law |
1851
- |------|---------|
1852
- | TDD | `NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST` |
1853
- | Verification | `NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE` |
1854
- | Debugging | `NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST` |
1855
-
1856
- → rlp-desk 각 게이트에 Iron Law 적용:
1857
- - Ambiguity Gate: `NO INIT WITHOUT AC QUALITY SCORE ≥ 6`
1858
- - Sufficiency Gate: `NO PASS WITHOUT TEST ≥ AC × 3`
1859
- - Layer Gate: `NO PASS WITH TODO IN ANY REQUIRED L-SECTION`
1860
- - Verification Gate: `NO COMPLETION CLAIMS WITHOUT FRESH EVIDENCE`
1861
-
1862
- ### Verification Before Completion — 5-Step Evidence Gate
1863
-
1864
- ```
1865
- 1. IDENTIFY: 이 주장을 증명하는 명령어는?
1866
- 2. RUN: 명령어 실행 (fresh, complete)
1867
- 3. READ: 전체 출력, exit code, 실패 수
1868
- 4. VERIFY: 출력이 주장을 확인하는가?
1869
- 5. ONLY THEN: 주장
1870
- ```
1871
-
1872
- 금지 패턴 (Verifier가 탐지해야 함):
1873
- - "should pass", "probably works", "seems to" → 증거 없는 주장
1874
- - agent "success" 보고 신뢰 → 독립 검증 필수
1875
- - 부분 검증 → 전체 증명 아님
1876
- - "피곤해서" / "간단해서" → 면책 아님
1877
-
1878
- 실패 교훈 (superpowers 24건):
1879
- - 사용자가 "I don't believe you" — 신뢰 파괴
1880
- - 미정의 함수 배포 — 런타임 크래시
1881
- - 요구사항 누락 배포 — 불완전 기능
1882
-
1883
- → Verifier 핵심 철학: **Worker가 "done"이라고 해도 직접 실행해서 증거 수집**
1884
-
1885
- ### TDD Iron Law — 합리화 방지 12개 패턴
1886
-
1887
- | 합리화 | 반박 |
1888
- |--------|------|
1889
- | "테스트 안 해도 될 만큼 간단" | 간단한 코드도 깨짐. 테스트 30초 |
1890
- | "나중에 테스트 추가" | 즉시 통과하는 테스트는 아무것도 증명 안 함 |
1891
- | "이미 수동 테스트함" | 체계적 ≠ 임시. 기록 없고 재실행 불가 |
1892
- | "X시간 작업 삭제는 낭비" | 매몰 비용 오류. 검증 안 된 코드가 진짜 낭비 |
1893
- | "참고로 보관하고 테스트부터" | 보관하면 적응하게 됨. 삭제 = 삭제 |
1894
- | "탐색 먼저 필요" | 탐색 OK. 버리고 TDD로 새로 시작 |
1895
- | "테스트 어려움 = 설계 불명확" | 테스트에 귀 기울여라. 테스트 어려움 = 사용 어려움 |
1896
- | "TDD가 느려" | TDD > 디버깅. 실용적 = 테스트 먼저 |
1897
- | "기존 코드에 테스트 없음" | 개선하는 중. 기존 코드에 테스트 추가 |
1898
- | "이번만 예외" | 예외 없음 |
1899
- | "교조적이야, 실용적으로" | TDD가 실용적임 |
1900
- | "정신이지 의식이 아니야" | tests-after는 "이게 뭘 하지?", tests-first는 "이게 뭘 해야 하지?" |
1901
-
1902
- → Worker prompt에 합리화 방지 목록 포함
1903
-
1904
- ### Writing Plans — Bite-Sized 5-Step Task
1905
-
1906
- ```
1907
- Step 1: 실패 테스트 작성 (코드)
1908
- Step 2: 실행 → 실패 확인 (명령어 + 예상 출력)
1909
- Step 3: 최소 구현 (코드)
1910
- Step 4: 실행 → 통과 확인 (명령어 + 예상 출력)
1911
- Step 5: 커밋
1912
- ```
1913
-
1914
- 각 Step = 2-5분. 정확한 파일 경로, 완전한 코드, 정확한 명령어 포함.
1915
- "validation 추가" 같은 모호한 지시 금지 → 구체적 코드 제공.
1916
-
1917
- → rlp-desk PRD의 US를 이 구조로 분해하면 Worker가 따르기 쉬움
1918
-
1919
- ### Brainstorming — Hard Gate + Scope Decomposition
1920
-
1921
- ```
1922
- <HARD-GATE>
1923
- 디자인 승인 전에 어떤 구현도, 코드도, 스캐폴드도 금지
1924
- </HARD-GATE>
1925
- ```
1926
-
1927
- - "간단해 보인다" → 그래도 디자인 필수 (anti-pattern으로 명시)
1928
- - 여러 독립 서브시스템 → 세부 질문 전에 즉시 분해 제안
1929
- - 질문은 한 번에 하나 → 여러 질문 금지
1930
-
1931
- → rlp-desk brainstorm Hard Gate: AC 승인 없이 init 금지
1932
-
1933
- ### Systematic Debugging — 4-Phase + 3회 실패 에스컬레이션
1934
-
1935
- ```
1936
- Phase 1: Root Cause Investigation (증거)
1937
- Phase 2: Pattern Analysis (작동 사례와 비교)
1938
- Phase 3: Hypothesis + Minimal Test (1변수)
1939
- Phase 4: Implementation (테스트→수정→검증)
1940
-
1941
- 3회 수정 실패 → 아키텍처 문제 → 사용자와 논의
1942
- ```
1943
-
1944
- 실전 데이터: 체계적 접근 15-30분, 랜덤 수정 2-3시간
1945
- 첫 번째 수정 성공률: 95% vs 40%
1946
-
1947
- → rlp-desk Fix Loop 강화: 3회 consecutive failure → 단순 수정 아닌 아키텍처 재검토
1948
-
1949
- ### Code Review — 독립 컨텍스트 리뷰
1950
-
1951
- 리뷰어에게 세션 히스토리가 아닌 **정제된 컨텍스트만** 전달:
1952
- - 뭘 구현했는가 (WHAT)
1953
- - 요구사항은 무엇인가 (PLAN)
1954
- - git diff (BASE_SHA → HEAD_SHA)
1955
-
1956
- → rlp-desk Verifier도 동일: Worker의 추론 과정이 아닌 **결과물만** 보고 검증
1957
-
1958
- ### 통합: Superpowers 파이프라인 vs rlp-desk 파이프라인
1959
-
1960
- ```
1961
- Superpowers: rlp-desk 대응:
1962
- brainstorming (Hard Gate) → brainstorm (Ambiguity Gate)
1963
- writing-plans (Bite-Sized) → init PRD (US + AC)
1964
- executing-plans (TDD) → run Worker (TDD + L1-L4)
1965
- verification-before-completion → run Verifier (Evidence Gate)
1966
- requesting-code-review → consensus verification
1967
- systematic-debugging → fix loop (3회 에스컬레이션)
1968
- finishing-branch → COMPLETE sentinel
1969
- ```
1970
-
1971
- 핵심 차이: superpowers는 **현재 세션 내 단일 워크플로우**, rlp-desk는 **fresh context 반복 루프**. 하지만 Iron Law, Evidence Gate, 합리화 방지는 동일하게 적용 가능.
1972
-
1973
- ---
1974
-
1975
- ## 57. TVER Wave 1 크롤링 결과 반영 (258개 소스)
1976
-
1977
- ### 출처
1978
- - 논문 14편 (P0: 8, P1: 2, P2: 4)
1979
- - 공식 문서 13건 (Claude Code, Cursor, Copilot, Devin, Playwright, Stryker, ISTQB, OWASP 등)
1980
- - 엔지니어링 블로그 15건 (CodeRabbit, SonarSource, Kent Beck, Meta, Sentry, Trail of Bits 등)
1981
- - GitHub 레포 15건 (Spec Kit 81K stars, Stryker, mutmut, Qodo Cover 등)
1982
- - Medium 201개 유효 기사
1983
-
1984
- ### Cross-Lane Convergence (3+ lane에서 공통 확인)
1985
-
1986
- | 주제 | 강도 |
1987
- |------|------|
1988
- | TDD-first가 AI 코드 품질을 높인다 | 매우 강 (TDAD, TDFlow, Claude/Cursor/Devin 공식, Kent Beck) |
1989
- | Mutation score > Coverage | 매우 강 (MuTAP, MutGen, Meta ACH, Sentry, Trail of Bits, Stryker/mutmut) |
1990
- | AI 코드는 구조적으로 더 많은 결함 포함 | 강 (CodeRabbit 1.7x, SonarSource 8x 중복, Qodo 76% red zone) |
1991
- | Multi-agent 분리가 단일 agent보다 우수 | 중 (TDFlow 4 sub-agents, Cursor find issues, Osmani dual-model) |
1992
-
1993
- ### 기존 전략 수정 3가지
1994
-
1995
- **수정 1: "어떻게 TDD를 해라" → "어떤 테스트를 확인해라"**
1996
-
1997
- TDAD 논문 (arxiv 2603.17973):
1998
- - 일반적 "TDD를 따르세요" 지시 → regression 악화 (6.08%→9.94%)
1999
- - code-test dependency graph로 영향 테스트 명시 → regression 70% 감소 (1.82%)
2000
-
2001
- → Worker prompt 수정: 절차적 TDD 지시 대신 "이 변경이 영향주는 테스트 목록" 제공
2002
- → test-spec에 `impacted tests` 필드 추가
2003
-
2004
- **수정 2: test-spec 5개 필수 필드 추가**
2005
-
2006
- ```
2007
- target behavior: 이 변경이 어떤 행동을 바꾸는가
2008
- impacted tests: 영향받는 기존 테스트 목록
2009
- required new tests: 반드시 추가해야 할 새 테스트
2010
- forbidden shortcuts: 금지된 우회 (mock 남용, assertion 삭제 등)
2011
- pass/fail evidence: 통과/실패 증거 형식
2012
- ```
2013
-
2014
- 근거: TDAD "어떤 테스트를 확인할지 > 어떻게 TDD를 할지"
2015
-
2016
- **수정 3: Verification checkpoint 3단계 분리**
2017
-
2018
- 기존: 큰 verify 1회 (per-US 또는 batch)
2019
- 개선:
2020
- ```
2021
- Checkpoint 1: Story/Unit — 각 US 완료 시 (AC 검증)
2022
- Checkpoint 2: Integration — 외부 서비스 연결 검증 (L2)
2023
- Checkpoint 3: Release/Readiness — 배포 전 최종 (L3+L4)
2024
- ```
2025
- 각 checkpoint: evidence required + reviewer lane + retry condition
2026
-
2027
- 근거: Claude Code/Cursor/Devin 공식 문서 모두 "중간 checkpoint"를 강조
2028
-
2029
- ### 신규 추가 사항
2030
-
2031
- **AI 코드 정량적 결함율 기준 (CodeRabbit 2025.12)**
2032
- - AI 코드 PR당 평균 10.83 이슈 vs 인간 6.45 (1.7x)
2033
- - 로직/정확성 오류 75% 증가
2034
- - 보안 취약점 2.74x
2035
- - 가독성 문제 3x+
2036
- → Verifier 체크리스트에 로직 정확성, 보안, 가독성 3축 검증 추가
2037
-
2038
- **코드 중복 임계값 (SonarSource/GitClear)**
2039
- - 2020-2024 5줄+ 중복 블록 8배 증가
2040
- - 2024: 역사상 처음 중복 라인 > 리팩토링 라인
2041
- → test-spec quality gate에 코드 중복 임계값 추가
2042
-
2043
- **Mock 비율 상한선 (Medium "Mocking Everything Made Our Tests Useless")**
2044
- - 호텔 이중 예약 버그: mock 기반 테스트 통과, 프로덕션 장애
2045
- - mock 에러: 1주차 12건 → 12주차 203건
2046
- - "mock이 mock과 대화하며 환상이 환상과 일치하는지 검증"
2047
- → test-spec에 mock 비율 상한 + integration test 최소 비율
2048
-
2049
- **GitHub Spec Kit (81K stars)**
2050
- - GitHub 공식 오픈소스, spec-driven development
2051
- - "intent가 source of truth"
2052
- - strict TDD 강제, Copilot/Claude Code/Gemini CLI 호환
2053
- → rlp-desk의 전체 verification 파이프라인 참고 아키텍처
2054
-
2055
- **Playwright AI Agents (v1.56)**
2056
- - Planner: 앱 탐색 → Markdown 테스트 계획
2057
- - Generator: 계획 → 실행 가능한 테스트 파일
2058
- - Healer: 실패한 테스트 자동 수리
2059
- - `npx playwright init-agents --loop=claude`
2060
- → E2E 검증 자동화 참고
2061
-
2062
- **4대 AI Coding Tool 공식 TDD 권장**
2063
- - Claude Code: "Include tests — single highest-leverage thing"
2064
- - Cursor: "Agents perform best with clear target to iterate against"
2065
- - Copilot: "Always validate the code it suggests"
2066
- - Devin: "Clearly articulate your testing process"
2067
- → rlp-desk의 test-first spec 접근법이 업계 공식 best practice와 정렬
2068
-
2069
- ### Gaps (다음 wave에서 보강)
2070
- 1. ATDD/BDD with AI — 학술 연구 전무
2071
- 2. Visual regression — 도구 있으나 실전 경험 보고서 부재
2072
- 3. Integration/E2E AI verification — 대부분 unit test 수준
2073
- 4. Infrastructure testing (IaC) — 별도 조사 필요
2074
- 5. DORA metrics ↔ testing quality 인과관계 — 실증 연구 부재
2075
-
2076
- ---
2077
-
2078
- ## 58. 최종 구현 우선순위 (TVER Wave 1 반영)
2079
-
2080
- | 순위 | 항목 | 근거 | 변경 |
2081
- |------|------|------|------|
2082
- | **P0** | test-spec 5개 필수 필드 (target behavior, impacted tests, required new tests, forbidden shortcuts, pass/fail evidence) | TDAD — "어떤 테스트 > 어떻게 TDD" | **신규** |
2083
- | **P0** | Mutation score quality gate (coverage보다 상위) | MuTAP, MutGen, Meta ACH, Sentry, Trail of Bits | 기존→강화 |
2084
- | **P0** | L1-L4 필수 섹션 + Verifier Layer Enforcement | trading 실전 장애 + 크롤링 확인 | 유지 |
2085
- | **P0** | Iron Laws + Evidence Gate | superpowers + 크롤링 확인 | 유지 |
2086
- | **P0** | Verification checkpoint 3단계 분리 | Claude/Cursor/Devin 공식 + TDFlow | **신규** |
2087
- | **P1** | Ambiguity Gate + Test Sufficiency Gate | 성공 서비스 4조건 | 유지 |
2088
- | **P1** | Worker: "영향 테스트 컨텍스트" 제공 (TDD 절차 대신) | TDAD regression 70% 감소 | **수정** |
2089
- | **P1** | AI 코드 결함율 체크 (로직/보안/가독성 3축) | CodeRabbit 1.7x | **신규** |
2090
- | **P1** | Mock 비율 상한 + integration test 최소 비율 | 호텔 이중 예약 사례 | **신규** |
2091
- | **P1** | 코드 중복 임계값 | SonarSource 8x 증가 | **신규** |
2092
- | **P2** | Scope Lock + Reproducibility Gate | 성공 서비스 4조건 | 유지 |
2093
- | **P2** | Anti-pattern checklist (23종) | 기존 | 유지 |
2094
- | **P2** | Domain rule packs (10개) | 기존 | 유지 |
2095
- | **P3** | Playwright AI agents E2E | 크롤링 발견 | **신규** |
2096
- | **P3** | Mutahunter (LLM mutation) | 크롤링 발견 | **신규** |
2097
- | **P3** | Spec Kit 패턴 참조 | 81K stars | **신규** |