This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
A Theory of Fault-Based Testing
August 1990 (vol. 16 no. 8)
pp. 844-857

A theory of fault-based program testing is defined and explained. Testing is fault-based when it seeks to demonstrate that prescribed faults are not in a program. It is assumed that a program can only be incorrect in a limited fashion specified by associating alternate expressions with program expressions. Classes of alternate expressions can be infinite. Substituting an alternate expression for a program expression yields an alternate program that is potentially correct. The goal of fault-based testing is to produce a test set that differentiates the program from each of its alternates. A particular form of fault-based testing based on symbolic execution is presented. In symbolic testing, the output from the system is an expression in terms of the input and the symbolic alternative. Equating this with the output from the original program yields a propagation equation whose solutions determine those alternatives which are not differentiated by this test. Since an alternative set can be infinite, it is possible that no finite test differentiates the program from all its alternates. Circumstances are described as to when this can be decided.

[1] W. E. Howden, "Reliability of the path analysis testing strategy,"IEEE Trans. Software Eng., vol. SE-2, no. 3, Sept. 1976.
[2] E. Miller, M. Paige, J. Benson, and W. Wisehart, "Structural techniques of program validation," inDig. Papers COMPCON 74, Spring 1974, pp. 161-164.
[3] M. R. Woodward, D. Hedley, and M. A. Hennell, "Experience with path analysis and testing programs,"IEEE Trans. Software Eng., vol. SE-6,. no. 3, pp. 278-286, May 1980.
[4] G. J. Myers,The Art of Software Testing. New York: Wiley, 1979.
[5] E. J. Weyuker, "Axiomatizing software test data adequacy,"IEEE Trans. Software Eng., vol. SE-12, no. 12, pp. 1128-1138, Dec. 1986.
[6] R. DeMillo, R. J. Lipton, and F. G. Sawyer, "Hints on test data selection: Help for the practicing programmer,"Computer, vol. 11, pp. 34-41, Apr. 1978.
[7] S. L. Gerhard and L. Yelowitz, "Observations of fallibility in applications of modern programming methodologies,"IEEE Trans. Software Eng., vol. SE-2, no. 3, Sept. 1976.
[8] J. B. Goodenough and S. L. Gerhart, "Toward a theory of test data selection,"IEEE Trans. Software Eng., vol. SE-1, no. 2, pp. 156- 173, June 1975.
[9] M. Geller, "Test data as an aid in proving program correctness,"Commun. ACM, vol. 21, pp. 368-375, May 1978.
[10] IEEE Standard Glossary of Software Engineering Terminology, IEEE Standard 729-1983, 1983.
[11] R. C. Linger, H. D. Mills, and B. I. Witt,Structured Programming Theory and Practice. Reading. MA: Addison-Wesley, 1979.
[12] L. J. Morell, "A theory of error-based testing," Ph.D. dissertation, Dep. Comput. Sci., Univ. Maryland, Tech. Rep. TR-1395, Aug. 1984.
[13] H. D. Mills, "Function semantics for sequential programs," inProc. Inform. Processing 80, 1980.
[14] W. S. Brainerd and L. H. Landweber,Theory of Computation. New York: Wiley, 1974.
[15] W. E. Howden, "Algebraic program testing,"Acta Inform., vol. 10, 1978.
[16] L. J. Morell, "A model for code-based testing schemes," inProc. Fifth Annu. Pacific Northwest Software Quality Conf., Oct. 1987, pp. 309-326.
[17] L. Clarke, "A system to generate test data and symbolically execute programs,"IEEE Trans. Software Eng., vol. SE-2, pp. 215-222, Sept. 1977.
[18] W. E. Howden, "Symbolic testing and the DISSECT symbolic evaluation system,"IEEE Trans. Software Eng., vol. SE-3, pp. 266-278, 1977.
[19] A. J. Offutt, "The coupling effect: Fact or fiction?" inProc. Third Symp. Software Testing, Analysis, and Verification (TAV3), Dec. 13- 15, 1989, pp. 131-140.
[20] J. H. Rowland and P. J. Davis, "On the use of transcendentals for program testing,"J. ACM, vol. 28, no. 1, pp. 181-190, Jan. 1981.
[21] S. K. Basu, "A note on the synthesis of inductive assertions,"IEEE Trans. Software Eng., vol. SE-6, no. 1, pp. 32-39, Jan. 1980.
[22] L. J. Morell and R. G. Hamlet, "Error propagation and elimination in computer programs," Dep. Comput. Sci., Univ. Maryland, Tech. Rep. TR-1065, July 1981.
[23] M. Hecht,Flow Analysis of Computer Programs. New York: Elsevier North-Holland, 1977.
[24] S. Ibarra and B. Leninger, "Straight-line programs with one input variable,"SIAM J. Comput., Jan. 1982.
[25] E. J. Weyuker and T. J. Ostrand, "Theories of program testing and the application of revealing subdomains,"IEEE Trans. Software Eng., vol. SE-6, no. 3, pp. 236-246, May 1980.
[26] R. G. Hamlet, "Testing programs with the aid of a compiler,"IEEE Trans. Software Eng., vol. SE-3, no. 4, July 1977.
[27] K. Foster, "Error sensitive test analysis (ESTA)," inDig. Workshop Software Testing and Test Documentation, Dec. 1978.
[28] W. E. Howden, "Weak mutation testing and completeness of test sets,"IEEE Trans. Software Eng., vol. SE-8, pp. 371-379, July 1982.
[29] L. J. White and E. I. Cohen, "A domain strategy for computer program testing,"IEEE Trans. Software Eng., vol. SE-6, no. 3, pp. 247-257, May 1980.
[30] S. J. Zeil, "Testing for perturbation of program statements,"IEEE Trans. Software Eng., vol. SE-9, pp. 335-346, May 1983.
[31] T. A. Budd, R. A. DeMillo, R. J. Lipton, and F. G. Sayward, "Theoretical and empirical studies on using program mutation to test the function correctness of programs,"Principles Program. Lang., pp. 220-233, 1980.
[32] C. V. Ramamoorthy and F. B. Bastani, "Software reliability--Status and perspectives,"IEEE Trans. Software Eng., vol. SE-8, no. 4, pp. 354-371, July 1982.

Index Terms:
fault-based program testing; prescribed faults; alternate expressions; program expressions; test set; symbolic execution; symbolic alternative; propagation equation; alternative set; finite test; computational complexity; program verification; symbol manipulation.
Citation:
L.J. Morell, "A Theory of Fault-Based Testing," IEEE Transactions on Software Engineering, vol. 16, no. 8, pp. 844-857, Aug. 1990, doi:10.1109/32.57623
Usage of this product signifies your acceptance of the Terms of Use.