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
In this 90 minute 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.
Hans SvenssonProud member of the ProTest project
Quviq AB and Chalmers University of Technology
Hans Svensson is researcher with eye for applying new technology in practice. He has been using QuickCheck ever since he got in touch with it and actively helps in developing the tool further. He is a post-doc at Chalmers involved in the EU project ProTest and working for Quviq part of his time. Hans PhD thesis is worth reading for people that wonder whether the gen_leader is tested well enough.