This page refers to the original version of QuickCheck, developed in Haskell. For information on the commercial version, see

QuickCheck logo

Koen Claessen and John Hughes

QuickCheck is a tool for testing Haskell programs automatically. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases. Specifications are expressed in Haskell, using combinators defined in the QuickCheck library. QuickCheck provides combinators to define properties, observe the distribution of test data, and define test data generators.


User Experiences

Current Developments

We currently have several experimental versions of QuickCheck, including one integrated with the Hat tracing tool. The next job is to merge them all back together again!

Other Languages

Similar libraries have been implemented for many other programming languages, from Scala to Google's Go--too many to keep an up-to-date list here. A commercial version in Erlang is marketed by our associated company, Quviq.