What is RapiCover for?

RapiCover provides structural code coverage optimized to meet the demands of testing embedded software.

RapiCover:

  • Has extremely low overheads for collecting code coverage on-target. See for example our blog post on Doom's code coverage overheads.
  • Can be used in projects requiring qualified tools (for example, DO-178C or ISO 26262 projects).
  • Supports all coverage levels required by standards up to and including MC/DC (Modified Condition/Decision Testing)
  • Can record coverage for multicore systems: both on a per-core basis, and as an aggregated view.
  • Provides support for justifications (also known as "covered by analysis" arguments), where it isn't possible to achieve 100% code coverage through testing alone. More information is available in our white paper.
  • Reports differences in coverage between reports, allowing progress to be tracked through the verification process.
  • Reports coverage on a per-test case basis, allowing the impact of specific test cases to be assessed.
  • Support for Ada, C and C++, including support for a large variety of compilers.
  • Easily adaptable to work with any processor. Support currently exists for a large number of processors.

Code Coverage Criteria

RapiCover provides support for each of the standard code coverage criteria right up to MC/DC.

MeasurementDescription
Function coverageEach function has been called at least once
Call coverageEach function has been called at least once, and each different function call has been encountered at least once
Statement coverageEach statement in the code has been encountered at least once
Decision coverageEach decision (see below) In the code has evaluated true at least once and evaluated false at least once, and each function entry and exit point has been encountered at least once.
Condition coverageEach condition (see below) in the code has evaluated true at least once and evaluated false at least once.
Modified Condition/Decision CoverageDecision coverage plus each condition has been shown to independently affect the outcome of its enclosing decision