QuickCheck
From Wikipedia, the free encyclopedia
QuickCheck | |
---|---|
Developed by | Koen Claessen, John Hughes |
Latest release | 1.1.0.0 |
OS | Unix-like, Microsoft Windows |
Genre | Software testing |
License | BSD-style |
Website | [9] |
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. It was begun 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[4], Ruby[6], Scala[7], and Standard ML[8].
[edit] Main References
- Arts, Thomas and Hughes, John and Johansson, Joakim and Wiger, Ulf; Phil Trinder (editor) (2006). ""Testing Telecoms Software with Quviq QuickCheck"" (in English) (PDF). Proceedings of the Fifth ACM SIGPLAN Erlang Workshop".[10]
- Koen Claessen, John Hughes (2002). "Testing Monadic Programs with QuickCheck" (in English) (PostScript). SIGPLAN Notices 37 (12): 47–59. doi: .
- Koen Claessen and John Hughes (2000). "QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs" (in English) (PostScript). Proc. of International Conference on Functional Programming (ICFP), ACM SIGPLAN.
- Koen Claessen and John Hughes (2003). "Specification Based Testing with QuickCheck" (in English). The Fun of Programming, Cornerstones of Computing, Jeremy Gibbons and Oege de Moor (eds.): 17–40.
- Koen Claessen (August 2004). "QuickCheck: Specification-based Random Testing" (in English) (PPT). Presentation at Summer Institute on Trends in Testing: Theory, Techniques and Tools.
- Koen Claessen, Colin Runciman, Olaf Chitil, and John Hughes (2002). "Testing and Tracing Lazy Functional Programs Using QuickCheck and Hat" (in English) (PostScript). Advanced Functional Programming: 4th International School, Lecture Notes in Computer Science 2638: 59–99.
[edit] Citations and footnotes
- ^ For such a test suite, see [1].
- ^ See Arts 2006
- ^ "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).
- ^ 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]
- ^ 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]
- ^ See RushCheck [6] for a Ruby implementation.
- ^ See ScalaCheck [7] or Reductio for Scala implementations.
- ^ See QCheck/SML [8] for a Standard ML implementation.
[edit] External links
- "Introduction to QuickCheck" -(on the Haskell wiki)
- "QuickCheck as a test set generator: Haskell as an ultimate "smoke testing" tool OR Using QuickCheck as a DIY test data generator"
- "QuickCheck / GADT"
- "Introductory Haskell: Solving the Sorting-It-Out Kata" -(demonstration of the use of QuickCheck in solving a programming problem)
- QuickCheck testimonial
- "System.FilePath, automated testing"