5.2.1 Component and Code Coverage Testing

Coverage Testing of Hardware Components or Software Code

The emphasis in hardware component or software code testing is on verifying that as large a portion as possible of the Unit Under Test (UUT) has been covered by a given set of individual tests. The goal here is to determine input test patterns that will expose existing faults in a UUT by triggering the fault and making its impact visible at the output of the unit. Additional testing goals are high detection rate of real defects in short testing time and low testing cost per UUT with high fault diagnosis (i.e., finding what failed).

In hardware, “component coverage testing”49 refers to the process of verifying that a certain test sequence has covered (i.e., tested) all the components in a circuit or a system. In software, “code coverage testing” refers to the process of verifying that a certain set of input patterns has traversed (i.e., covered) the entire unit.


We first ask: Why test at the unit level? (e.g., an integrated circuit, an electronic board or a software unit). The answer is that we seek to detect failure at the lowest package level since, as a rough rule, when a test fails to detect an error at a given level of packaging, it will cost an order-of-magnitude more to detect the error at the next higher level of packaging. The reasons for this cost rule are numerous, but the key difficulty relates to the issues of controllability and observability ...

Get Verification, Validation, and Testing of Engineered Systems now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.