An Empirical Evaluation of Three Defect-Detection Techniques

We replicated a controlled experiment first run in the early 1980's to evaluate the effectiveness and efficiency of 50 student subjects who used three defect-detection techniques to observe failures and isolate faults in small C programs. The three techniques were code reading by stepwise abstraction, functional (black-box) testing, and structural (white-box) testing. Two internal replications showed that our relatively inexperienced subjects were similarly effective at observing failures and isolating faults with all three techniques. However, our subjects were most efficient at both tasks when they used functional testing. Some significant differences among the techniques in their effectiveness at isolating faults of different types were seen. These results suggest that inexperienced subjects can apply a formal verification technique (code reading) as effectively as an execution-based validation technique, but they are most efficient when using functional testing.

[1]  A. R. Ilersic,et al.  Research methods in social relations , 1961 .

[2]  K. Popper,et al.  Conjectures and refutations;: The growth of scientific knowledge , 1972 .

[3]  H. Parsons What Happened at Hawthorne? , 1974, Science.

[4]  William C. Hetzel,et al.  An experimental analysis of program verification methods. , 1976 .

[5]  Glenford J. Myers,et al.  A controlled experiment in program testing and code walkthroughs/inspections , 1978, CACM.

[6]  William E. Howden,et al.  An evaluation of the effectiveness of symbolic testing , 1978, Softw. Pract. Exp..

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

[8]  Bill Curtis,et al.  Modern Coding Practices and Programmer Performance , 1979, Computer.

[9]  Harlan D. Mills,et al.  Structured programming - theory and practice , 1979, The systems programming series.

[10]  J. S. Hunter,et al.  Statistics for Experimenters: An Introduction to Design, Data Analysis, and Model Building. , 1979 .

[11]  B. Curtis,et al.  Measurement and experimentation in software engineering , 1980, Proceedings of the IEEE.

[12]  William E. Howden,et al.  Functional Program Testing , 1978, IEEE Transactions on Software Engineering.

[13]  Ruven E. Brooks,et al.  Studying programmer behavior experimentally: the problems of proper methodology , 1980, CACM.

[14]  Elaine J. Weyuker,et al.  On Testing Non-Testable Programs , 1982, Comput. J..

[15]  Victor R. Basili,et al.  A Methodology for Collecting Valid Software Engineering Data , 1984, IEEE Transactions on Software Engineering.

[16]  Victor R. Basili,et al.  Evaluating software testing strategies , 1984 .

[17]  Jr. Richard Wayne Selby,et al.  Evaluations of software technologies: testing, cleanroom, and metrics (development methodology, characteristic set, offline software review, empirical study) , 1985 .

[18]  Victor R. Basili,et al.  Comparing the Effectiveness of Software Testing Strategies , 1987, IEEE Transactions on Software Engineering.

[19]  Standard Glossary of Software Engineering Terminology , 1990 .

[20]  Jon D. Valett,et al.  The (mis)use of subjective process measures in software engineering , 1993 .

[21]  Victor R. Basili,et al.  Experimental Software Engineering Issues: Critical Assessment and Future Directions , 1993, Lecture Notes in Computer Science.

[22]  Brian Marick,et al.  The craft of software testing , 1994 .

[23]  Adam A. Porter,et al.  An experiment to assess different defect detection methods for software requirements inspections , 1994, Proceedings of 16th International Conference on Software Engineering.

[24]  A. Brooks,et al.  Verification of results in software maintenance through external replication , 1994, Proceedings 1994 International Conference on Software Maintenance.

[25]  Watts S. Humphrey,et al.  A discipline for software engineering , 2012, Series in software engineering.