Software testing and software fault tolerance are two major techniques for developing reliable software systems, yet limited empirical data are available in the literature to evaluate their effectiveness. We conducted a major experiment to engage 34 programming teams to independently develop multiple software versions for an industry-scale critical flight application, and collected faults detected in these program versions. To evaluate the effectiveness of software testing and software fault tolerance, mutants were created by injecting real faults occurred in the development stage. The nature, manifestation, detection, and correlation of these faults were carefully investigated. The results show that coverage testing is generally an effective means to detecting software faults, but the effectiveness of testing coverage is not equivalent to that of mutation coverage, which is a more truthful indicator of testing quality. We also found that exact faults found among versions are very limited. This result supports software fault tolerance by design diversity as a creditable approach for software reliability engineering. Finally we conducted domain analysis approach for test case generation, and concluded that it is a promising technique for software testing purpose.
An empirical study on testing and fault tolerance for software reliability engineering
2003
12 Seiten, 36 Quellen
Conference paper
English
Automating software fault tolerance
NTRS | 1987
|Software Fault Tolerance in a Clustered Architecture: Techniques and Reliability Modeling
British Library Conference Proceedings | 1999
|Software Fault‐Tolerance Techniques
Wiley | 2017
|Automating software fault tolerance
AIAA | 1987
|