QuickCheck

From Wikipedia, the free encyclopedia

Jump to: navigation, search
QuickCheck
Developed by Koen Claessen, John Hughes
Latest release 2.1.0.1 / Sat Sep 27 13:43:28 PDT 2008
Operating system Unix-like, Microsoft Windows
Type Software testing
License BSD-style
Website http://www.cs.chalmers.se/~rjmh/QuickCheck/

QuickCheck is a combinator library written in Haskell, designed to assist in software testing by generating test cases for test suites. It is compatible with the GHC compiler and the Hugs interpreter. The author of the program being tested makes certain assertions about logical properties that a function should fulfill; these tests are specifically generated to test and attempt to falsify these assertions. The project was started in 2000. Besides being used to test regular programs, QuickCheck is also useful for building up a functional specification, for documenting what functions should be doing, and for testing compiler implementations[1].

Re-implementations (clones) of QuickCheck exist for Erlang[2], Scheme[3], Common Lisp[4], Perl[5], Python[4], Ruby[6], Java[7] [8], Scala[9], F#[10], and Standard ML[11].

[edit] Main References

[edit] Citations and footnotes

  1. ^ For such a test suite, see [1].
  2. ^ See Arts 2006
  3. ^ "Scheme-Check is a module that implements randomized unit testing in PLT Scheme. With Scheme-Check, instead of creating lots of individual tests, you specify properties of your code and Scheme-Check generates a large amount of random data sets to test those properties. Scheme-Check is basically a Scheme port of QuickCheck" [2] -(Internet Archive copy).
  4. ^ a b "Libraries for automatic specification-based testing. They're both incomplete compared to the original QuickCheck (the Lisp comes closer than the Python)." [3]
  5. ^ See Test::LectroTest [4] for a Perl implementation. "The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/."[5]
  6. ^ See RushCheck [6] for a Ruby implementation.
  7. ^ See Reductio [7] for a Java implementation; Reductio can also be used from within Scala [8].
  8. ^ See Quickcheck for Java [9].
  9. ^ See ScalaCheck [10] for a Scala implementation.
  10. ^ FsCheck
  11. ^ See QCheck/SML [11] for a Standard ML implementation.

[edit] External links

Personal tools
Languages