Abstract
Much of software engineering is targeted towards identifying and removing existing defects while preventing the injection of new ones. Defect management is therefore one important software development process whose principal aim is to ensure that the software produced reaches the required quality standard before it is shipped into the market place. In this paper, we report on the results of research conducted to develop a predictive model of the efficacy of one important defect management technique, that of unit testing. We have taken an empirical approach. We commence with a number of assumptions that led to a theoretical model which describes the relationship between effort expended and the number of defects remaining in a software code module tested (the latter measure being termed correctness). This model is general enough to capture the possibility that debugging of a software defect is not perfect and could lead to new defects being injected. The Model is examined empirically against actual data and validated as a good predictive model under specific conditions. The work has been done in such a way that models are derived not only for the case of overall correctness but also for specific types of correctness such as correctness arising from the removal of defects contributing to shortcoming in reliability (R-type), functionality (F-type), usability (U-type) and maintainability (M-type) aspects of the program subject to defect management.
Similar content being viewed by others
References
Bailey, J. W. and Basili, V. R. 1981. A meta-model for software development resource expenditures. Proc. of the 5th International Conference on Software Engineering, San Diego, California.
Bashir, I. and Goel, A. 2000. Testing Object-Oriented Software: Life-Cycle Solutions, Springer
Beizer, B. 1991. Software Testing Techniques (Second Edn.), New York, Van Nostrand Reinhold.
Binder, R. V. 1999. Testing Object-Oriented Systems:Models, Patterns and Tools, MA, Addison-Wesley.
Briand, L. C., Morasca, S., and Basili, V. R. 1994. Designing and validating high level design metrics. University of Maryland at College Park, Tec. Report CS-TR-3301.
Chen, T. Y. and Yu, Y. T. 1996. On the expected number of failures detected by sub-domain testing and random testing. IEEE Trans. Software Engrg. SE-22: 109-119.
Daley, D. J. and Vere-Jones, D. 1988. An Introduction to the Theory of Point Processes, New York, Springer-Verlag.
Dromey, R. G. 1995. A model for software product quality, IEEE Trans. Software Engrg. SE-21: 146-162.
Duran, J. W. and Ntafos, S. C. 1984. An evaluation of random testing, IEEE Trans. Software Engrg. SE-10: 438-444.
El-Emam, K., Drouin, J. N., and Melo, W. 1998. SPICE:The Theory and Practice of Software Process Improvement and Capability Determination, U. S. A., IEEE Computer Society Press.
Fenton, N. E. and Neil, M. 1999. A critique of software defect prediction models. IEEE Trans. Software Engrg. SE-25: 675-689.
Frankl, P. G., Hamlet, R., Littlewood, B., and Strigini, L. 1997. Choosing a testing method to deliver reliability. Proc. of the 19th International Conference on Software Engineering, Boston, MA, pp. 68-78.
Hamlet, R. and Taylor, R. 1990. Partition testing does not inspire con dence, IEEE Trans. Software Engrg. SE-16: 1402-1411.
Henderson-Sellers, B., Simons, A. J., and Younessi, H. 1998. The OPEN Toolbox of Techniques, UK, Addison-Wesley.
Howden, W. E. 1987. Functional Program Testing. New York, McGraw-Hill.
Humphrey, W. S. 1995. A Discipline for Software Engineering. New York, Addison-Wesley.
Lyu, M. R. 1996. Handbook of Software Reliability Engineering. New York, McGraw-Hill.
McGregor, J. D. and Sykes, D. A. 2001. A Practical Guide to Testing Object-Oriented Software. MA, Addison-Wesley.
Mills, H. D., Dyer, M., and Linger, R. 1987. Cleanroom software engineering. IEEE Software 4(5): 19-25.
Myers, G. J. 1979. The Art of Software Testing. John Wiley and Sons.
1993. PASS-C: Program Analysis and Style System, User Manual. Software Quality Institute, Griffith University, Queensland, Australia.
Rombach, D. and Kellner, M. I. 1991. Comparisons of software process descriptions. Proc. of the 6th International Software Process Workshop, Kakodate, Japan.
Siegel, S. 1956. Non-Parametric Statistics for the Behavioral Sciences. New York, McGraw-Hill.
Strauss, S. and Ebenau, R. G. 1995. Software Inspection Process. New York, McGraw-Hill.
Weyuker, E. J. and Jeng, B. 1991. Analyzing partition testing strategies, IEEE Trans. Software Engrg. SE-17: 703-711.
Xie, M. 1991. Software Reliability Modelling. Singapore, World Scientific Publishing.
Younessi, H. 1998. A model of software defect management efficacy. School of Information Technology, Swinburne University of Technology Research Rep. 98-12.
Younessi, H. 2002. Object-Oriented Defect Management of Software. New Jersey, Prentice-Hall.
Zeephongsekul, P., Xia, G., and Kumar, S. 1994. Software-reliability growth model: Primary-failures generate secondary-faults under imperfect debugging, IEEE Trans. Reliability R-43: 408-413.
Zeephongsekul, P., Xia, G., and Kumar, S. 1994, Software reliability growth models based on cluster point processes, Int. J. Systems Sci. 25:737-751
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Younessi, H., Zeephongsekul, P. & Bodhisuwan, W. A General Model of Unit Testing Efficacy. Software Quality Journal 10, 69–92 (2002). https://doi.org/10.1023/A:1015724900702
Issue Date:
DOI: https://doi.org/10.1023/A:1015724900702