Testing Asynchronous Behaviour in ejabberd with QuickCheck

By Erlang Central | Published: June 7, 2010

Ejabberd is an instant messaging server with lots of asynchronous behaviour. Such asynchronous behaviour is awkward to test, because of its inherent non-determinism. Variable event order and timing uncertainties can easily lead test cases to fail when they ought to pass, generating “false positives” that hinder testing. Yet coping with all possible event orderings and timings can make test cases hopelessly complex. When test cases are generated, these problems become even harder.

In this talk, we’ll present a new way of expressing asynchronous properties that avoids these problems, and show how we used it to develop a simple QuickCheck specification for ejabberd message delivery.

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
  • Ulf Norell

    QuickCheck expert
    QuviQ AB

    Ulf Norell got his PhD in computer science in 2007 and is now a post doc at Chalmers University of Technology where he is developing dependently typed functional programming languages and teaching a master's level course on advanced functional programming. Since 2008 he has been working for Quviq AB, helping to bring the QuickCheck testing tool to Erlang developers.

    Ulf Norell

Follow Erlang Central:

Have an Erlang Question?

Reach out to the Erlang community