Reducing Mutants with Mutant Killable Precondition

Mutation analysis is a method for predicting the quality of test suite accurately. However, it has high computational cost due to the number of mutants that are generated. For example, the ROR (Relational Operator Replacement) mutation operator will generate seven mutants for just one relational operator. Naively applying multiple operators over the entire program can result in a high number of generated mutants. One way to reduce the number of mutants is to omit redundant mutants. In this paper, we propose an approach to reducing mutants by using mutant killable precondition to identify redundant mutants. A mutant killable precondition is a logical expression for killing a mutant. We focus on the conditional expression for control flow statements, such as if and while statements. We describe the mutant killable precondition for conditional expressions that compare numbers, e.g., x > 0. We then discuss mutants that are generated for such conditional expressions, and find the minimal set of mutants. Finally, we show the theoretical and empirical reduction rate of our approach.

[1]  A. Jefferson Offutt,et al.  Improving logic-based testing , 2013, J. Syst. Softw..

[2]  Michael D. Ernst,et al.  Are mutants a valid substitute for real faults in software testing? , 2014, SIGSOFT FSE.

[3]  Mark Harman,et al.  An Analysis and Survey of the Development of Mutation Testing , 2011, IEEE Transactions on Software Engineering.

[4]  A. Jefferson Offutt,et al.  Mutant Subsumption Graphs , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation Workshops.

[5]  Alex Groce,et al.  On The Limits of Mutation Reduction Strategies , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

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

[7]  René Just,et al.  Do Redundant Mutants Affect the Effectiveness and Efficiency of Mutation Analysis? , 2012, 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation.

[8]  Lu Zhang,et al.  Predictive Mutation Testing , 2016, IEEE Transactions on Software Engineering.

[9]  A. Jefferson Offutt,et al.  An Empirical Evaluation of Weak Mutation , 1994, IEEE Trans. Software Eng..

[10]  Sang-Woon Kim,et al.  Mutation testing cost reduction by clustering overlapped mutants , 2016, J. Syst. Softw..

[11]  Gregg Rothermel,et al.  An experimental evaluation of selective mutation , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[12]  René Just,et al.  The major mutation framework: efficient and scalable mutation analysis for Java , 2014, ISSTA 2014.

[13]  A. Jefferson Offutt,et al.  MuJava: an automated class mutation system , 2005, Softw. Test. Verification Reliab..

[14]  Lionel C. Briand,et al.  Is mutation an appropriate tool for testing experiments? , 2005, ICSE.

[15]  Mark Harman,et al.  Constructing Subtle Faults Using Higher Order Mutation Testing , 2008, 2008 Eighth IEEE International Working Conference on Source Code Analysis and Manipulation.

[16]  Man F. Lau,et al.  An extended fault class hierarchy for specification-based testing , 2005, TSEM.

[17]  A. Jefferson Offutt,et al.  MuJava: a mutation system for java , 2006, ICSE.

[18]  Willem Visser,et al.  What makes killing a mutant hard , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).