처음이어도 괜찮아요 · 그림부터 시작해요
재현 가능한 failure triage evidence loop
oracle·fixture scope·mock boundary·logging context가 섞인 failure를 baseline→inject→localize→replay 순서로 국소화하고 sealed regression evidence를 만든다. 이 판단을 생략하면 통과한 test와 많은 log가 있어도 결함을 놓치거나 잘못된 수정을 승인할 수 있습니다.
아직 답을 몰라도 괜찮아요. 아래 작은 예시를 보고 먼저 예상해 보세요.01 · 가볍게 시작하기
정답을 보기 전에 먼저 골라볼까요?
synthetic td46 fixture · secret 없는 고정 입력 · exact Python 3.14.6- 1먼저 골라보기
틀려도 괜찮아요. 지금 생각한 답 하나를 정해요.
- 2그림으로 확인하기
움직이는 순서와 달라지는 곳만 천천히 찾아요.
- 3내 말로 다시 말하기
한 문장으로 말해 보면 내가 이해한 곳을 확인할 수 있어요.
02 · 그림으로 보기
그림이 움직이는 순서를 직접 확인해요
PYTHON FAILURE TRIAGE · EVIDENCE LAB
실패를 추측하지 말고, 재현 가능한 증거로 원인을 좁히세요
PY-M09-11-1실패를 만드는 최소 입력과 기대값을 한 문장으로 고정했나요?
누적 triage phase
← ↑ ↓ → · Home · EndREPRODUCE_AND_BOUND
seed와 단일 경계값으로 실패를 세 번 동일하게 재현합니다.def fee(amount): return max(0, amount // 10)실패·fixture timeline
- T+000msrunningCOLLECT
node id와 parametrized case를 고정
- T+017msqueuedARRANGE
입력·expected·seed snapshot
- T+034msqueuedCALL
fee 경계 분기와 반환값
- T+051msqueuedASSERT
oracle과 actual의 의미 비교
call stack과 data flow
- test_fee_boundaryactive
test_fee.py:18- amount=<bounded>
- expected=<oracle>
- triage_target=false
- feedormant
billing.py:7- amount=<input>
- rate=10
- triage_target=true
- pytest_assertrepr_comparedormant
rewrite.py:<assert>- left=<actual>
- right=<expected>
- triage_target=false
- inputBOUNDARY INPUT
amount=10 - contextORACLE
expected=1 - outputACTUAL
actual=1 - stateASSERTION
1 == 1
ACTIVE HYPOTHESIS · unscored
fee의 10 단위 경계와 oracle이 동일한 명세를 표현한다.반증 조건: 9·10·11 중 하나가 잘못된 상수 mutant와 같은 결과를 내면 기각assertion·debugger·log 증거 ledger
- assertionCAPTUREDASSERTION DIFF
expected 1 == actual 1 - debuggerSEALEDBOUNDARY LOCALS
amount=10 · rate=10 - traceSEALEDMUTANT RESULT
constant-return mutant → FAIL - logSEALEDREPLAY RECEIPT
3 runs · same node ids · PASS
재현하고 경계를 고정. 최소 반례와 기대값을 고정해 재현 가능한 기준선을 만들었습니다.
amount=10에서 expected=1과 actual=1을 고정해 동일한 실행 경계를 확보했습니다.seed와 단일 경계값으로 실패를 세 번 동일하게 재현합니다.최종 판정은 네 번째 phase에서만 공개합니다결정적 증거 계약: 입력·환경·oracle을 고정하고 독립된 두 관측 채널로 같은 원인을 확인합니다.
처음 보는 말도 책 읽듯 풀어봐요
이 수업은 쉬운 뜻과 생활 예를 아직 함께 준비하지 못했어요. 설명 없는 정확한 이름은 먼저 보여 주지 않을게요.
그림에서 찾을 쉬운 규칙
- 01triage는 expected·environment·collection manifest·state baseline을 고정한 뒤 한 failure axis만 주입한다.
- 02assertion diff·fixture lifecycle·mock lookup·LogRecord·traceback과 필요 시 faulthandler dump는 같은 correlation id로 연결한다.
- 03수정 승인은 clean process replay, order permutation, secret absence와 regression·negative-control 통과까지 요구한다.
03 · 같이 풀어보기
한 단계씩 따라가면 어렵지 않아요
AI가 수정한 간헐적 주문 처리 결함의 release review에서 재현 가능한 failure triage evidence loop 계약을 적용한다.
synthetic td46 fixture · secret 없는 고정 입력 · exact Python 3.14.604 · 이제 내가 해볼 차례
여기까지 오면 이런 일을 할 수 있어요
oracle·fixture scope·mock boundary·logging context가 섞인 failure를 baseline→inject→localize→replay 순서로 국소화하고 sealed regression evidence를 만든다.
- 재현 가능한 failure triage evidence loop의 예상 결과·관찰 결과·판정 oracle을 실행 전에 분리해 기록한다.
- weak oracle·session fixture·wrong patch가 동시에 존재한다.에서 최초 불일치 지점과 근본 원인을 재현 가능한 evidence로 국소화한다.
- 48 state가 고유하고 마지막 phase에서만 원인 verdict·수정·sealed replay가 공개을 정상·경계·실패 fixture에 적용하고 false green·false red가 없는지 검증한다.
05 · 자주 헷갈리는 지점
틀린 답도 이유를 알면 다음에는 맞힐 수 있어요
01실패한 assertion 줄만 고치면 triage loop가 끝난다.
한 번 더 생각해 볼 질문재현 가능한 failure triage evidence loop의 최소 fixture에서 이 주장을 깨는 관찰값과 판정 근거를 각각 한 줄로 쓰세요.
이렇게 고쳐 생각해요triage는 expected·environment·collection manifest·state baseline을 고정한 뒤 한 failure axis만 주입한다.
02retry에서 통과한 flaky test는 수정된 것으로 볼 수 있다.
한 번 더 생각해 볼 질문재현 가능한 failure triage evidence loop의 최소 fixture에서 이 주장을 깨는 관찰값과 판정 근거를 각각 한 줄로 쓰세요.
이렇게 고쳐 생각해요assertion diff·fixture lifecycle·mock lookup·LogRecord·traceback과 필요 시 faulthandler dump는 같은 correlation id로 연결한다.
03많은 stack dump와 log가 있으면 correlation·redaction이 없어도 강한 evidence다.
한 번 더 생각해 볼 질문재현 가능한 failure triage evidence loop의 최소 fixture에서 이 주장을 깨는 관찰값과 판정 근거를 각각 한 줄로 쓰세요.
이렇게 고쳐 생각해요수정 승인은 clean process replay, order permutation, secret absence와 regression·negative-control 통과까지 요구한다.
06 · 더 궁금할 때만 보기
선생님과 검토자를 위한 믿을 만한 원문
원문과 어디까지 참고했는지 펼쳐 보기처음 배우는 동안에는 열지 않아도 괜찮아요.
breakpoint·set_trace, step·next·continue, frame 조사, post-mortem과 Python 3.14 debugger 경계
Logger hierarchy, level, Handler·Filter·Formatter·LogRecord와 propagation의 공식 계약
traceback 추출·formatting과 exception chain 진단. 마지막 frame을 root cause로 자동 판정하지 않음
crash·deadlock 진단용 traceback dump와 artifact 노출·상관관계 경계
discovery, assertion introspection, parametrization, markers, raises, warning·capture·debugging과 import 경계
fixture dependency, scope, yield teardown, conftest, tmp_path·capsys·caplog·monkeypatch lifecycle
global state, ordering, cleanup, timing, parallelism과 flaky test의 원인·완화 경계
