Testing Erlang programs for multicore

By Erlang Central | Published: April 27, 2009

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.

Download Presentation Download


  • John Hughes

    Inventor of QuickCheck and Erlanger of the year
    QuviQ AB

    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.

    John Hughes

Follow Erlang Central:

Have an Erlang Question?

Reach out to the Erlang community