Potential users of T-VEC often ask questions about code coverage, usually modified condition decision coverage (MC/DC) versus model coverage. At the higher levels of safety and criticality, DO-178B requires evidence showing 100% structural code coverage (or more stringent coverage) from tests executed against the code.
As shown in below, T-VEC provides model coverage; that is, from the model, the tools check to make sure that a test vector is produced for every DCP in the model. If a test vector is not produced, the model has a defect, and the coverage report provides a link to that particular thread where the model defect is likely to exist.
The following definitions apply to structural testing and the associated code coverage:
- Condition. A condition is a leaf-level Boolean expression. It cannot be broken down into a simpler Boolean expression.
- Decision. A decision is a Boolean expression that controls the flow of the program, for instance, when it is used in an if or while statement. Decisions may be composed of a single condition or expressions that combine many conditions.
Structural testing criteria characterize the level of coverage of the code:
- Statement Coverage. Every statement in the program has been executed at least once.
- Decision Coverage. Every point of entry and exit in the program has been invoked at least once, and every decision in the program has taken all possible outcomes at least once.
- Condition/Decision Coverage. Every point of entry and exit in the program has been invoked at least once; every condition in a decision in the program has taken all possible outcomes at least once; and every decision in the program has taken all possible outcomes at least once.
- Modified Condition/Decision Coverage (MC/DC). Every point of entry and exit in the program has been invoked at least once; every condition in a decision in the program has taken on all possible outcomes at least once; and each condition has been shown to affect that decision outcome independently. A condition is shown to affect a decision’s outcome independently by varying just that decision while holding fixed all other possible conditions.
There are various ways to assess code coverage, and there are some qualified tools that provide code coverage measurements. The typical process involves instrumenting the code that is produced manually or through code generation, executing the tests against the instrumented code, and assessing the code coverage. The T-VEC tools are integrated with different code coverage tools. One qualified tool is produced by LDRA.