Equivalent Mutants in Configurable Systems: An Empirical Study

Mutation testing is a program-transformation technique that evaluates the quality of test cases by assessing their capability to detect injected artificial faults. The costs of using mutation testing are usually high, hindering its use in industry. Previous research has reported that roughly one-third of the mutants generated in single systems are equivalents. In configurable systems, a set of mutation operators that focus on preprocessor directives (e.g., #ifdef) has been proposed. However, there is a lack of existing studies that investigate whether equivalent mutants do occur with these operators. To perform this investigation, we provide a tool that implements the aforementioned mutation operators and we conduct an empirical study using 20 C files of four industrial-scale systems. In particular, we provide examples of equivalent mutants and detailed information, such as which mutation operators generate these mutants and how often they occur. Our preliminary results show that nearly 40% of the generated mutants are equivalent. Hence, testing costs can be drastically reduced if the community comes up with efficient techniques to avoid these equivalent mutants.

[1]  Mustafa Al-Hajjaji,et al.  Optimizing product orders using graph algorithms for improving incremental product-line analysis , 2017, VaMoS.

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

[3]  André L. M. Santos,et al.  Avoiding useless mutants , 2017, GPCE.

[4]  Yves Le Traon,et al.  Sampling Program Inputs with Mutation Analysis: Going Beyond Combinatorial Interaction Testing , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[5]  Yves Le Traon,et al.  Trivial Compiler Equivalence: A Large Scale Empirical Study of a Simple, Fast and Effective Equivalent Mutant Detection Technique , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[6]  Sergio Segura,et al.  A Comparison of Test Case Prioritization Criteria for Software Product Lines , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[7]  Paolo Arcaini,et al.  Generating Tests for Detecting Faults in Feature Models , 2015, 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST).

[8]  Yves Le Traon,et al.  Mutation-Based Generation of Software Product Line Test Configurations , 2014, SSBSE.

[9]  Jacques Klein,et al.  Automated and Scalable T-wise Test Case Generation Strategies for Software Product Lines , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[10]  Sarfraz Khurshid,et al.  Operator-based and random mutant selection: Better together , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[11]  Gunter Saake,et al.  Effective product-line testing using similarity-based product prioritization , 2016, Software & Systems Modeling.

[12]  Mark Harman,et al.  Detecting Trivial Mutant Equivalences via Compiler Optimisations , 2018, IEEE Transactions on Software Engineering.

[13]  Andreas Zeller,et al.  Covering and Uncovering Equivalent Mutants , 2013, Softw. Test. Verification Reliab..

[14]  Pierre-Yves Schobbens,et al.  Featured Model-Based Mutation Analysis , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[15]  Udo Kelter,et al.  Fault-based product-line testing: effective sample generation based on feature-diagram mutation , 2015, SPLC.

[16]  Øystein Haugen,et al.  An algorithm for generating t-wise covering arrays from large feature models , 2012, SPLC '12.

[17]  Márcio Ribeiro,et al.  A change-centric approach to compile configurable systems with #ifdefs , 2016, GPCE.

[18]  Iago Abal,et al.  42 variability bugs in the linux kernel: a qualitative analysis , 2014, ASE.

[19]  Dana Angluin,et al.  Two notions of correctness and their relation to testing , 1982, Acta Informatica.

[20]  Jacob Krüger,et al.  Efficient mutation testing in configurable systems , 2017 .

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

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

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

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

[25]  Pierre-Yves Schobbens,et al.  A variability perspective of mutation analysis , 2014, FSE 2014.

[26]  Martin Schmidt,et al.  Towards the assessment of software product line tests: a mutation system for variable systems , 2014, SPLC '14.

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

[28]  Sebastian Krieter,et al.  IncLing: efficient product-line testing using incremental pairwise sampling , 2016, GPCE.

[29]  Jacques Klein,et al.  Bypassing the Combinatorial Explosion: Using Similarity to Generate and Prioritize T-Wise Test Configurations for Software Product Lines , 2014, IEEE Transactions on Software Engineering.

[30]  Richard Torkar,et al.  Overcoming the Equivalent Mutant Problem: A Systematic Literature Review and a Comparative Experiment of Second Order Mutation , 2014, IEEE Transactions on Software Engineering.

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

[32]  Thomas Leich,et al.  Mutation Operators for Preprocessor-Based Variability , 2016, VaMoS.