Using Testability Measures for Dependability Assessment

Program "testability" is the probability that a fault in a program, if present, will cause the program to fail. Measures of testability can be used to draw inferences on program correctness from the observation of a series of failure-free test executions, a common need for software with "ultra-high reliability" requirements. For a program that has passed a certain number of tests without failing, a high value of testability implies a high probability that the program is correct. We give a general descriptive model of program execution and testing, and propose a more precise definition of program testability than that given by other authors. We then study the use of testability in: i) providing, through testing, confidence in the absence of faults and ii) bounding the probability of failures, from the results of operational testing. We derive the probability of absence of faults through a Bayesian inference procedure, criticise previously proposed derivations of this probability, and study the relationship between the testability of a program and its failure probability in operation. We derive the conditions under which a high testability improves one's expectations about program reliability. Last, we discuss the potential of these methods in practical applications.

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

[2]  Hermann Kopetz,et al.  Dependability: Basic Concepts and Terminology , 1992 .

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

[4]  Richard G. Hamlet,et al.  Partition Testing Does Not Inspire Confidence , 1990, IEEE Trans. Software Eng..

[5]  Richard G. Hamlet Are we testing for true reliability? , 1992, IEEE Software.

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

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

[8]  Bev Littlewood,et al.  Validation of ultrahigh dependability for software-based systems , 1993, CACM.

[9]  Elaine J. Weyuker,et al.  A Formal Analysis of the Fault-Detecting Ability of Testing Methods , 1993, IEEE Trans. Software Eng..

[10]  Elaine J. Weyuker,et al.  Comparison of program testing strategies , 1991, TAV4.

[11]  Lorenzo Strigini,et al.  On the Use of Testability Measures for Dependability Assessment , 1996, IEEE Trans. Software Eng..

[12]  John D. Musa,et al.  Operational profiles in software-reliability engineering , 1993, IEEE Software.

[13]  Richard G. Hamlet,et al.  Probable Correctness Theory , 1987, Inf. Process. Lett..

[14]  Jeffrey M. Voas,et al.  Estimating the Probability of Failure When Testing Reveals No Failures , 1992, IEEE Trans. Software Eng..

[15]  David Lorge Parnas,et al.  Evaluation of safety-critical software , 1990, CACM.