입력과 성질을 함께 설계하기
Rapid는 사용자가 정의한 성질에 여러 생성 입력을 적용한다. 생성기는 어떤 데이터를 뽑을지에 관한 정의이며 실제 값을 얻는 시점에 입력이 만들어진다. 작은 값과 경계 사례를 더 탐색하는 구성을 제공하지만 검사할 성질이 잘못되면 결과의 의미도 달라진다. 도메인에 맞는 규칙을 먼저 정한다.
반례와 상태 검사
실패한 사례를 자동으로 줄여 원인을 파악하기 쉽게 하고 축소한 사례를 저장해 다시 실행할 수 있다. 상태 기계 방식의 검사도 지원해 연속된 동작과 모델의 관계를 확인할 수 있다. 단순 반환값 검사보다 표현할 범위가 넓어지는 만큼 모델과 대상의 상태 전이를 독립적으로 정의해야 한다.
기본 퍼저와의 관계
Rapid 자체는 Go 기본 퍼저와 같은 커버리지 유도 피드백을 제공하는 도구는 아니다. 다만 검사 함수를 퍼징 대상으로 연결하는 기능이 있다. 생성 기반 검사와 퍼징을 선택할 때 입력 구조와 실행 목적을 고려한다. 어떤 방식이든 표본에서 실패를 찾지 못했다는 결과를 모든 입력에 대한 정확성 증명으로 해석하지 않는다.
관련 문서
Gopter / FsCheck / ScalaCheck