QuickCheck

From Wikipedia, the free encyclopedia
Jump to: navigation, search
QuickCheck
Developer(s) Koen Claessen, John Hughes
Stable release 2.4.1.1 / Tue Apr 26 18:58:51 UTC 2011
Operating system Unix-like, Microsoft Windows
Type Software testing
License BSD-style
Website http://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 C,[2] C++,[3] Chicken Scheme,[4] Clojure,[5] Common Lisp,[6] D,[7] Erlang,[8] F#,[9] Factor,[10] Io,[11] Java[12][13] JavaScript,[14] Node.js,[15] ObjC,[16] OCaml,[17] Perl,[18] Python,[19] Ruby,[20] Scala,[21] Scheme,[22] Smalltalk[23] and Standard ML.[24]

[edit] See also

[edit] References

  1. ^ http://hackage.haskell.org/packages/archive/collections-api/1.0.0.0/doc/html/Data-Collections-Properties.html
  2. ^ mcandre (October 13, 2011). "qc". Github.com. https://github.com/mcandre/qc. Retrieved December 9, 2011. 
  3. ^ "QuickCheck". Software.legiasoft.com. http://software.legiasoft.com/quickcheck/. Retrieved December 9, 2011. 
  4. ^ mcandre. "cluckcheck". Github.com. https://github.com/mcandre/cluckcheck. Retrieved December 9, 2011. 
  5. ^ ClojureCheck. "ClojureCheck". Bitbucket.org. https://bitbucket.org/kotarak/clojurecheck. Retrieved December 9, 2011. 
  6. ^ "cl-quickcheck". Cliki.net. http://www.cliki.net/cl-quickcheck. Retrieved December 9, 2011. 
  7. ^ mcandre (October 27, 2011). "dashcheck". Github.com. https://github.com/mcandre/dashcheck. Retrieved December 9, 2011. 
  8. ^ Arts, Thomas and Hughes, John and Johansson, Joakim and Wiger, Ulf; Phil Trinder (editor) (2006). "Testing Telecoms Software with Quviq QuickCheck" (PDF). Proceedings of the Fifth ACM SIGPLAN Erlang Workshop": 2. doi:10.1145/1159789.1159792. 
  9. ^ "FsCheck". Codeplex.com. May 29, 2011. http://www.codeplex.com/fscheck. Retrieved December 9, 2011. 
  10. ^ mcandre (October 13, 2011). "factcheck". Github.com. https://github.com/mcandre/factcheck. Retrieved December 9, 2011. 
  11. ^ mcandre (October 17, 2011). "IoCheck". Github.com. https://github.com/mcandre/IoCheck. Retrieved December 9, 2011. 
  12. ^ "Quickcheck for Java". Quickcheck.dev.java.net. http://quickcheck.dev.java.net/. Retrieved December 9, 2011. 
  13. ^ "JCheck". JCheck. http://www.jcheck.org/. Retrieved December 9, 2011. 
  14. ^ qc.js. "qc.js". Bitbucket.org. http://bitbucket.org/darrint/qc.js/. Retrieved December 9, 2011. 
  15. ^ Node.js node-quickcheck
  16. ^ mcandre. "objcheck". Github.com. https://github.com/mcandre/objcheck. Retrieved December 9, 2011. 
  17. ^ little-arhat. "ocaml-quickcheck". Github.com. https://github.com/camlunity/ocaml-quickcheck. Retrieved December 9, 2011. 
  18. ^ "Test::LectroTest::Tutorial". http://search.cpan.org/~tmoertel/Test-LectroTest-0.3600/lib/Test/LectroTest/Tutorial.pod. "The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/." 
  19. ^ Bravender, Dan (June 21, 2009). "qc – another Python implementation of QuickCheck". Dan.bravender.us. http://dan.bravender.us/2009/6/21/Simple_Quickcheck_implementation_for_Python.html. Retrieved December 9, 2011. 
  20. ^ "RushCheck". Rushcheck.rubyforge.org. http://rushcheck.rubyforge.org/. Retrieved December 9, 2011. 
  21. ^ "ScalaCheck". Google. http://code.google.com/p/scalacheck/. Retrieved December 9, 2011. 
  22. ^ "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).
  23. ^ mcandre. "QuickSmash". Github.com. https://github.com/mcandre/quicksmash. Retrieved December 9, 2011. 
  24. ^ "QCheck/SML". Contrapunctus.net. November 22, 2011. http://contrapunctus.net/league/haques/qcheck/. Retrieved December 9, 2011. 

[edit] Further reading

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages