The Erlang tool chain already contains a variety of frameworks and tools for testing programs. Some of them (e.g. EUnit) are primarily manual, in the sense that the programmer has to write unit tests and provide expected test results, while some others (e.g. EQC, Triq and PropEr) are only semi-automatic: they require the programmer to specify properties -and often appropriate generators- for these properties.
The talk introduces CutEr, a fully automatic testing tool that aims to achieve full path coverage, bringing Concolic Unit Testing to Erlang programs. Compared to existing testing tools, this tool is... well, just CutEr ;)
Talk objectives:
Introduce the idea of concolic unit testing of Erlang programs and the CutEr tool, show how it differs from all other existing testing tools, and how it can be used to identify errors in programs in a fully automatic way.
Target audience:
Any Erlang programmer.
SlidesThis hands-on tutorial will demonstrate the CutEr tool, and the capabilities of concolic testing, in detail. We will start from simple examples and use CutEr to automatically find inputs that make the programs crash. Subsequently, we will show and discuss how types and specs can be used to impose further constraints for the concolic search, how the search can be parallelized, and the consequences of gradually increasing the depth of the search. We will also explain the set of command-line options of the tool and show their effect. Last but not least, we will attempt to apply CutEr to Erlang code bases of the participants and see what happens there. So, make sure you bring your laptop!
Kostis Sagonas is an academic who has been heavily involved in the development of Erlang and its implementation since 1999. At Uppsala University, he led the development team of the HiPE native code compiler that nowadays is part of Erlang/OTP. Together with his students, first at Uppsala University and more recently at the National Technical University of Athens, he has proposed various changes and additions to the language (most notably: bit-level pattern matching and bit-stream comprehensions, and the language of type and spec declarations) and has contributed to its compiler and runtime system. Besides HiPE, he has designed and implemented software development tools for Erlang (dialyzer, typer, tidier, proper, ...) and has contributed bug fixes to many open-source Erlang projects. GitHub:
kostis