Smother - MC/DC analysis for Erlang

Introduction

Smother is a tool to provide Modified Decision/Condition Coverage for Erlang programs.

All software requires testing to ensure it functions as specified, and to try to identify and remove any fault conditions. Unit testing and integration testing often consists of suites of test cases that exercise a range of likely - and unlikely - usage patterns for the software to confirm that it does not crash and that the results it produces are those that are expected.

The standard OTP libraries include cover to provide line coverage analysis, and this is often used to provide a simple measure of adequacy for Erlang test suites - i.e. to determine whether more test cases should be added to explore more of the software's behaviour. However, line coverage is limited in its analysis, and many faults can remain undetected in code, even after testing to complete line coverage.

Several other code coverage metrics exist, including Decision coverage and Condition coverage, but these also have limitations. For the highest integrity software the regulatory requirement is - either implicitly of explicitly - to test to complete coverage as measured by Modified Condition/Decision Coverage.

The Smother tool provides an interface that is similar to cover, but that produces MC/DC analysis of the Erlang module. Additionally, Smother provides various programatic interfaces to the analysis, to provide numerical coverage data, and simplified lists of covered and uncovered code. These can be utilised by third-party tools to acheive automatic test generation, and large scale test analysis.

Watch the introduction video

Documentation

See the online edoc.

Results

Have you tried Smother on your project? Please take 3 mins to let us know how it went.