테스트 = Spec 문화
테스트 = Spec 문화
한 줄 정의
동작 명세가 테스트 케이스. 별도 설계 문서 불필요. “입력 → 기대 동작”이 DoD.
핵심 내용
기존 방식 (문서 중심):
requirements.md → design.md → implementation → test
테스트 = Spec:
test_case("입력 X" → "기대 동작 Y") = 동작 명세
Mock vs Real LLM:
- Mock LLM (결정적): “이 응답이 오면 시스템이 이렇게 동작” → 상태 전이 테스트
- Real LLM (비결정적): “크래시 안 남” → E2E 스모크 테스트
테스트 피라미드 (4층):
E2E (5개, 실제 LLM) ← 크래시 안 남
Regression (15개, BUGS.md) ← P0/P1 재발 방지
State Transition (14개) ← 상태 전이 보장 (단위 테스트로 못 잡음)
Contracts (16개) ← 인터페이스 계약
Unit (77개) ← 함수 단위
Golden Set 정책:
- P0/P1 버그 수정 후 반드시 Golden Set에 추가
- 포맷:
{name, intent, data, expected_outcome, expected_not, bug_id}
적용 맥락
LLM 에이전트처럼 비결정적 컴포넌트가 있는 시스템. 상태 전이 버그는 단위 테스트로 잡을 수 없음.
Relationships
derived_from DAIOps (LangGraph ML 자동화)
related_to goal-driven-execution — Karpathy 4원칙의 Goal-Driven Execution과 동일 방향