- QuickCheck
Infobox_Software
name = QuickCheck
logo =
caption =
developer = Koen Claessen, John Hughes
latest_release_version = 2.1.0.1
latest_release_date = Sat Sep 27 13:43:28 PDT 2008
operating_system =Unix-like ,Microsoft Windows
genre = Software testing
license = BSD-style
website = [http://www.cs.chalmers.se/~rjmh/QuickCheck/] |QuickCheck is a
combinator library written in Haskell, designed to assist insoftware testing by generatingtest case s fortest suite s. It is compatible with the GHCcompiler and theHugs 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 tofalsify these assertions. It was begun in 2000. Besides being used to test regular programs, QuickCheck is also useful for building up afunctional specification , for documenting what functions should be doing, and for testing compiler implementations [For such a test suite, see [http://www.cse.unsw.edu.au/~dons/code/fps/tests/Properties.hs] .] .Re-implementations (clones) of QuickCheck exist for Erlang [See Arts 2006] , Scheme ["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" [http://web.archive.org/web/20050212183945sh_re_/www.inf.ufrgs.br/~carlossch/scheme-check/] -(
Internet Archive copy).] ,Common Lisp "Libraries for automatic specification-based testing. They're both incomplete compared to the original QuickCheck (the Lisp comes closer than the Python)." [http://www.accesscom.com/~darius/software/clickcheck.html] ] ,Perl [See Test::LectroTest [http://search.cpan.org/~tmoertel/Test-LectroTest-0.3600] for aPerl implementation. "The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/." [http://search.cpan.org/~tmoertel/Test-LectroTest-0.3600/lib/Test/LectroTest/Tutorial.pod] ] , Python, Ruby [See RushCheck [http://rushcheck.rubyforge.org/] for a Ruby implementation.] , Java [See Reductio [http://reductiotest.org/] for a Java implementation; Reductio can also be used from within Scala [http://reductiotest.org/examples/scala] .] , Scala [See ScalaCheck [http://code.google.com/p/scalacheck/] for a Scala implementation.] , and Standard ML [See QCheck/SML [http://contrapunctus.net/league/haques/qcheck/] for a Standard ML implementation.] .Main References
* cite journal
author = Arts, Thomas and Hughes, John and Johansson, Joakim and Wiger, Ulf
coauthors = Phil Trinder (editor)
year = 2006
title = [http://www.ituniv.se/program/sem_research/Publications/2006/AHJW06/erlang001-arts.pdf "Testing Telecoms Software with Quviq QuickCheck"]
journal = Proceedings of the Fifth ACM SIGPLAN Erlang Workshop"
language = English
format = PDF
accessdate = 2006-01-29 [http://www.ituniv.se/program/sem_research/Publications/2006/AHJW06]
* cite journal
author = Koen Claessen, John Hughes
year = 2002
title = Testing Monadic Programs with QuickCheck
journal = SIGPLAN Notices
volume = 37
issue = 12
pages = 47–59
url = http://www.cs.chalmers.se/~rjmh/Papers/QuickCheckST.ps
language = English
format =PostScript
accessdate = 2006-01-29
doi = 10.1145/636517.636527
* cite journal
author = Koen Claessen and John Hughes
year = 2000
title = QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs
journal = Proc. of International Conference on Functional Programming (ICFP), ACM SIGPLAN
url = http://www.cs.chalmers.se/~koen/pubs/icfp00-quickcheck.ps
language = English
format =PostScript
accessdate = 2006-01-29
* cite journal
author = Koen Claessen and John Hughes
year = 2003
title = Specification Based Testing with QuickCheck
journal = The Fun of Programming, Cornerstones of Computing, Jeremy Gibbons and Oege de Moor (eds.)
volume =
issue =
pages = 17–40
url = http://www.math.chalmers.se/~koen/pubs/entry-fop-quickcheck.html
language = English
accessdate = 2006-01-29
* cite journal
author = Koen Claessen
year = 2004
month = August
title = QuickCheck: Specification-based Random Testing
journal = Presentation at Summer Institute on Trends in Testing: Theory, Techniques and Tools
volume =
issue =
pages =
url = http://www.math.chalmers.se/~koen/pubs/entry-tt04-quickcheck.html
language = English
format = PPT
accessdate = 2006-01-29
* cite journal
author = Koen Claessen, Colin Runciman, Olaf Chitil, and John Hughes
year = 2002
title = Testing and Tracing Lazy Functional Programs Using QuickCheck and Hat
journal = Advanced Functional Programming: 4th International School, Lecture Notes in Computer Science
volume = 2638
pages = 59–99
url = http://www.cs.chalmers.se/~koen/pubs/afp02-quickcheck.ps
language = English
format =PostScript
accessdate = 2006-01-29Citations and footnotes
External links
* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck "Introduction to QuickCheck"] -(on the Haskell wiki)
* [http://haskell.org/haskellwiki/QuickCheck_as_a_test_set_generator "QuickCheck as a test set generator: Haskell as an ultimate "smoke testing" tool OR Using QuickCheck as a DIY test data generator"]
* [http://haskell.org/haskellwiki/QuickCheck_/_GADT "QuickCheck] /GADT "
* [http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata "Introductory Haskell: Solving the Sorting-It-Out Kata"] -(demonstration of the use of QuickCheck in solving a programming problem)
* [http://blog.moertel.com/pages/seven-lessons-from-the-icfp-programming-contest QuickCheck testimonial]
* [http://neilmitchell.blogspot.com/2006/11/systemfilepath-automated-testing.html "System.FilePath, automated testing"]
Wikimedia Foundation. 2010.