Jump to content

QuickCheck

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 129.174.190.17 (talk) at 22:44, 23 September 2011 (Added the C port). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

QuickCheck
Developer(s)Koen Claessen, John Hughes
Stable release
2.4.1.1 / Tue Apr 26 18:58:51 UTC 2011
Operating systemUnix-like, Microsoft Windows
TypeSoftware testing
LicenseBSD-style
Websitehttp://www.cse.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.

In QuickCheck the programmer writes 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 of QuickCheck exist for Erlang,[2] Scheme[3], Common Lisp,[4] Perl,[5] Python,[6] Ruby,[7] Java,[8][9] Scala,[10] F#,[11], Smalltalk,[12] Standard ML,[13] JavaScript,[14], Node.js[15], Clojure[16], C.[17], C++.[18], OCaml[19].

See also

References

  1. ^ http://www.cse.unsw.edu.au/~dons/code/fps/tests/Properties.hs
  2. ^ Arts, Thomas and Hughes, John and Johansson, Joakim and Wiger, Ulf (2006). "Testing Telecoms Software with Quviq QuickCheck". Proceedings of the Fifth ACM SIGPLAN Erlang Workshop": 2. doi:10.1145/1159789.1159792. {{cite journal}}: |access-date= requires |url= (help); |format= requires |url= (help); Unknown parameter |coauthors= ignored (|author= suggested) (help)CS1 maint: multiple names: authors list (link)
  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" [1] -(Internet Archive copy).
  4. ^ cl-quickcheck
  5. ^ "Test::LectroTest::Tutorial". The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/. {{cite web}}: External link in |quote= (help)
  6. ^ qc - another Python implementation of QuickCheck
  7. ^ RushCheck
  8. ^ Quickcheck for Java
  9. ^ JCheck
  10. ^ ScalaCheck
  11. ^ FsCheck
  12. ^ QuickSmash]
  13. ^ QCheck/SML
  14. ^ qc.js
  15. ^ Node.js quickcheck
  16. ^ ClojureCheck
  17. ^ qc
  18. ^ QuickCheck++
  19. ^ Ocaml

Further reading