QuickCheck is a
software library, specifically a
combinator library
A combinator library is a software library which implements combinators for a functional programming language; "the key idea is this: a combinator library offers functions (the combinators) that combine functions together to make bigger functions ...
, 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
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
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.
Re-implementations of QuickCheck exist for several languages:
*
C
*
C++
*
Chicken
*
Clojure
*
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ''ANSI INCITS 226-1994 (S20018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived fro ...
*
Coq
*
D
*
Elm
*
Elixir
*
Erlang
*
F#, and
C#,
Visual Basic .NET (VB.NET)
*
Factor
*
Go
*
Io
*
Java
*
JavaScript
*
Julia
*
Logtalk
*
Lua
Lua or LUA may refer to:
Science and technology
* Lua (programming language)
* Latvia University of Agriculture
* Last universal ancestor, in evolution
Ethnicity and language
* Lua people, of Laos
* Lawa people, of Thailand sometimes referred t ...
*
Mathematica
Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimizat ...
*
Objective-C
*
OCaml
OCaml ( , formerly Objective Caml) is a general-purpose programming language, general-purpose, multi-paradigm programming language which extends the Caml dialect of ML (programming language), ML with object-oriented programming, object-oriented ...
*
Perl
*
Prolog
*
PHP
*
Pony
*
Python
*
R
*
Racket
Racket may refer to:
* Racket (crime), a systematised element of organized crime
** Protection racket, a scheme whereby a group provides protection to businesses or other groups through violence outside the sanction of the law
* Racket (sports equ ...
*
Ruby
*
Rust
*
Scala
*
Scheme
*
Smalltalk
Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan Ka ...
*
Standard ML
Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of the ...
*
Swift
*
TypeScript
*
Whiley
External links
QuickCheckon
Hackage
See also
*
SPIN model checker
*
Property testing
References
Further reading
*
*
*
*
*
{{Wikibooks, Haskell/Testing
Software testing tools
Free software programmed in Haskell
Free software testing tools
Software using the BSD license