QuickCheck
Developer(s) | Koen Claessen, John Hughes |
---|---|
Initial release | 1999 |
Stable release | 2.14.2
/ 14 November 2020 |
Repository | github |
Written in | Haskell |
Operating system | Unix-like, Windows |
Available in | English |
Type | Software testing |
License | BSD-style |
Website | www |
QuickCheck is a software library, a combinator library, originally written in the programming language Haskell, designed to assist in software testing by generating test cases for test suites – an approach known as property testing.
Software
It is compatible with the compiler, Glasgow Haskell Compiler (GHC) and the interpreter, Haskell User's Gofer System (Hugs). It is free and open-source software released under a BSD-style license.
In QuickCheck, assertions are written about logical properties that a
The project began in 1999. 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 many languages:
- C[2][3][4]
- C++[5][6][7]
- Chicken[8]
- Clojure[9][10]
- Common Lisp[11]
- Coq[12]
- D[13]
- Elm[14]
- Elixir[15][16]
- Erlang[17]
- F#, and C#, Visual Basic (.NET) (VB.NET)[18]
- Factor[19]
- Go[20]
- Io[21]
- Java[22][23][24][25][26][27][28]
- JavaScript[29][30][31][32]
- Julia[33]
- Logtalk[34]
- Lua[35]
- Mathematica[36]
- Objective-C[37]
- OCaml[38]
- Perl[39]
- Prolog[40][41]
- PHP[42]
- Pony[43]
- Python[44]
- R[45]
- Racket[46]
- Ruby[47]
- Rust[48][49]
- Scala[50][51][52]
- Scheme[53][54]
- Smalltalk[55]
- Standard ML[56]
- Swift[57]
- TypeScript[58]
- Whiley[59]
See also
References
- ^ "Data.Collections.Properties". hackage.haskell.org.
- ^ Pennebaker, Andrew (mcandre) (October 13, 2011). "qc". GitHub. Retrieved December 9, 2011.
- ^ Zito, Andrea (nivox) (July 27, 2014). "quickcheck4c". GitHub. Retrieved July 27, 2014.
- ^ Vokes, Scott (March 30, 2015). "Theft: property-based testing for C". GitHub. Retrieved November 16, 2015.
- ^ "QuickCheck". Software.legiasoft.com. Retrieved December 9, 2011.
- ^ "CppQuickCheck". GitHub. Retrieved March 30, 2015.
- ^ "RapidCheck". GitHub. Retrieved March 30, 2015.
- ^ Pennebaker, Andrew (mcandre). "cluckcheck". GitHub. Retrieved December 9, 2011.
- ^ Draper, Reid (reiddraper) (May 9, 2013). "simple-check". GitHub. Retrieved August 21, 2013.
- ^ Draper, Reid (reiddraper) (March 27, 2014). "org.clojure/test.check". GitHub. Retrieved March 27, 2014.
- ^ "cl-quickcheck". Cliki. Retrieved December 9, 2011.
- ^ "QuickChick". GitHub. Retrieved August 26, 2019.
- ^ Pennebaker, Andrew (mcandre) (October 27, 2011). "dashcheck". GitHub. Retrieved December 9, 2011.
- ^ "elm-explorations/test". GitHub. Retrieved November 20, 2018.
- ^ Thomas, Dave (pragdave) (July 17, 2017). "quixir: Property-based testing for Elixir". GitHub. Retrieved April 1, 2019.
- ^ Alfert, Klaus. "propcheck: Property based testing for Elixir". GitHub. Retrieved February 1, 2021.
- ^ "PropEr: a QuickCheck-inspired property-based testing tool for Erlang". GitHub. Retrieved May 8, 2019.
- ^ "FsCheck". GitHub. June 25, 2015. Retrieved June 25, 2011.
- ^ Pennebaker, Andrew (mcandre) (October 13, 2011). "factcheck". GitHub. Retrieved December 9, 2011.
- ^ leanovate (April 26, 2016). "Gopter". GitHub. Retrieved April 26, 2016.
- ^ Pennebaker, Andrew (mcandre) (October 17, 2011). "IoCheck". GitHub. Retrieved December 9, 2011.
- ^ "FunctionalJava's QuickCheck module". FunctionalJava. Retrieved August 14, 2015.
- ^ "Quickcheck for Java". Quickcheck.dev.java.net. Retrieved December 9, 2011.
- ^ "JCheck". JCheck. Retrieved December 9, 2011.
- ^ "junit-quickcheck". junit-quickcheck. Retrieved July 3, 2013.
- ^ "jqwik for the JUnit5 Platform". jqwik. Retrieved June 19, 2017.
- ^ "Quick Theories property testing for Java 8". ncredinburgh. Retrieved October 30, 2017.
- ^ "jetCheck property-based testing for Java 8". JetBrains. Retrieved July 10, 2018.
- ^ Thompson, Darrin (darrint). "qc.js". Bitbucket. Retrieved December 9, 2011.
- ^ Crockford, Douglas. "jscheck". GitHub. Retrieved October 21, 2017.
- ^ Dubien, Nicolas (dubzzz). "fast-check". GitHub. Retrieved February 3, 2018.
- ^ "JSVerify — property based testing for JavaScript. Like QuickCheck". jsverify.github.io.
- ^ "Checkers.jl". GitHub. Retrieved April 8, 2018.
- ^ "lgtunit". Retrieved February 26, 2020.
- ^ "lua-quickcheck". GitHub. Retrieved February 25, 2017.
- ^ "QuickCheck.wl — Automated Property-Based Testing for the Wolfram Language - Online Technical Discussion Groups—Wolfram Community". community.wolfram.com. Retrieved July 11, 2021.
- ^ Pennebaker, Andrew (mcandre). "objcheck". GitHub. Retrieved December 9, 2011.
- ^ Cruanes, Simon. "QuickCheck inspired property-based testing for OCaml". GitHub. Retrieved September 1, 2022.
- ^ "Test: LectroTest: Tutorial".
The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes
- ^ "library(quickcheck)".
- ISBN 978-3-319-07150-3.
- ^ Oestreicher, Stefan (steos). "PhpQuickCheck". GitHub. Retrieved November 12, 2015.
- ^ Wahl, Matthias (mfelsche). "ponycheck". GitHub. Retrieved December 26, 2018.
- ^ MacIver, David (April 16, 2016). "QuickCheck in Every Language". Retrieved August 1, 2022.
- ^ "quickcheck: Property Based Testing in R". GitHub. March 17, 2022.
- ^ "Quickcheck". docs.racket-lang.org.
- ^ Pennebaker, Andrew (mcandre) (September 14, 2017). "Rubycheck: a Ruby port of the QuickCheck unit test framework". GitHub.
- ^ Gallant, Andrew (BurntSushi). "QuickCheck for Rust (with shrinking)". GitHub. Retrieved May 27, 2015.
- ^ "Hypothesis-like property testing for Rust". GitHub.
- ^ "ScalaCheck". GitHub. Retrieved June 30, 2016.
- ^ "scalaprops/scalaprops". GitHub. Retrieved June 30, 2016.
- ^ "nyaya". GitHub. Retrieved June 30, 2016.
- ^ "Scheme-Check: Randomized Unit Testing for PLT Scheme". Archived from the original on February 12, 2005.
Scheme-Check is a module that implements randomized unit testing in PLT Scheme. With Scheme-Check, instead of creating many 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.
- ^ Mejr, Antero. "SRFI 252: Property Testing". Scheme Requests for Implementation. Retrieved April 25, 2024.
- ^ Pennebaker, Andrew (mcandre). "QuickSmash". GitHub. Retrieved December 9, 2011.
- ^ "QCheck/SML". Contrapunctus. November 22, 2011. Retrieved December 9, 2011.
- ^ "SwiftCheck: QuickCheck for Swift". GitHub. November 3, 2017.
- ^ Dubien, Nicolas (dubzzz). "fast-check". GitHub. Retrieved February 3, 2018.
- ^ Chin, Janice. "QuickCheck for Whiley" (PDF). Retrieved April 20, 2020.
Further reading
- Claessen, Koen; Hughes, John (2002). "Testing Monadic Programs with QuickCheck" (. Retrieved January 29, 2006.
- Claessen, Koen & Hughes, John (2000). "QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs" (PDF). Proceedings of the International Conference on Functional Programming (ICFP), ACM SIGPLAN. Retrieved January 29, 2006.
- Claessen, Koen & Hughes, John (2003). "Specification Based Testing with QuickCheck". The Fun of Programming, Cornerstones of Computing, Jeremy Gibbons and Oege de Moor (Eds.). Palgrave: 17–40. Archived from the original on July 4, 2007. Retrieved January 29, 2006.
- Claessen, Koen (August 2004). "QuickCheck: Specification-based Random Testing". Presentation at Summer Institute on Trends in Testing: Theory, Techniques and Tools. Archived from the original (PPT) on April 30, 2007. Retrieved January 29, 2006.
- Claessen, Koen; Runciman, Colin; Chitil, Olaf & Hughes, John (2002). "Testing and Tracing Lazy Functional Programs Using QuickCheck and Hat". Advanced Functional Programming: 4th International School, Lecture Notes in Computer Science. 2638. Springer Verlag: 59–99. Archived from the original (PostScript) on October 12, 2006. Retrieved January 29, 2006.
External links
- QuickCheck on Hackage