We reduced the time required for generating reports and merging. Our testing shows an average improvement of 65% compared to version 8.20. In many cases, we saw improvements up to 90%.
For Windows, we have a new internal run-time architecture. This new approach addresses an increasing industry focus on security. Our technique better handles complications such as restricted access to file systems and code-signing policies.
We added support for developing on macOS arm64. We dropped support for Windows CE.
BullseyeCoverage is a code coverage analyzer for C++ and C that tells you how much of your source code was tested. You can use this information to quickly focus your testing effort and pinpoint areas that need to be reviewed. Code coverage analysis is useful during unit testing, integration testing, and final release. BullseyeCoverage enables you to create more reliable code and save time.
• Function coverage gives you a quick overview and condition/
decision coverage gives you high precision
• Works with everything you can write in C++ and C,
including system-level code
• Short learning curve
• Include or exclude any portion of your project code
• Run-time source code included, for custom environments
• Simple licensing
• Merge results from distributed testing
• Integration with Microsoft Visual Studio
• Export in CSV, HTML, XML
BullseyeCoverage Measurement Technique
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. More thorough coverage metrics 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.
Source Code Instrumentation
BullseyeCoverage uses source code instrumentation, which is required for the best coverage analysis. It also makes our technology easily adaptable to a wide variety of processors and platforms. But we did not sacrifice performance; our build-time and run-time speed ranks among the very best.
With Microsoft C++, our smart preprocessor minimizes performance impact while mimicking Microsoft C++ idiosyncracies. BullseyeCoverage recognizes macro invocations and adjusts the measurement to reflect what really needs testing.
BullseyeCoverage automatically saves coverage once per second. There is no trade-off between buffering and performance.
Execution time increases 1.2-1.5x. Code size increase 1.4x. Build time increases 2x with most Microsoft C++ projects, 3-8x with other compilers.
The Coverage Browser uses an intuitive web browser style interface. We strictly follow the Windows application user interface guidelines to ensure a short learning curve.
BullseyeCoverage supports a wide range of platforms.
Premier Technical SupportWe provide only premier level technical support. When you send a request for technical support, you will not receive an automated response telling you to wait. You will usually get an answer and a resolution or workaround within one day.
Turbulence in the C++ Code Coverage Market
From the late 1990s throughout the mid 2010s, the code coverage market saw many changes in ownership for most of the players. Some products sprang onto the market with a promising outlook, but then were sold to a large company that buried them in a pile of unrelated products. Others simply died and were left behind.