Subscribe

Issue No.02 - February (1996 vol.22)

pp: 97-108

DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/32.485220

ABSTRACT

<p><b>Abstract</b>—Program "testability" is, informally, the probability that a program will fail under test if it contains at least one fault. When a dependability assessment has to be derived from the observation of a series of failure-free test executions (a common need for software subject to "ultra-high reliability" requirements), measures of testability can—in theory—be used to draw inferences on program correctness (and hence on its probability of failure in operation). In this paper, we rigorously investigate the concept of testability and its use in dependability assessment, criticizing, and improving on, previously published results.</p><p>We first give a general descriptive model of program execution and testing, on which the different measures of interest can be defined. We propose a more precise definition of program testability than that given by other authors, and discuss how to increase testing effectiveness without impairing program reliability in operation. We then study the mathematics of using testability to estimate, from test results: 1) the probability of program correctness and 2) the probability of failures. To derive the probability of program correctness, we use a Bayesian inference procedure and argue that this is more useful than deriving a classical "confidence level." We also show that a high testability is not an unconditionally desirable property for a program. In particular, for programs complex enough that they are unlikely to be completely fault-free, increasing testability may produce a program which will be less trustworthy, even after successful testing.</p>

INDEX TERMS

Bayesian inference, error, fault, failure, reliability assessment, software testing, testability, test oracle, ultra-high reliability.

CITATION

Antonia Bertolino, Lorenzo Strigini, "On the Use of Testability Measures for Dependability Assessment",

*IEEE Transactions on Software Engineering*, vol.22, no. 2, pp. 97-108, February 1996, doi:10.1109/32.485220