Testing Erlang programs for multicore
Erlang programs are easily ported to multicore; one gets a great speed-up for free, because the Erlang programs are concurrent in nature. Nevertheless, running your Erlang application on a multicore processor may well reveal errors that you have never spotted before. The Erlang scheduler on a single core is very deterministic and certain sequences of events simply cannot occur, although they do occur in theory and certainly on a multicore. Since the number of possible interleavings on a multicore is impractically large, successfully running your old test suite may not give you the confidence you need to ship you software. More testing is necessary, but running the same suite many times or adding more test cases hardly solves the problem.
As a result of the ProTest research project, QuickCheck comes with an extension to test Erlang programs for multicore. Defects that cannot be detected on a single core, can be revealed by this extension. The extension also improves the analysis phase of the defect by presenting the simplest interleaving that lead to the defect and a visualization of the messages send and received.
John Hughes Inventor of QuickCheck and Erlanger of the year
John Hughes is co-founder and CEO of Quviq AB, and the originator of
Quviq QuickCheck. From 2002-2005 he led a major research project in
software verification, funded by the Swedish Strategic Research
Foundation. This led to the development of Quviq QuickCheck in Erlang.
Before John's involvement with Erlang, he was deeply involved with the
design of Haskell from the start, and co-chaired the committee that
defined the current language standard. At the Erlang eXchange, John
will talk about Quick Check for Erlang.