위키득계정 ↗
기술

Csmith

Csmith기술
초기 공개
2009년
생성 언어
C
주요 용도
컴파일러 시험
검사 방식
무작위 생성과 차등 시험
Csmith는 무작위 C 프로그램을 만들어 컴파일러의 오류를 찾는 도구다. 같은 프로그램을 서로 다른 컴파일러로 처리한 결과를 비교하는 차등 시험을 주요 판단 방법으로 사용한다.

시험 프로그램의 자동 생성

컴파일러를 검사할 많은 C 프로그램을 사람이 일일이 쓰는 대신 자동으로 생성한다. 생성한 프로그램의 통계 정보도 함께 출력해 시험 자료를 제공한다.

컴파일러 사이의 비교

같은 C 프로그램을 서로 다른 컴파일러나 다른 버전으로 빌드한 뒤 실행 결과를 비교한다. 결과가 다르면 컴파일러의 문제나 생성 도구 자체의 문제를 조사할 단서가 된다.

정의되지 않은 동작의 회피

C의 정의되지 않은 동작이 들어 있으면 결과 차이를 컴파일러 오류라고 판단하기 어렵다. Csmith는 이런 동작이 없는 프로그램을 생성하는 것을 중요한 설계 조건으로 삼는다.

생성과 축소의 다른 역할

무작위 생성은 새로운 시험 사례를 넓게 탐색하는 역할이다. 실패를 발견한 뒤에는 델타 디버깅처럼 재현 사례를 줄이는 접근과 목적이 다르므로 발견과 분석을 구분해 이해할 수 있다.

관련 문서

델타 디버깅 / 소프트웨어 테스트 / 컴파일러 / C 언어 / 프로그래밍 / 디버깅