PULSE is an addition to QuickCheck that enables you to find concurrency
errors like race conditions and deadlocks in Erlang programs. Even if
those errors may not show on a single processor system, they may be
sitting there waiting to be revealed when you switch to multi-core. With
PULSE you explore random schedulings that are possible on a multi-core
but not on a single core, therewith increasing the possibility to reveal
weird errors. Of course, the test case is minimized when finding a
concurrency error, which results in a repeatable test case that helps to
analyze the cause of the error quickly.
In this tutorial little
knowledge of QuickCheck is required; it suffices if you participated in a
QuickCheck talk or tutorial before. We will look at a few examples in
which QuickCheck and PULSE are used to find concurrency errors.
Chalmers University of Technology
Michał is a PhD student at Chalmers University of Technology in
Gothenburg where he works with functional programming and property-based testing. His work the EU project ProTest involves better support for testing concurrent Erlang programs.