Jump to content

QuickCheck: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
SCriBu (talk | contribs)
m remove misplaced 'and '
Added the C port
Line 29: Line 29:
| doi = 10.1145/1159789.1159792
| doi = 10.1145/1159789.1159792
| pages = 2
| pages = 2
}}</ref> [[Scheme (programming language)|Scheme]]<ref>"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).</ref>, [[Common Lisp]],<ref>[http://www.cliki.net/cl-quickcheck cl-quickcheck]</ref> [[Perl]],<ref>{{cite web|url=http://search.cpan.org/~tmoertel/Test-LectroTest-0.3600/lib/Test/LectroTest/Tutorial.pod |title=Test::LectroTest::Tutorial |quote=The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/.}}</ref> [[Python (programming language)|Python]],<ref>[http://dan.bravender.us/2009/6/21/Simple_Quickcheck_implementation_for_Python.html qc - another Python implementation of QuickCheck]</ref> [[Ruby (programming language)|Ruby]],<ref>[http://rushcheck.rubyforge.org/ RushCheck]</ref> [[Java (programming language)|Java]],<ref>[http://quickcheck.dev.java.net/ Quickcheck for Java]</ref><ref>[http://www.jcheck.org/ JCheck]</ref> [[Scala (programming language)|Scala]],<ref>[http://code.google.com/p/scalacheck/ ScalaCheck]</ref> [[F Sharp (programming language)|F#]],<ref>[http://www.codeplex.com/fscheck FsCheck]</ref>, [[Smalltalk]],<ref>[https://github.com/mcandre/quicksmash QuickSmash]]</ref> [[Standard ML (programming language)|Standard ML]],<ref>[http://contrapunctus.net/league/haques/qcheck/ QCheck/SML]</ref> [[JavaScript]],<ref>[http://bitbucket.org/darrint/qc.js/ qc.js]</ref>, [[Node.js]]<ref>[http://search.npmjs.org/#/quickcheck Node.js quickcheck]</ref>, [[Clojure]]<ref>[https://bitbucket.org/kotarak/clojurecheck ClojureCheck]</ref>, [[C++]].<ref>[http://software.legiasoft.com/quickcheck/ QuickCheck++]</ref>, [[OCaml]]<ref>[https://github.com/camlunity/ocaml-quickcheck Ocaml]</ref>.
}}</ref> [[Scheme (programming language)|Scheme]]<ref>"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).</ref>, [[Common Lisp]],<ref>[http://www.cliki.net/cl-quickcheck cl-quickcheck]</ref> [[Perl]],<ref>{{cite web|url=http://search.cpan.org/~tmoertel/Test-LectroTest-0.3600/lib/Test/LectroTest/Tutorial.pod |title=Test::LectroTest::Tutorial |quote=The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/.}}</ref> [[Python (programming language)|Python]],<ref>[http://dan.bravender.us/2009/6/21/Simple_Quickcheck_implementation_for_Python.html qc - another Python implementation of QuickCheck]</ref> [[Ruby (programming language)|Ruby]],<ref>[http://rushcheck.rubyforge.org/ RushCheck]</ref> [[Java (programming language)|Java]],<ref>[http://quickcheck.dev.java.net/ Quickcheck for Java]</ref><ref>[http://www.jcheck.org/ JCheck]</ref> [[Scala (programming language)|Scala]],<ref>[http://code.google.com/p/scalacheck/ ScalaCheck]</ref> [[F Sharp (programming language)|F#]],<ref>[http://www.codeplex.com/fscheck FsCheck]</ref>, [[Smalltalk]],<ref>[https://github.com/mcandre/quicksmash QuickSmash]]</ref> [[Standard ML (programming language)|Standard ML]],<ref>[http://contrapunctus.net/league/haques/qcheck/ QCheck/SML]</ref> [[JavaScript]],<ref>[http://bitbucket.org/darrint/qc.js/ qc.js]</ref>, [[Node.js]]<ref>[http://search.npmjs.org/#/quickcheck Node.js quickcheck]</ref>, [[Clojure]]<ref>[https://bitbucket.org/kotarak/clojurecheck ClojureCheck]</ref>, [[C]].<ref>[https://github.com/mcandre/qc qc]</ref>, [[C++]].<ref>[http://software.legiasoft.com/quickcheck/ QuickCheck++]</ref>, [[OCaml]]<ref>[https://github.com/camlunity/ocaml-quickcheck Ocaml]</ref>.


==See also==
==See also==

Revision as of 22:44, 23 September 2011

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