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

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

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

---

[AI code quality, verification & debugging](/en/courses/ai-code-quality) 3. 가설 기반 디버깅 5 / 9

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

Minimal reproduction, hypothesis matrix, probe·trace와 smallest fix
Concept 45 XP 9 min

오류가 나면 전체 함수를 다시 생성하는 방식은 증상을 바꾸면서 원인을 숨깁니다. 관측 가능한 실패를 최소 재현하고 원인 후보를 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는 증상만 아니라 확인된 원인 가설을 보존한다

[Previous](/en/courses/ai-code-quality/lessons/cq-m2-scenario) Got it · Continue

---

Site guide for agents: https://learning.reopt.ai/llms.txt · Sitemap: https://learning.reopt.ai/sitemap.xml · Contact: https://learning.reopt.ai/contact
