QuickCheck: a lightweight tool for random testing of Haskell programs

Koen Claessen, John Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In ICFP. pages 268-279, 2000. [doi]

Abstract

Quick Check is a tool which aids the Haskell programmer in formulating and testing properties of programs. Properties are described as Haskell functions, and can be automatically tested on random input, but it is also possible to define custom test data generators. We present a number of case studies, in which the tool was successfully used, and also point out some pitfalls to avoid. Random testing is especially suitable for functional programs because properties can be stated at a fine grain. When a function is built from separately tested components, then random testing suffices to obtain good coverage of the definition under test.