Linking Unit Tests and Properties
Paper in proceedings, 2015
QuickCheck allows you to validate if your software has particular desired properties. These properties can be regarded as an abstraction over many unit tests. QuickCheck uses generated random input data to validate such a property. If QuickCheck finds a counterexample it becomes immediately clear what we are testing. If however all tests pass it is not immediately clear what we have tested, since we don’t see the actual generated test cases. In this case it is good to think about what we have actually tested. QuickCheck offers the possibility to gather statistics about the test cases, which is very insightful. Still, after inspecting the test data distribution many QuickCheck users wonder if a particular unit test case has been tested. Often a property is developed with a certain set of unit tests in mind. We have developed a tool that check if a given unit test can be generated by a property. This tool helps in understanding a property, making it easier to see what it really tests and hence judge its quality.