This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Theory of Fault-Based Predicate Testing for Computer Programs
August 1996 (vol. 22 no. 8)
pp. 552-562

Abstract—Predicates appear in both the specification and implementation of a program. One approach to software testing, referred to as predicate testing, is to require certain types of tests for a predicate. In this paper, three fault-based testing criteria are defined for compound predicates, which are predicates with one or more AND/OR operators. BOR (boolean operator) testing requires a set of tests to guarantee the detection of (single or multiple) boolean operator faults, including incorrect AND/OR operators and missing/extra NOT operators. BRO (boolean and relational operator) testing requires a set of tests to guarantee the detection of boolean operator faults and relational operator faults (i.e., incorrect relational operators). BRE (boolean and relational expression) testing requires a set of tests to guarantee the detection of boolean operator faults, relational operator faults, and a type of fault involving arithmetical expressions. It is shown that for a compound predicate with n, n > 0, AND/OR operators, at most n + 2 constraints are needed for BOR testing and at most 2 * n + 3 constraints for BRO or BRE testing, where each constraint specifies a restriction on the value of each boolean variable or relational expression in the predicate. Algorithms for generating a minimum set of constraints for BOR, BRO, and BRE testing of a compound predicate are given, and the feasibility problem for the generated constraints is discussed. For boolean expressions that contain multiple occurrences of some boolean variables, how to combine BOR testing with the meaningful impact strategy developed by Weyuker, Goradia, and Singh [21] is briefly described.

[1] J. Chilenski and S. Miller, “Applicability of Modified Condition/Decision Coverage to Software Testing,” Software Eng. J., pp. 193–200, Sept. 1994.
[2] L.A. Clarke, J. Hassel, and D.J. Richardson, "A Close Look at Domain Testing," IEEE Trans. Software Engineering, vol. 8, no. 4, pp. 380-390, July 1982.
[3] R.A. DeMillo and A.J. Offutt,“Constraint based automatic test data generation,” IEEE Transactions on Software Engineering, vol. 17, no. 9, Sept. 1991, pp. 900-910.
[4] K.A. Foster, "Error Sensitive Test Cases Analysis (ESTCA)," IEEE Trans. Software Engineering, vol. 6, no. 3, pp. 258-264, May 1980.
[5] K.A. Foster, "Sensitive Test Data for Logical Expressions," ACM SIGSOFT Software Engineer Notes, vol. 9, no. 2, pp. 120-125, Apr. 1984.
[6] P. Frankl and E.J. Weyuker, “An Applicable Family of Data Flow Testing Criteria,” IEEE Trans. Software Eng., vol. 14, no. 10, pp. 1,483–1,498, Oct. 1988.
[7] T. Goradia, “Dynamic Impact Analysis: A Cost-Effective Technique to Enforce Error-Propagation,” Proc. ACM Int'l Symp. Software Testing and Analysis, pp. 171–181, June 1993.
[8] W.E. Howden, "Weak Mutation Testing and Completeness of Test Cases," IEEE Trans. Software Engineering, vol. 8, no. 4, pp. 371-379, July 1982.
[9] L.J. Morell, "A Theory of Fault-Based Testing," IEEE Trans. Software Engineering, vol. 16, no. 8, pp. 844-857, Aug. 1990.
[10] G.J. Myers,The Art of Software Testing.New York: Wiley, 1979.
[11] A.J. Offutt and S.D. Lee, "An Empirical Evaluation of Weak Mutation," IEEE Trans. Software Engineering, vol. 20, no. 5, pp. 337-344, May 1994.
[12] A.M. Pardkar and K.C. Tai, "Test Generation for Boolean Expressions," Proc. Int'l Symp. Software Reliability Eng., pp. 106-115, 1995.
[13] A.M. Paradkar, K.C. Tai, and M.A. Vouk, "Automatic Test Generation for predicates," Proc. IEEE Int'l Symp. Software Reliability Engineering, Oct. 1996, to appear.
[14] D.J. Richardson and M.C. Thompson, "The RELAY Model for Error Detection and Its Application," Proc. ACM Second Workshop on Software Testing, Verification and Analysis, pp. 223-230, 1988.
[15] K.C. Tai and H.K. Su, "Test Generation for Boolean Expressions," Proc. IEEE Int'l Conf. Computer Software and Applications (COMPSAC), pp. 278-283, 1987.
[16] K.C. Tai, "Predicate-Based Test Generation for Computer Programs," Proc. Int'l Conf. Software Engineering, pp. 267-276, May 1993.
[17] K.C. Tai, M.A. Vouk, A. Paradkar, and P. Lu, "Evaluation of a Predicate-Based Software Testing Strategy," IBM System J., vol. 33, no. 3, pp. 445-457, 1994.
[18] M.C. Thompson, D.J. Richardson, and L.A. Clarke, “An Information Flow Model of Fault Detection,” Proc. ACM Int'l Symp. Software Testing and Analysis, pp. 182–192, June 1993.
[19] J. Voas, “PIE: A Dynamic Failure-Based Technique,” IEEE Trans. Software Eng., vol. 18, no. 8, pp. 717–727, Aug. 1992.
[20] M.A. Vouk, K.C. Tai, and A. Paradkar, "Empirical Studies of Predicate-Based Software Testing" Proc. IEEE Symp. Software Reliability Engineering, pp. 55-65, 1994.
[21] E.J. Weyuker, T. Goradia, and A. Singh, "Automatically Generating Test Data from Boolean Specification," IEEE Trans. Software Eng., vol. 20, no. 5, pp. 353-363, May 1994.
[22] L.J. White and E.I. Cohen, "A Domain Strategy for Computer Program Testing", IEEE Trans. Software Engineering, vol. 6, pp. 247-257, May 1980.
[23] S.J. Zeil, F.H. Afifi, and L.J. White, "Detection of Linear Errors via Domain Testing," ACM Trans. Software Engineering, vol. 1, no. 4, pp. 422-451, Oct. 1992.

Index Terms:
Software testing, predicate testing, fault-based testing, boolean operator faults, relational operator faults, off-by-$\epsilon$ faults.
Citation:
Kuo-Chung Tai, "Theory of Fault-Based Predicate Testing for Computer Programs," IEEE Transactions on Software Engineering, vol. 22, no. 8, pp. 552-562, Aug. 1996, doi:10.1109/32.536956
Usage of this product signifies your acceptance of the Terms of Use.