QuickCheck: Difference between revisions
m Removing link(s): Wikipedia:Miscellany for deletion/Portal:Software testing (Xunlink) |
Citation bot (talk | contribs) m Add: isbn, series, doi, pages, volume. Removed parameters. Formatted dashes. | You can use this bot yourself. Report bugs here.| Activated by User:Headbomb |
||
Line 63: | Line 63: | ||
|title=PrologCheck - Property-based testing in Prolog |
|title=PrologCheck - Property-based testing in Prolog |
||
|journal=Proceedings of the Twelfth International Symposium on Functional and Logic Programming (FLOPS 2014) |
|journal=Proceedings of the Twelfth International Symposium on Functional and Logic Programming (FLOPS 2014) |
||
|volume=8475 |pages=1–17 |doi=10.1007/978-3-319-07151-0_1 |series=Lecture Notes in Computer Science |isbn=978-3-319-07150-3 }}</ref> |
|||
}}</ref> |
|||
* [[PHP]]<ref>{{cite web |last=Oestreicher |first=Stefan (steos) |url=https://github.com/steos/php-quickcheck |title=PhpQuickCheck |website=GitHub |access-date=November 12, 2015}}</ref> |
* [[PHP]]<ref>{{cite web |last=Oestreicher |first=Stefan (steos) |url=https://github.com/steos/php-quickcheck |title=PhpQuickCheck |website=GitHub |access-date=November 12, 2015}}</ref> |
||
* [[Pony_(programming_language)|Pony]]<ref>{{cite web |last=Wahl |first=Matthias (mfelsche) |url=https://github.com/mfelsche/ponycheck |title=ponycheck |website=GitHub |access-date=December 26, 2018}}</ref> |
* [[Pony_(programming_language)|Pony]]<ref>{{cite web |last=Wahl |first=Matthias (mfelsche) |url=https://github.com/mfelsche/ponycheck |title=ponycheck |website=GitHub |access-date=December 26, 2018}}</ref> |
||
Line 105: | Line 105: | ||
|journal=Proc. Of International Conference on Functional Programming (ICFP), ACM SIGPLAN |
|journal=Proc. Of International Conference on Functional Programming (ICFP), ACM SIGPLAN |
||
|url=http://www.eecs.northwestern.edu/%7Erobby/courses/395-495-2009-fall/quick.pdf |
|url=http://www.eecs.northwestern.edu/%7Erobby/courses/395-495-2009-fall/quick.pdf |
||
|format=[[PDF]] |
|||
|access-date=2006-01-29 |
|access-date=2006-01-29 |
||
}} |
}} |
Revision as of 16:26, 25 July 2019
Developer(s) | Koen Claessen, John Hughes |
---|---|
Initial release | 1999 |
Stable release | 2.6
/ 7 March 2013 |
Written in | Haskell |
Operating system | Unix-like, Windows |
Available in | English |
Type | Software testing |
License | BSD-style |
Website | www |
QuickCheck is a software library, specifically a combinator library, originally written in the programming language Haskell, designed to assist in software testing by generating test cases for test suites. 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 function should fulfill. Then QuickCheck attempts to generate a test case that falsifies such assertions. Once such a test case is found, QuickCheck tries to reduce it to a minimal failing subset by removing or simplifying input data that are unneeded to make the test fail.
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 several languages:
- C[2][3][4]
- C++[5][6][7]
- Chicken[8]
- Clojure[9][10][11]
- Common Lisp[12]
- D[13]
- Elm[14]
- Elixir[15]
- Erlang[16]
- F#, and C#, Visual Basic .NET (VB.NET)[17]
- Factor[18]
- Go[19]
- Io[20]
- Java[21][22][23][24][25][26][27]
- JavaScript[28][29][30]
- Julia[31]
- Logtalk[32]
- Lua[33]
- Node.js[34]
- Objective-C[35]
- OCaml[36]
- Perl[37]
- Prolog[38][39]
- PHP[40]
- Pony[41]
- Python[42]
- R[43]
- Racket[44]
- Ruby[45]
- Rust[46][47]
- Scala[48][49][50]
- Scheme[51]
- Smalltalk[52]
- Standard ML[53]
- Swift[54]
- TypeScript[55]
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.
- ^ Brandmeyer, Meikel (kotarak). "ClojureCheck". Bitbucket. 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.
- ^ 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.
- ^ "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". 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.
- ^ "Checkers.jl". Retrieved April 8, 2018.
- ^ "lgtunit". GitHub. Retrieved August 23, 2016.
- ^ "lua-quickcheck". GitHub. Retrieved February 25, 2017.
- ^ "quickcheck". npm.
- ^ Pennebaker, Andrew (mcandre). "objcheck". GitHub. Retrieved December 9, 2011.
- ^ Sokolov, Roma (little-arhat). "ocaml-quickcheck". GitHub. Retrieved December 9, 2011.
- ^ "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
(help)|quote=
- ^ "library(quickcheck)".
- ^ Amaral, Claudio; Florido, Mario; Costa, Vitor Santos (2014). "PrologCheck - Property-based testing in Prolog". Proceedings of the Twelfth International Symposium on Functional and Logic Programming (FLOPS 2014). Lecture Notes in Computer Science. 8475: 1–17. doi:10.1007/978-3-319-07151-0_1. 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 26, 2016). "Hypothesis". Retrieved April 26, 2016.
- ^ "quickcheck: Randomized testing for R". GitHub. September 11, 2017.
- ^ "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".
- ^ "ScalaCheck". 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 December 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.
{{cite web}}
: Check date values in:|archive-date=
(help) - ^ 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.
Further reading
- Claessen, Koen; Hughes, John (2002). "Testing Monadic Programs with QuickCheck" (PostScript). SIGPLAN Notices. 37 (12): 47–59. CiteSeerX 10.1.1.111.1618. doi:10.1145/636517.636527. Retrieved January 29, 2006.
- Claessen, Koen; Hughes, John (2000). "QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs" (PDF). Proc. Of International Conference on Functional Programming (ICFP), ACM SIGPLAN. Retrieved January 29, 2006.
{{cite journal}}
: Unknown parameter|last-author-amp=
ignored (|name-list-style=
suggested) (help) - 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.
{{cite journal}}
: Unknown parameter|dead-url=
ignored (|url-status=
suggested) (help); Unknown parameter|last-author-amp=
ignored (|name-list-style=
suggested) (help) - 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.
{{cite journal}}
: Unknown parameter|dead-url=
ignored (|url-status=
suggested) (help) - 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.
{{cite journal}}
: Unknown parameter|dead-url=
ignored (|url-status=
suggested) (help); Unknown parameter|last-author-amp=
ignored (|name-list-style=
suggested) (help)