Putting assertions in their place

Assertions that are placed at each statement in a program can automatically monitor the internal computations of a program execution. However, the advantages of universal assertions come at a cost. A program with such extensive internal instrumentation will be slower than the same program without the instrumentation. Some of the assertions may be redundant. The task of instrumenting the code with correct assertions at each location is burdensome, and there is no guarantee that the assertions themselves will be correct. We advocate a middle ground between no assertions at all (the most common practice) and the theoretical ideal of assertions at every location. Our compromise is to place assertions only at locations where traditional testing is unlikely to uncover software faults. One type of testability measurement, sensitivity analysis, identifies locations where testing is unlikely to be effective.<<ETX>>

[1]  C. Hennebert,et al.  SACEM software validation , 1990, [1990] Proceedings. 12th International Conference on Software Engineering.

[2]  Jeffrey M. Voas,et al.  Improving the software development process using testability research , 1992, [1992] Proceedings Third International Symposium on Software Reliability Engineering.

[3]  Jeffrey M. Voas,et al.  Faults on its sleeve: amplifying software reliability testing , 1993, ISSTA '93.

[4]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[5]  A. Offutt The coupling effect: fact or fiction , 1989 .

[6]  H. Hecht Rare conditions-an important cause of failures , 1993, COMPASS '93: Proceedings of the Eighth Annual Conference on Computer.

[7]  Paul Ammann,et al.  The Effect of Imperfect Error Detection on Reliability Assessment via Life Testing , 1992, IEEE Trans. Software Eng..

[8]  Jeffrey M. Voas,et al.  PIE: A Dynamic Failure-Based Technique , 1992, IEEE Trans. Software Eng..

[9]  Jeffrey M. Voas,et al.  Predicting where faults can hide from testing , 1991, IEEE Software.