请输入您要查询的百科知识:

 

词条 QuickCheck
释义

  1. See also

  2. References

  3. Further reading

{{For|the convenience store|Quick Chek}}{{Use mdy dates|date=December 2011}}{{Infobox software
| name = QuickCheck
| title =
| logo =
| logo caption =
| screenshot =
| caption =
| collapsible =
| author =
| developer = Koen Claessen, John Hughes
| released = {{Start date and age|1999}}
| latest release version = 2.6
| latest release date = {{Start date and age|2013|03|07|df=yes}}
| latest preview version =
| latest preview date =
| programming language = Haskell
| operating system = Unix-like, Windows
| platform =
| size =
| language = English
| language count =
| language footnote =
| genre = Software testing
| license = BSD-style
| alexa =
| website = {{URL|www.cse.chalmers.se/~rjmh/QuickCheck}}
}}

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:

{{div col|colwidth=25em}}
  • C[2][3][4]
  • C++[5][6][7]
  • Chicken[8]
  • Clojure[9][10][11]
  • Common Lisp[12]
  • D[13]
  • Elm[14]
  • Elixir[15]
  • Erlang
  • F#, and C#, Visual Basic .NET (VB.NET)[16]
  • Factor[17]
  • Go[18]
  • Io[19]
  • Java[20][21][22][23][24][25][26]
  • JavaScript[27][28][29]
  • Julia[30]
  • Logtalk[31]
  • Lua[32]
  • Node.js[33]
  • Objective-C[34]
  • OCaml[35]
  • Perl[36]
  • Prolog[37][38]
  • PHP[39]
  • Pony[40]
  • Python[41]
  • R[42]
  • Racket[43]
  • Ruby[44]
  • Rust[45][46]
  • Scala[47][48][49]
  • Scheme[50]
  • Smalltalk[51]
  • Standard ML[52]
  • Swift[53]
  • TypeScript[54]
{{div col end}}

See also

{{Portal|Software testing}}
  • SPIN model checker

References

1. ^{{cite web |url=http://hackage.haskell.org/packages/archive/collections-api/1.0.0.0/doc/html/Data-Collections-Properties.html |title=Data.Collections.Properties |website=hackage.haskell.org}}
2. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/qc |title=qc |website=GitHub |date=October 13, 2011 |access-date=December 9, 2011}}
3. ^{{cite web |last=Zito |first=Andrea (nivox) |url=https://github.com/nivox/quickcheck4c |title=quickcheck4c |website=GitHub |date=July 27, 2014 |access-date=July 27, 2014}}
4. ^{{cite web |last=Vokes |first=Scott |url=https://github.com/silentbicycle/theft |title=Theft: property-based testing for C |website=GitHub |date=March 30, 2015 |access-date=November 16, 2015}}
5. ^{{cite web |url=http://software.legiasoft.com/quickcheck/ |title=QuickCheck |website=Software.legiasoft.com |access-date=December 9, 2011}}
6. ^{{cite web |url=https://github.com/philipp-classen/CppQuickCheck |title=CppQuickCheck |website=GitHub |access-date=March 30, 2015}}
7. ^{{cite web |url=https://github.com/emil-e/rapidcheck |title=RapidCheck |website=GitHub |access-date=March 30, 2015}}
8. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/cluckcheck |title=cluckcheck |website=GitHub |access-date=December 9, 2011}}
9. ^{{cite web |last=Brandmeyer |first=Meikel (kotarak) |url=https://bitbucket.org/kotarak/clojurecheck |title=ClojureCheck |website=Bitbucket |access-date=December 9, 2011}}
10. ^{{cite web |last=Draper |first=Reid (reiddraper) |url=https://github.com/reiddraper/simple-check |title=simple-check |website=GitHub |date=May 9, 2013 |access-date=August 21, 2013}}
11. ^{{cite web |last=Draper |first=Reid (reiddraper) |url=https://github.com/clojure/test.check |title=org.clojure/test.check |website=GitHub |date=March 27, 2014 |access-date=March 27, 2014}}
12. ^{{cite web |url=http://www.cliki.net/cl-quickcheck |title=cl-quickcheck |website=Cliki |access-date=December 9, 2011}}
13. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/dashcheck |title=dashcheck |website=GitHub |date=October 27, 2011 |access-date=December 9, 2011}}
14. ^{{cite web |url=https://github.com/elm-explorations/test |title=elm-explorations/test |website=GitHub |access-date=November 20, 2018}}
15. ^{{cite web |url=https://github.com/pragdave/quixir |title=quixir: Property-based testing for Elixir |last=Thomas |first=Dave (pragdave) |date=2017-07-17 |website=GitHub |access-date=2019-04-01}}
16. ^{{cite web |url=https://fscheck.github.io/FsCheck |title=FsCheck |website=GitHub |date=June 25, 2015 |access-date=June 25, 2011}}
17. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/factcheck |title=factcheck |website=GitHub |date=October 13, 2011 |access-date=December 9, 2011}}
18. ^{{cite web |author=leanovate |url=https://github.com/leanovate/gopter |title=Gopter |date=April 26, 2016 |access-date=April 26, 2016}}
19. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/IoCheck |title=IoCheck |website=GitHub |date=October 17, 2011 |access-date=December 9, 2011}}
20. ^{{cite web |url=https://github.com/functionaljava/functionaljava/ |title=FunctionalJava's QuickCheck module |website=FunctionalJava |access-date=August 14, 2015}}
21. ^{{cite web |url=https://bitbucket.org/blob79/quickcheck |title=Quickcheck for Java |website=Quickcheck.dev.java.net |access-date=December 9, 2011}}
22. ^{{cite web |url=http://www.jcheck.org/ |title=JCheck |website=JCheck |access-date=December 9, 2011}}
23. ^{{cite web |url=https://github.com/pholser/junit-quickcheck/ |title=junit-quickcheck |website=junit-quickcheck |access-date=July 3, 2013}}
24. ^{{cite web |url=http://jqwik.net/ |title=jqwik for the JUnit5 Platform |website=jqwik |access-date=June 19, 2017}}
25. ^{{cite web |url=https://github.com/ncredinburgh/QuickTheories |title=Quick Theories property testing for Java 8 |website=ncredinburgh |access-date=October 30, 2017}}
26. ^{{cite web |url=https://github.com/JetBrains/jetCheck |title=jetCheck property-based testing for Java 8 |website=JetBrains |access-date=July 10, 2018}}
27. ^{{cite web |last=Thompson |first=Darrin (darrint) |url=http://bitbucket.org/darrint/qc.js/ |title=qc.js |website=Bitbucket |access-date=December 9, 2011}}
28. ^{{cite web |last=Crockford |first=Douglas |url=https://github.com/douglascrockford/JSCheck |title=jscheck |website=GitHub |access-date=October 21, 2017}}
29. ^{{cite web |last=Dubien |first=Nicolas (dubzzz) |url=https://github.com/dubzzz/fast-check |title=fast-check |website=GitHub |access-date=February 3, 2018}}
30. ^{{cite web |url=https://github.com/pkalikman/Checkers.jl |title=Checkers.jl |access-date=April 8, 2018}}
31. ^{{cite web |url=https://github.com/LogtalkDotOrg/logtalk3/tree/master/tools/lgtunit/ |title=lgtunit |website=GitHub |access-date=August 23, 2016}}
32. ^{{cite web |url=https://github.com/luc-tielen/lua-quickcheck |title=lua-quickcheck |website=GitHub |access-date=February 25, 2017}}
33. ^{{cite web |url=https://www.npmjs.org/package/quickcheck |title=quickcheck |website=npm}}
34. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/objcheck |title=objcheck |website=GitHub |access-date=December 9, 2011}}
35. ^{{cite web |last=Sokolov |first=Roma (little-arhat) |url=https://github.com/camlunity/ocaml-quickcheck |title=ocaml-quickcheck |website=GitHub |access-date=December 9, 2011}}
36. ^{{cite web |url=https://metacpan.org/module/Test::LectroTest::Tutorial |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/.}}
37. ^{{cite web |url=http://www.swi-prolog.org/pack/list?p=quickcheck |title=library(quickcheck)}}
38. ^{{cite journal |url=http://www.dcc.fc.up.pt/~coa/PrologCheck.html |last=Amaral |first=Claudio |last2=Florido |first2=Mario |last3=Costa |first3=Vitor Santos |year=2014 |title=PrologCheck - Property-based testing in Prolog |journal=Proceedings of the Twelfth International Symposium on Functional and Logic Programming (FLOPS 2014)}}
39. ^{{cite web |last=Oestreicher |first=Stefan (steos) |url=https://github.com/steos/php-quickcheck |title=PhpQuickCheck |website=GitHub |access-date=November 12, 2015}}
40. ^{{cite web |last=Wahl |first=Matthias (mfelsche) |url=https://github.com/mfelsche/ponycheck |title=ponycheck |website=GitHub |access-date=December 26, 2018}}
41. ^{{cite web |last=MacIver |first=David |url=http://hypothesis.works/ |title=Hypothesis |date=April 26, 2016 |access-date=April 26, 2016}}
42. ^{{cite web |url=https://github.com/RevolutionAnalytics/quickcheck |title=quickcheck: Randomized testing for R |date=September 11, 2017 |website=GitHub}}
43. ^{{cite web |url=https://docs.racket-lang.org/quickcheck/index.html |title=Quickcheck |website=docs.racket-lang.org}}
44. ^{{cite web |url=https://github.com/mcandre/rubycheck |title=Rubycheck: a Ruby port of the QuickCheck unit test framework |last=Pennebaker |first=Andrew (mcandre) |date=September 14, 2017 |website=GitHub}}
45. ^{{cite web |last=Gallant |first=Andrew (BurntSushi) |url=https://github.com/BurntSushi/quickcheck |title=QuickCheck for Rust (with shrinking) |website=GitHub |access-date=May 27, 2015}}
46. ^{{cite web |url=https://github.com/altsysrq/proptest |title=Hypothesis-like property testing for Rust}}
47. ^{{cite web |url=https://github.com/rickynils/scalacheck |title=ScalaCheck |access-date=June 30, 2016}}
48. ^{{Cite web |url=https://github.com/scalaprops/scalaprops |title=scalaprops/scalaprops |website=GitHub |access-date=2016-06-30}}
49. ^{{Cite web |url=https://github.com/japgolly/nyaya |title=nyaya |website=GitHub |access-date=2016-06-30}}
50. ^{{cite web |url=http://www.inf.ufrgs.br/~carlossch/scheme-check/ |title=Scheme-Check: Randomized Unit Testing for PLT Scheme |archive-url=https://web.archive.org/web/20050212183945/http://www.inf.ufrgs.br/~carlossch/scheme-check/ |archive-date=December 2005 |quote=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.}}
51. ^{{cite web |last=Pennebaker |first=Andrew (mcandre) |url=https://github.com/mcandre/quicksmash |title=QuickSmash |website=GitHub |access-date=December 9, 2011}}
52. ^{{cite web |url=http://contrapunctus.net/league/haques/qcheck/ |title=QCheck/SML |website=Contrapunctus |date=November 22, 2011 |access-date=December 9, 2011}}
53. ^{{cite web |url=https://github.com/typelift/SwiftCheck |title=SwiftCheck: QuickCheck for Swift |date=November 3, 2017 |website=GitHub}}
54. ^{{cite web |last=Dubien |first=Nicolas (dubzzz) |url=https://github.com/dubzzz/fast-check |title=fast-check |website=GitHub |access-date=February 3, 2018}}

Further reading

{{Refbegin}}
  • {{cite journal

|last=Claessen |first=Koen |last2=Hughes |first2=John |year=2002
|title=Testing Monadic Programs with QuickCheck
|journal=SIGPLAN Notices
|volume=37
|issue=12
|pages=47–59
|url=http://www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps
|format=PostScript
|access-date=2006-01-29
|doi=10.1145/636517.636527
|citeseerx=10.1.1.111.1618}}
  • {{cite journal

|last=Claessen |first=Koen |last2=Hughes |first2=John
|last-author-amp=yes |year=2000
|title=QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs
|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
|format=PDF
|access-date=2006-01-29
}}
  • {{cite journal |last=Claessen |first=Koen |last2=Hughes |first2=John |last-author-amp=yes |year=2003 |title=Specification Based Testing with QuickCheck |journal=The Fun of Programming, Cornerstones of Computing, Jeremy Gibbons and Oege de Moor (eds.) |publisher=Palgrave |pages=17–40 |url=http://www.math.chalmers.se/~koen/pubs/entry-fop-quickcheck.html |access-date=2006-01-29 |dead-url=yes |archive-url=https://web.archive.org/web/20070704035801/http://www.math.chalmers.se/~koen/pubs/entry-fop-quickcheck.html |archive-date=July 4, 2007 |df=mdy-all}}
  • {{cite journal |last=Claessen |first=Koen |date=August 2004 |title=QuickCheck: Specification-based Random Testing |journal=Presentation at Summer Institute on Trends in Testing: Theory, Techniques and Tools |url=http://www.math.chalmers.se/~koen/pubs/entry-tt04-quickcheck.html |format=PPT |access-date=2006-01-29 |dead-url=yes |archive-url=https://web.archive.org/web/20070430065923/http://www.math.chalmers.se/~koen/pubs/entry-tt04-quickcheck.html |archive-date=April 30, 2007}}
  • {{cite journal |last=Claessen |first=Koen |last2=Runciman |first2=Colin |last3=Chitil |first3=Olaf |last4=Hughes |first4=John |last-author-amp=yes |year=2002 |title=Testing and Tracing Lazy Functional Programs Using QuickCheck and Hat |journal=Advanced Functional Programming: 4th International School, Lecture Notes in Computer Science |publisher=Springer Verlag |volume=2638 |pages=59–99 |url=http://www.cs.chalmers.se/~koen/pubs/afp02-quickcheck.ps |format=PostScript |access-date=2006-01-29 |dead-url=yes |archive-url=https://web.archive.org/web/20061012125122/http://www.cs.chalmers.se/~koen/pubs/afp02-quickcheck.ps |archive-date=October 12, 2006}}
{{Refend}}{{Wikibooks|Haskell/Testing}}

3 : Software testing tools|Free software programmed in Haskell|Free software testing tools

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/30 22:32:27