원문 : QuickCheck: An Automatic Testing Tool for Haskell
퀵체크는 하스켈 프로그램을 자동으로 점검하는 도구이다. 개발자가 프로그램의 명세(specification) 를 입력하면 퀵체크는 무작위로 만들어진 수많은 경우에서 함수가 만족해야 하는 속성(property)이 유지되는지 점검한다. 명세는 퀵체크 라이브러리에 정의되어 있는 콤비네이터(combinator)를 이용해서 하스켈 문법으로 적는다. 퀵체크는 속성을 정의하고, 점검 데이터의 분포를 관찰하고, 점검 데이터 생성기를 정의할 수 있는 콤비네이터를 제공한다.
속성을 정의하는 간단한 예제는 아래와 같다.
prop_RevRev xs = reverse (reverse xs) == xs
where types = xs :: [Int]
속성을 점검하려면 인터프리터에서 위 정의를 불러온 후 아래와 같이 입력한다.
Main> quickCheck prop_RevRev
OK, passed 100 tests.
속성이 실패하면 퀵체크가 반례를 보여준다. 예를 들어 아래와 같이 정의했을 때
prop_RevId xs = reverse xs == xs
where types = xs :: [Int]
점검하면 아래처럼 나온다.
Main> quickCheck prop_RevId
Falsifiable, after 1 tests:
[-3,15]
퀵체크를 사용하려면 모듈 QuickCheck를 다운로드 해야 한다. 스크립트 quickCheck도 다운로드 하면 좋다. 명세가 포함된 모든 모듈이나 점검 데이터 생성기에 모듈 QuickCheck
를 임포트(import)한다. 인터프리터에서 속성이 정의된 모듈을 불러온 후 아래처럼 입력하면 점검할 수 있다.
quickCheck <속성 이름>
아래처럼 입력한 모듈에 정의된 모든 속성을 점검하는 스크립트를 실행해도 된다.
> quickCheck <옵션> <파일 이름>