Software testability, the tendency for software to reveal its faults during testing, is an important issue for veri cation and quality assurance. Testability measurement can also be used to good advantage as a debugging aide. In this paper, we propose using testability measures for assertion placement and fault isolation. One measure of testability is a technique termed \Sensitivity Analysis." This technique analyzes how likely a test scheme is to (1) propagate data state errors to the output space, (2) cause internal states to become corrupted when faults are exercised, and (3) exercise the code. By knowing where \small" faults are likely to hide for a particular test scheme, we have insight into where assertions are warranted and particularly bene cial. Even without hints from assertions as to where a fault might be resident, sensitivity analysis and a rough failure probability estimate (for a program during test or operation) provide enough information to formalize a testa...
Jeffrey M. Voas