위키득계정 ↗
기술

FuzzTest

FuzzTest기술
대상 언어
C플러스플러스
방식
속성 기반 커버리지 유도 퍼징
입력 구성
도메인 API
연계
GoogleTest 등 테스트 프레임워크
FuzzTest는 속성 기반 테스트와 커버리지 유도 퍼징을 결합한 C플러스플러스 테스트 프레임워크다. 입력 범위와 지켜야 할 조건을 작성하면 다양한 입력으로 그 조건을 시험한다.

예시보다 일반적인 조건

몇 개의 입력과 정답을 나열하는 대신 특정 종류의 입력에서 항상 성립해야 하는 성질을 작성한다. 입력 도메인은 생성할 값의 범위와 형태를 표현한다. 의미 있는 도메인을 준비하면 관심 없는 입력만 반복하는 상황을 줄이는 데 도움이 된다.

퍼징 엔진과 테스트 코드

FuzzTest는 풍부한 테스트 API와 커버리지에 기반한 탐색 엔진을 함께 제공한다. 일반 단위 테스트와 같은 코드베이스에 두고 실행할 수 있다. 발견되는 문제의 범위는 작성한 속성과 검사 대상이 노출하는 실행 경로에 영향을 받는다.

테스트 결과 해석

많은 입력을 실행했다는 사실은 모든 가능한 입력을 증명한 것과 다르다. 테스트가 실패하면 입력 조건과 실제 코드의 동작을 재현해 원인을 확인한다. 실패가 없다면 탐색 시간, 도메인, 관측한 속성의 범위를 기준으로 결과를 평가한다.

관련 문서

Bolero Rust 검사 도구 / Cargo-fuzz / LibAFL / Fuzzilli