quickcheck-state-machine-distributed alternatives and similar packages
Based on the "quickcheck" category.
Alternatively, view quickcheck-state-machine-distributed alternatives based on common mentions on social networks and blogs.
-
quickcheck-state-machine
Test monadic programs using state machine based models -
quickcheck-arbitrary-adt
Typeclass for generating a list of each instance of a sum type's constructors -
quickcheck-arbitrary-template
Arbitrary QuickCheck instance generation using template haskell -
quickcheck-instances
Instances for QuickCheck classes -
quickcheck-higherorder
QuickCheck extension for higher-order properties -
quickcheck-unicode
Unicode support for QuickCheck -
quickcheck-io
Use HUnit assertions as QuickCheck properties -
quickcheck-property-monad
A monad for building quickcheck properties -
quickcheck-with-counterexamples
Get counterexamples out of QuickCheck as Haskell values -
quickcheck-combinators
type-level combinators for quickcheck instances -
quickcheck-simple
Test properties and default-mains for QuickCheck -
tasty-quickcheck-laws
Tasty trees for your lawful class instances -
quickcheck-report
Customizable reports for quickcheck properties
InfluxDB - Power Real-Time Data Analytics at Scale
Do you think we are missing an alternative of quickcheck-state-machine-distributed or a related project?
README
quickcheck-state-machine-distributed
quickcheck-state-machine-distributed
is Haskell library for testing stateful,
possibly distributed, programs. It's based on QuickCheck, but differs from the
Test.QuickCheck.Monadic
approach in that it lets the user specify the correctness by means of a state
machine based model using pre- and post-conditions. The advantage of the state
machine approach is twofold: 1) specifying the correctness of your programs
becomes less adhoc, and 2) you get testing for race conditions for free.
The combination of state machine based model specification and property based
testing first appeared in Erlang's proprietary QuickCheck. The
quickcheck-state-machine-distributed
library can be seen as an attempt to
provide similar functionality to Haskell's QuickCheck library.
The quickcheck-state-machine-distributed
library builds upon ideas from the
quickcheck-state-machine
sister library. The most significant difference is that the former is based on
the distributed-process
library, hence the name. A more detailed comparison
follows below.
Example
See
test/TicketDispenser.hs
for a full example of how to implement and test a ticket dispenser -- think of
one of those machines in the pharmacy which gives you a piece of paper with your
number in line on it.
This example also appears in the Testing a Database for Race Conditions with QuickCheck and Testing the Hard Stuff and Staying Sane [PDF, video] papers.
quickcheck-state-machine-distributed
vs quickcheck-state-machine
Apart from the already mentioned difference that -distributed
is based on
distributed-process
es, it's also different in that it:
Decouples requests from responses (opening up the possibility for testing asynchronous interfaces);
Takes a more lightweight approach; no GADTs, no references (which hopefully makes the library easier to understand and use).
Contributing
The quickcheck-state-machine-distributed
library is still very experimental.
We would like to encourage users to try it out, and join the discussion of how we can improve it on the issue tracker!
See also
The README of the sister library
quickcheck-state-machine
library contains many links and examples that could be useful for a better
understanding of this library and the underlying principles.
License
BSD-style (see the file LICENSE).
*Note that all licence references and agreements mentioned in the quickcheck-state-machine-distributed README section above
are relevant to that project's source code only.