테스트 설계는 시나리오 오라클 범위와 위험을 별도 축으로 다룬다
테스트를 설명하는 네 가지 질문
테스트를 하나의 상호 배타적인 종류 목록으로 만들기 전에 다음 질문을 별도 축으로 다룬다.
- 시나리오: 정상 수용, 계약 거부, 장애·손상 방어 중 무엇을 겪는가?
- 오라클: 명시적 example·Golden 기대값, 계약 의미 비교, 속성·불변식, differential 중 무엇으로 옳음을 판정하는가?
- 범위: unit, component, integration, 경계 계약, end-to-end 중 어디까지 실행하는가?
- 위험: 경계값, 상태 전이, 복원력, 호환성, 동시성, 보안, 자원 한계 중 무엇을 막는가?
사례를 공급하는 방식과 옳음을 판정하는 기준
입력 생성 방식도 이 판정들과 구분한다. parametrize, property-based generation과 fuzzing은 사례를 공급하는 방식이며, 생성된 입력을 수용·거부·방어 중 어떻게 판정할지는 오라클과 계약이 별도로 정한다. Golden Dataset은 보통 입력과 기대값을 보존하는 데이터·오라클 역할이고, unit은 실행 범위이므로 둘을 같은 분류축에 놓지 않는다.
pytest 한 함수에 모여 보이는 서로 다른 역할
Vigilantis에서는 pytest 한 함수 안에 데이터, fixture, 실행 절차와 assert가 함께 보여 Golden Dataset, 계약 거부와 방어적 단위 테스트가 같은 종류처럼 해석되었다. 이 혼동은 프레임워크나 도메인에 한정되지 않으며, 서로 다른 보장 질문을 한 이름에 합칠 때 반복해서 생길 수 있다.
적용 범위와 한계
- 네 축은 테스트를 설명하고 빠진 보장을 찾기 위한 설계 모형이지, 공인된 하나의 표준 분류표나 수학적으로 직교하는 좌표계가 아니다.
- 축은 서로 영향을 줄 수 있다. 예를 들어 외부 장애라는 시나리오는 통합 범위와 복원력 위험을 요구할 수 있지만, 그렇다고 세 판정이 같은 것은 아니다.
- 모든 조합을 채우지 않는다. 테스트 대상이 소유한 책임과 실제 위험에 필요한 조합만 선택한다.
- Golden Dataset, contract test 같은 용어의 세부 범위는 프로젝트 계약에서 다시 정의한다.
승격 원문
- 프로젝트: Vigilantis
- 원문: 테스트의 시나리오 오라클 범위는 별도 축이다
- 확인일: 2026-09-03
근거
- 테스트 분류 검토 - ChatGPT 공유 대화
- ISTQB Certified Tester Foundation Level Syllabus v4.0.1 — 테스트 수준과 테스트 유형을 별도 개념으로 구분한다.
- pytest parametrization과 assertions — 사례 공급과 기대 판정이 프레임워크 안에서 서로 다른 역할임을 확인했다.
- Hypothesis Introduction — 생성된 입력과 그 입력에 적용하는 property가 구분됨을 확인했다.