quickcheck-dynamic: A library for stateful property-based testing

[ apache, library, testing ] [ Propose Tags ]
Versions [RSS] 1.0.0, 1.1.0, 2.0.0, 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1, 3.2.0, 3.3.0, 3.3.1
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), containers, mtl, QuickCheck, random [details]
License Apache-2.0[multiple license files]
Author Ulf Norell
Maintainer arnaud.bailly@iohk.io
Category Testing
Home page https://github.com/input-output-hk/quickcheck-dynamic#readme
Bug tracker https://github.com/input-output-hk/quickcheck-dynamic/issues
Source repo head: git clone https://github.com/input-output-hk/quickcheck-dynamic
Uploaded by abaillyiohk at 2023-09-06T06:41:08Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 866 total (41 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-09-06 [all 1 reports]

Readme for quickcheck-dynamic-3.3.1

[back to package description]


A library for testing stateful programs using QuickCheck and dynamic logic.


This library was initially designed by QuviQ in collaboration with IOG to provide a dedicated test framework for Plutus "Smart contracts". As the need of a Model-Based Testing framework arises in quite a lot of contexts, it was deemed useful to extract the most generic part as a standalone package with no strings attached to Plutus or Cardano.


  • Documentation is currenly mostly provided inline as Haddock comments. Checkout StateModel and DynamicLogic modules for some usage instructions.
  • For a concrete standalone example, have a look at Registry and RegistryModel modules from the companion quickcheck-io-sim-compat package (not currently available on hackage), a multithreaded Thread registry inspired by the Erlang version of QuickCheck described in this article
  • For more documentation on how to quickcheck-dynamic is used to test Plutus DApps, check this tutorial.
  • Apart from Plutus, this library is now in use in the Hydra project to verify the Head Protocol implementation with respect to the original research paper.