Monday, August 14, 2006

Clover

As I mentioned in the post below, Clover is one of the reasons that I have become such an advocate of unit testing. Clover is a test coverage analysis tool. Clover instruments your code, so that as each instruction, conditional, or method is executed calls are made to the Clover assemblies. The Clover assemblies keep track of which aspects of your code has been executed, which haven't, and very importantly what has been the result of conditional checks.

So, for example, if your code contains the line if (object == null) and you have 'Clovered' (the process of instrumenting your code with calls to the Clover assemblies) your code, then Clover will be able to generate a report which tells you not only how many times that line of code has been executed, but also how many times object == null has evaluated to true and how many times it has evaluated to false, even highlighting if the condition has always evaluated to true or to false.

How does this fit into Unit Testing? If automated unit tests are carried out on Clovered code then you can use the clover reporting tools to generate coverage reports that tell you exactly which aspects of your code have been exercised by the unit tests. By analysing the clover reports you can tweak and improve your unit tests until you have a satisfactory level of test coverage.

Clover is also extremely useful in system test, load test, soak test, and UI test scenarios. Imagine a situation where your C# GUI is delivered to a tester who has a test specification to work through. If clovered code is delivered, on completion of testing by the tester, a clover report can be generated showing exactly which lines of your GUI code have been executed, which branches have been tested, and which forms or controls were completely missed by the tester/test specification.

0 Comments:

Post a Comment

<< Home