# The Design and Use of QuickCheck

DevFeed: [The Design and Use of QuickCheck](<https://devfeed.tech/articles/the-design-and-use-of-quickcheck-21474.md>)

Original publisher: [Read original article](<https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html>)

Published: 2017-01-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Joe Nelson](<https://devfeed.tech/sources/joe-nelson.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [Formal methods](<https://devfeed.tech/topics/formal-methods.md>)

Tags: [design](<https://devfeed.tech/tags/design.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learning](<https://devfeed.tech/tags/learning.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [tools](<https://devfeed.tech/tags/tools.md>), [verify](<https://devfeed.tech/tags/verify.md>), [writing](<https://devfeed.tech/tags/writing.md>)

## AI overview

This tutorial explains the design and practical use of QuickCheck, a Haskell library for property-based testing. It shows how properties replace manually authored input-output test cases, how QuickCheck generates random values to find counterexamples, and how specifications can serve as machine-checkable documentation.

## Source excerpt

2017-01-14 QuickCheck is the grandfather of property-based testing libraries. Despite being imitated in over thirty languages, the original implementation remains pre-eminent due to the type system and consistent logic of the Haskell language in which it is written. Prior randomized testing tools required learning a special language and grammar to generate complex test cases.