Golden 기대값은 구현과 독립적으로 도출하고 계약상 의미만 고정한다
Golden 사례가 구현의 회귀를 판별하려면 기대값을 검사 대상 구현의 현재 출력에서 그대로 복사하지 않고, 명시된 계약·확정 정책·수작업 계산·단순한 참조 구현처럼 독립적인 근거에서 도출해야 한다. 비교도 객체 전체의 우연한 모양이 아니라 계약이 보장하는 관찰 가능한 의미에 한정한다.
기대값이 구현을 따라가거나 비교가 지나치게 엄격할 때
같은 프로덕션 로직으로 기대값을 생성하면 양쪽이 같은 방식으로 틀릴 수 있다. 반대로 계약이 고정하지 않은 ID·시각·순서·부가 필드까지 exact equality로 묶으면 올바른 리팩터링에도 깨지는 취약한 테스트가 된다.
프로젝트 맥락에서 분리한 이유
Vigilantis의 Golden Dataset은 사람이 검토한 입력·기대값과 정책 임계값을 공용 회귀 자산으로 보존한다. 그 저장 경로, 현재 시나리오와 PR 사례는 프로젝트 맥락이지만, 기대값의 독립성과 계약 의미 비교는 Golden file, snapshot, 승인 테스트를 쓰는 다른 프로젝트에서도 재사용할 수 있다.
기대값과 비교 계약을 관리할 때
- 계약·정책 버전, 사례의 목적과 기대값 도출 근거를 함께 남긴다.
- 정책 변경으로 기대값을 바꿀 때는 구현 출력을 자동 승인하지 않고 의도된 계약 변경인지 검토한다.
- 비결정적 ID·타임스탬프·순서와 자유 필드는 제외하거나 정규화한다.
- 여러 결과가 허용되면 단일 값 대신 허용 집합, 오차 범위, 속성·불변식 또는 differential oracle을 사용한다.
- 상태 변경과 외부 호출이 계약이면 응답뿐 아니라 초기·최종 상태, 필요한 부작용과 금지된 부작용도 판정에 포함한다.
Golden Dataset이 반드시 정상 수용 사례만 뜻하는 보편 표준은 아니다. 각 프로젝트가 corpus의 입력 영역과 판정 계약을 명시한다.
승격 원문
- 프로젝트: Vigilantis
- 원문: Golden Dataset과 테스트 분류 검토 - ChatGPT 공유 대화
- 확인일: 2026-09-03
근거
- 테스트 분류 검토 - ChatGPT 공유 대화
- Software Engineering at Google: Unit Testing — 공개 계약의 행동·상태를 구현 세부보다 우선해 검증하는 원칙을 대조했다.
- pytest assertions — exact equality 외에 허용 오차 등 계약에 맞는 비교 방식을 확인했다.