Automatically detecting equivalent mutants and infeasible paths

Mutation testing is a technique for testing software units that has great potential for improving the quality of testing, and thereby increasing our ability to assure the high reliability of critical software. It will be shown that recent advances in mutation research have brought a practical mutation testing system closer to reality. One recent advance is a partial solution to the problem of automatically detecting equivalent mutant programs. Equivalent mutants are currently detected by hand, which makes it very expensive and time-consuming. The problem of detecting equivalent mutants is a speci c instance of a more general problem, commonly called the feasible path problem, which says that for certain structural testing criteria some of the test requirements are infeasible in the sense that the semantics of the program imply that no test case satis es the test requirements. Equivalent mutants, unreachable statements in path testing techniques, and infeasible DU-pairs in data ow testing are all instances of the feasible path problem. This paper presents a technique that uses mathematical constraints, originally developed for test data generation, to automatically detect some equivalent mutants and infeasible paths. Keywords|software testing, mutation testing, constraints, feasible path analysis The Journal of Software Testing, Veri cation, and Reliability, Vol 7, No. 3, pages 165{192, September 1997.

[1]  William E. Howden,et al.  Weak Mutation Testing and Completeness of Test Sets , 1982, IEEE Transactions on Software Engineering.

[2]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[3]  Larry J Morell,et al.  A Theory of Fault-Based Testing , 1990, IEEE Trans. Software Eng..

[4]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[5]  Elaine J. Weyuker,et al.  An Applicable Family of Data Flow Testing Criteria , 1988, IEEE Trans. Software Eng..

[6]  Timothy Alan Budd,et al.  Mutation analysis of program test data , 1980 .

[7]  Richard G. Hamlet,et al.  Testing Programs with the Aid of a Compiler , 1977, IEEE Transactions on Software Engineering.

[8]  Jeffrey M. Voas,et al.  Predicting where faults can hide from testing , 1991, IEEE Software.

[9]  J. A. Acree On mutation , 1980 .

[10]  Vi Andrew Jefferson Offutt,et al.  Automatic test data generation , 1988 .

[11]  Gregg Rothermel,et al.  An Experimental Determination of Su cient Mutation Operators , 1994 .

[12]  A. Jefferson Offutt,et al.  Using compiler optimization techniques to detect equivalent mutants , 1994, Softw. Test. Verification Reliab..

[13]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

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

[15]  Douglas Baldwin,et al.  Heuristics for Determining Equivalence of Program Mutations. , 1979 .

[16]  Allen Goldberg,et al.  Applications of feasible path analysis to program testing , 1994, ISSTA '94.

[17]  Roland H. Untch,et al.  An Experimental Determination of Suucient Mutant Operators , 1996 .

[18]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[19]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[20]  A. Jefferson Offutt,et al.  An integrated automatic test data generation system , 1991, J. Syst. Integr..

[21]  R.A. DeMillo,et al.  An extended overview of the Mothra software testing environment , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[22]  Keith E. Williamson,et al.  Test data generation and feasible path analysis , 1994, ISSTA '94.