A software design practice for determining Software Fault and Software Failure

Criteria

Reachability

The location or locations in the program that contain the fault must be reached

Infection

The state of the program must be incorrect

Propagation

The infected state must cause some output or final state to be incorrect

Reveal

The tester must observe part of the incorrect portion of the program state