Erlang QuickCheck Tutorial
Other, 2008
Testing is a major part of all software development - yet no matter how
much effort is spent on it, some errors always seem to slip through.
Cases which no-one thought to test crash systems late in development or
out in the field, revealing errors which cost time and money to analyze,
diagnose, and fix. In the worst case, such errors reveal fundamental
flaws which force a redesign of part of the system, at disproportionate
cost.
QuickCheck is an automated testing tool, originating from research by
John Hughes and Koen Claessen and commercialized by Quviq. QuickCheck
addresses the testing challenges by generating test cases from a concise
specification (so that many more cases can be tested), and simplifying
failing cases to a minimal example on a test failure (so that fault
diagnosis is quick and easy). QuickCheck enables developers to generate
tests from specifications. It enables them to find errors at an earlier
stage, lowering costs and improving quality as a result.
In this tutorial, Thomas Arts will use examples to show how developers
write QuickCheck specifications - which are actually Erlang programs
using the QuickCheck API - and use them to test code written in Erlang
or other programming languages. We will see how QuickCheck's shrinking
finds tiny examples that provoke errors, making the step from observing
a bug to diagnosing it very short indeed, and we will show how property
driven development can produce code that is solid from the word go.