Testing for Concurrency Errors in Elixir Code with QuickCheck

Thomas Arts
CTO at Quviq

We address the problem of testing and debugging concurrent, distributed Elixir applications. In concurrent programs, race conditions are a common class of bugs and are very hard to find in practice. Traditional unit testing is normally unable to help finding all race conditions, because their occurrence depends so much on timing. Therefore, race conditions are often found during system testing, where due to the vast amount of code under test, it is often hard to diagnose the error resulting from race conditions. We present QuickCheck and PULSE that in combination can be used to test and debug concurrent programs with a much better possibility of detecting race conditions.

Talk objectives:

- Learn how to find and debug your most difficult errors.

Target audience:

- Elixir developers as well as Erlang QuickCheck enthusiasts


Thomas Arts, co-founder and CTO of Quviq, has worked at Ericsson's computer Science Lab in the nineties. Together with Joe Armstrong, Simon Marlow and Phil Wadler, he tried to build a type system for Erlang. That being of little practical use, he later worked on verification tools for Erlang. After a short return to academia as professor at Chalmers, he is now fully devoted to amazing testing tools.

GitHub: Quviq

Twitter: @quviq

Back to conference page