Some products report several similar code coverage metrics and leave you to work out which one to use. BullseyeCoverage solves this problem by reporting only the best two metrics: function coverage for quickly assessing overall coverage, and condition/decision coverage for detailed testing.
Function coverage tells whether each function was invoked or not. Looking at your function coverage allows you to quickly know what major areas of your software are untested. To find defects quickly, begin testing by attaining function coverage in all areas of your software before delving into detailed testing of any one area.
Condition/decision coverage measures whether you exercise every control structure with every
possible decision outcome as well as every possible condition outcome.
A decision is the whole expression affecting the flow of
control in a control structure.
A decision may contain conditions, which are sub-expressions
separated by logical-and (&&
) and logical-or
(||
) operators.
Condition/decision coverage basically measures whether you tested all
the logic of your control structures.
Condition/decision coverage is the overall best coverage metric for detailed white-box code testing. Condition/decision coverage balances usability with thoroughness. Simpler coverage metrics are blind to many obvious paths through the source code. For example, compared to statement coverage, branch coverage, and condition coverage, condition/decision coverage is stronger and just as easy to use. Condition/decision coverage sees more test cases than these metrics and therefore gives you a better picture of what you are not testing.
Metrics that are more thorough than condition/decision coverage require a significant increase in complexity combined with diminishing probability of exposing a bug. For example, compared to path coverage and its variants such as LCSAJ coverage and data flow coverage, condition/decision coverage is much, much easier to use.
© 2024 Bullseye Testing Technology