Erlang QuickCheck Tutorial Thomas Arts Testing is a major part of all software development - yet no matter how much effort is spent on it, some errors always seem to slip through. Cases which no-one thought to test crash systems late in development or out in the field, revealing errors which cost time and money to analyze, diagnose, and fix. In the worst case, such errors reveal fundamental flaws which force a redesign of part of the system, at disproportionate cost. QuickCheck is an automated testing tool, originating from research by John Hughes and Koen Claessen and commercialized by Quviq. QuickCheck addresses the testing challenges by generating test cases from a concise specification (so that many more cases can be tested), and simplifying failing cases to a minimal example on a test failure (so that fault diagnosis is quick and easy). QuickCheck enables developers to generate tests from specifications. It enables them to find errors at an earlier stage, lowering costs and improving quality as a result. In this tutorial, Thomas Arts will use examples to show how developers write QuickCheck specifications - which are actually Erlang programs using the QuickCheck API - and use them to test code written in Erlang or other programming languages. We will see how QuickCheck's shrinking finds tiny examples that provoke errors, making the step from observing a bug to diagnosing it very short indeed, and we will show how property driven development can produce code that is solid from the word go. ------------------------------------------------------------------------- Dr. Thomas Arts is the co-founder and CTO of Quviq, a small company that produced QuickCheck, a testing tool for Erlang. Thomas has one foot in academia as associate professor at the IT University of Gothenburg and one foot in industry. He has over 30 research publications and he has successfully introduced some new technologies to the industry, the latest being QuickCheck, a tool for property based testing and aims to support test driven development. Thomas has formerly been employed at the Ericsson Computer Science Lab (where they invented Erlang), where he worked on program verification and the development of the Erlang programming language. He has worked in the broad spectrum theoretical computer science, formal methods and industrial case-study research, mainly applying all kind of techniques to systems written in Erlang.