pytest·debugging·logging
test 개수나 coverage percentage를 늘리는 데서 멈추지 않고, expected와 actual을 분리하고 재현 가능한 실패를 최소화해 강한 oracle·격리된 fixture·정확한 diagnostic evidence로 최초 원인을 국소화한다.
- 작은 수업
- 52개
- 바로 풀어볼 수 있는 문제
- 8 / 416개
- 직접 움직이는 그림
- 1 / 52개
- 나중에 다시 풀기
- 1일 · 7일 · 30일 뒤
모든 작은 수업이 같은 순서로 이어져요
보고, 해보고, 내 말로 설명하는 열두 단계
먼저 골라 보고, 직접 해보고, 생각과 달라진 첫 곳을 찾아요. 한 가지를 바꿔 다시 해본 뒤 새로운 생활 장면에서도 같은 생각을 쓸 수 있는지 확인해요.
- 01오늘 할 일왜 배우는지
- 02먼저 떠올리기이미 아는 것
- 03그림으로 보기어떻게 움직이나
- 04먼저 골라보기하기 전 생각
- 05직접 해보기무엇이 보이나
- 06막힌 곳 찾기처음 다른 곳
- 07하나 바꿔보기한 가지
- 08내가 만들기직접 완성
- 09다시 확인하기새 문제로 확인
- 10내 말로 설명한 문장 기록
- 11생활에 써보기새로운 장면
- 12나중에 다시1·7·30일
52개 작은 수업으로 나눴어요
배울 내용 골라 보기
각 작은 수업에는 그림, 자주 헷갈리는 곳, 막혔을 때 볼 도움과 여덟 연습 문제가 있어요. 먼저 그림으로 이해하고, 따라 해보고, 혼자 풀고, 내가 한 일을 남기는 순서로 열립니다.
- 01
학습 자료와 연습 문제 준비 중
예상 결과와 실제 결과를 분리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령이 움직이는 순서를 한 줄씩 보는 그림 · 먼저 알면 좋은 수업 1개
- 02
학습 자료와 연습 문제 준비 중
오류·결함·실패·근본 원인을 구분한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 03
학습 자료와 연습 문제 준비 중
실패 입력을 재현 가능하게 포획한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 연습할 자료 묶음 · 먼저 알면 좋은 수업 1개
- 04
학습 자료와 연습 문제 준비 중
근본 원인을 보존한 최소 재현을 만든다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 05
학습 자료와 연습 문제 준비 중
가설을 기록하고 한 번에 하나만 바꾼다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 06
학습 자료와 연습 문제 준비 중
print debugging을 제한적으로 쓰고 제거한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령을 직접 써 보는 창 · 먼저 알면 좋은 수업 1개
- 07
학습 자료와 연습 문제 준비 중
breakpoint·step·next·continue로 frame을 조사한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 처음 달라진 곳을 찾는 창 · 먼저 알면 좋은 수업 1개
- 08
학습 자료와 연습 문제 준비 중
수정 전에 regression test를 먼저 고정한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 09
학습 자료와 연습 문제 준비 중
계약을 검증 가능한 test case로 번역한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 10
학습 자료와 연습 문제 준비 중
AAA와 Given-When-Then으로 test 의도를 드러낸다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 11
학습 자료와 연습 문제 준비 중
동등 분할로 입력 공간을 압축한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 12
학습 자료와 연습 문제 준비 중
경계값에서 규칙 전환을 공격한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 13
학습 자료와 연습 문제 준비 중
결정 테이블로 조건 조합을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 14
학습 자료와 연습 문제 준비 중
상태 전이와 금지 전이를 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 모습이 바뀌는 순서 그림 · 먼저 알면 좋은 수업 1개
- 15
학습 자료와 연습 문제 준비 중
정상·경계·오류·부정 입력 matrix를 만든다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 16
학습 자료와 연습 문제 준비 중
oracle의 false green·false red를 찾는다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 숫자를 비교하는 그림 · 먼저 알면 좋은 수업 1개
- 17
학습 자료와 연습 문제 준비 중
pytest discovery와 실행 범위를 통제한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령을 직접 써 보는 창 · 먼저 알면 좋은 수업 1개
- 18
학습 자료와 연습 문제 준비 중
plain assert와 failure introspection을 읽는다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령이 움직이는 순서를 한 줄씩 보는 그림 · 먼저 알면 좋은 수업 1개
- 19
학습 자료와 연습 문제 준비 중
값·identity·collection·근사 비교를 구분한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 20
학습 자료와 연습 문제 준비 중
pytest.raises로 예외 계약을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령이 움직이는 순서를 한 줄씩 보는 그림 · 먼저 알면 좋은 수업 1개
- 21
학습 자료와 연습 문제 준비 중
warning 발생·부재·filter 계약을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 22
학습 자료와 연습 문제 준비 중
parametrization으로 case와 oracle을 선언한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 23
학습 자료와 연습 문제 준비 중
marker·선택·skip·xfail 의미를 지킨다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령을 직접 써 보는 창 · 먼저 알면 좋은 수업 1개
- 24
학습 자료와 연습 문제 준비 중
test folder와 import boundary를 설계한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 25
학습 자료와 연습 문제 준비 중
I/O shell에서 pure core를 분리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 26
학습 자료와 연습 문제 준비 중
unittest.TestCase 호환 경계를 다룬다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 27
학습 자료와 연습 문제 준비 중
fixture를 dependency injection으로 사용한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 28
학습 자료와 연습 문제 준비 중
fixture scope와 yield teardown을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 29
학습 자료와 연습 문제 준비 중
conftest 공유와 fixture override 경계를 추적한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 30
학습 자료와 연습 문제 준비 중
tmp_path로 filesystem을 격리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 기억할 곳을 나눈 그림 · 먼저 알면 좋은 수업 1개
- 31
학습 자료와 연습 문제 준비 중
capsys·capfd로 출력 경계를 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 명령을 직접 써 보는 창 · 먼저 알면 좋은 수업 1개
- 32
학습 자료와 연습 문제 준비 중
monkeypatch로 env·time·random 경계를 격리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 기억할 곳을 나눈 그림 · 먼저 알면 좋은 수업 1개
- 33
학습 자료와 연습 문제 준비 중
dummy·stub·fake·spy·mock을 목적별로 선택한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 34
학습 자료와 연습 문제 준비 중
spec·autospec과 patch lookup 지점을 지킨다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 기억할 곳을 나눈 그림 · 먼저 알면 좋은 수업 1개
- 35
학습 자료와 연습 문제 준비 중
print·assertion·logging의 역할을 분리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 36
학습 자료와 연습 문제 준비 중
named logger hierarchy와 propagation을 추적한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 37
학습 자료와 연습 문제 준비 중
log level을 조치 의미로 선택한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 38
학습 자료와 연습 문제 준비 중
LogRecord·handler·filter·formatter 흐름을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 39
학습 자료와 연습 문제 준비 중
구조화 context·exception·secret 제거를 설계한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 연습할 자료 묶음 · 먼저 알면 좋은 수업 1개
- 40
학습 자료와 연습 문제 준비 중
caplog로 log 의미와 비노출을 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 41
학습 자료와 연습 문제 준비 중
line·branch coverage를 실행 증거로 읽는다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 숫자를 비교하는 그림 · 먼저 알면 좋은 수업 1개
- 42
학습 자료와 연습 문제 준비 중
100% coverage와 correctness를 분리한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 숫자를 비교하는 그림 · 먼저 알면 좋은 수업 1개
- 43
학습 자료와 연습 문제 준비 중
mutant와 negative control로 test를 test한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 숫자를 비교하는 그림 · 먼저 알면 좋은 수업 1개
- 44
학습 자료와 연습 문제 준비 중
unit·integration·system·E2E 경계를 선택한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 45
학습 자료와 연습 문제 준비 중
fake·mock과 실제 integration seam을 교차 검증한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 46
대표 체험 수업
재현 가능한 failure triage evidence loop
8개 바로 풀 문제 · 자주 헷갈리는 곳 3개 · 직접 움직여 보는 그림 · 먼저 알면 좋은 수업 3개
- 47
학습 자료와 연습 문제 준비 중
CI quality gate와 Python matrix를 설계한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 일의 순서를 선으로 이은 그림 · 먼저 알면 좋은 수업 1개
- 48
학습 자료와 연습 문제 준비 중
TDD와 재현 가능한 defect report를 연결한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 시간 순서 그림 · 먼저 알면 좋은 수업 1개
- 49
학습 자료와 연습 문제 준비 중
online judge hidden test를 local oracle로 대비한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 직접 움직여 보는 그림 · 먼저 알면 좋은 수업 1개
- 50
학습 자료와 연습 문제 준비 중
PCET 직접 정렬과 선택적 자격 확장을 구분한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 비교표 · 먼저 알면 좋은 수업 1개
- 51
학습 자료와 연습 문제 준비 중
property·metamorphic relation과 Hypothesis shrinking을 쓴다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 모습이 바뀌는 순서 그림 · 먼저 알면 좋은 수업 1개
- 52
학습 자료와 연습 문제 준비 중
AI 생성 patch와 test를 독립 감사한다
8개 연습 문제 틀 · 자주 헷갈리는 곳 3개 · 직접 움직여 보는 그림 · 먼저 알면 좋은 수업 3개
마지막에 혼자 해 보는 도전
oracle defect, shared fixture state, wrong mock lookup, flaky order, log context leak이 섞인 synthetic order service를 재현·국소화·수정하고 `failure-triage-evidence-ledger`를 구현한다.
실제와 닮은 상황
known-good·known-bad implementation, order permutation, environment/time/random variants, fake·real adapter, warning·logging·coverage artifacts와 AI가 만든 test·patch가 섞인 production-like release review다.
AI가 제안한 test·fixture·mock·logging·patch를 단계별로 표시하고, AI 사용 전에 사람이 고정한 expected·oracle·failure signature와 AI 없이 통과한 hidden transfer evidence를 별도 제출한다.
마지막에 완성할 것
- requirement→partition·boundary·state·negative case와 independent oracle traceability matrix
- minimal reproducer, hypothesis ledger, pdb/traceback/faulthandler·fixture lifecycle·mock lookup·LogRecord first-divergence receipt
- line·branch coverage와 target mutant kill, fake·real integration contract 및 order-permutation replay report
- AI patch의 oracle provenance·minimal diff·hidden transfer·secret scan과 CI Python matrix approval record
다 했는지 확인하는 기준
- expected를 구현에서 복사하지 않고 계약·독립 model·invariant에서 도출하며 known-good와 target mutant를 정확히 구분한다.
- failure input을 synthetic fixture와 environment fingerprint로 clean process에서 재현하고 한 번에 한 축을 바꿔 last-good·first-bad state를 국소화한다.
- pytest collection·fixture scope·teardown·tmp_path·capture·monkeypatch와 mock lookup을 추적해 order-independent·resource-safe suite를 만든다.
- logger hierarchy·level·record·handler·formatter·caplog을 검증하고 모든 diagnostic artifact에서 credential·개인정보·private grader sentinel 0건을 보장한다.
- line·branch coverage를 execution evidence로만 해석하고 mutation·negative control·integration contract로 oracle과 seam의 실제 탐지력을 증명한다.
- AI 없이 미공개 failure variant를 통과하고 exact Python 3.14.6 clean replay·order permutation·CI matrix와 accept/refactor/reject human verdict를 제출한다.
