# 디버깅은 코드 생성이 아니라 가설 경쟁

> Minimal reproduction, hypothesis matrix, probe·trace와 smallest fix

- Canonical: https://learning.reopt.ai/courses/ai-code-quality/lessons/cq-m3-concept
- Language: ko-KR
- HTML: https://learning.reopt.ai/courses/ai-code-quality/lessons/cq-m3-concept

---

[AI 코드 품질·검증·디버깅](/courses/ai-code-quality) 3. 가설 기반 디버깅 5 / 9

# 디버깅은 코드 생성이 아니라 가설 경쟁

Minimal reproduction, hypothesis matrix, probe·trace와 smallest fix
개념 학습 45 XP 9분

오류가 나면 전체 함수를 다시 생성하는 방식은 증상을 바꾸면서 원인을 숨깁니다. 관측 가능한 실패를 최소 재현하고 원인 후보를 state, data, concurrency, dependency, model, environment로 나눈 뒤 후보를 가장 많이 제거하는 probe를 선택합니다.
한 번의 변경은 한 가설만 검증 Log를 늘리는 것보다 correlation ID와 경계별 input/output을 기록합니다. 수정 전 실패 fixture를 고정하고 가장 작은 원인 수정을 적용한 뒤 regression·neighbor test로 부작용을 확인합니다.

| 가설 층 | 구분 Probe | 대표 증거 |
| State·data | event·version·row 비교 | 잘못된 전이·stale read |
| Concurrency | 순서·지연·반복 제어 | race·duplicate |
| Dependency | contract stub·version pin | provider·schema drift |
| Model·context | fixed response·source trace | retrieval·prompt·output |

- 1 최소 재현 입력·환경·상태·시간을 고정해 실패를 반복합니다.

- 2 가설 표 가능 원인과 각 원인일 때 나타날 증거를 적습니다.

- 3 고가치 Probe 가장 많은 후보를 싸게 제거하는 trace·fixture를 실행합니다.

- 4 최소 수정 원인 하나만 고치고 regression·neighbor·production signal을 확인합니다.

실무에 남길 기준

- 재생성은 실패 원인을 알게 된 뒤 bounded fix로 사용할 때 안전하다
- 로그 양보다 요청·결정·도구·상태를 잇는 correlation이 중요하다
- Regression test는 증상만 아니라 확인된 원인 가설을 보존한다

[이전](/courses/ai-code-quality/lessons/cq-m2-scenario) 이해했어요 · 계속

---

에이전트용 사이트 안내: https://learning.reopt.ai/llms.txt · 사이트맵: https://learning.reopt.ai/sitemap.xml · 문의: https://learning.reopt.ai/contact
