Semantic mutation testing

Mutation testing is a powerful and flexible test technique. Traditional mutation testing makes a small change to the syntax of a description (usually a program) in order to create a mutant. A test set is considered to be good if it distinguishes between the original description and all of the (functionally nonequivalent) mutants. These mutants can be seen as representing potential small slips and thus mutation testing aims to produce a test set that is good at finding such slips. It has also been argued that a test set that finds such small changes is likely to find larger changes. This paper introduces a new approach to mutation testing, called semantic mutation testing. Rather than mutate the description, semantic mutation testing mutates the semantics of the language in which the description is written. The mutations of the semantics of the language represent possible misunderstandings of the description language and thus capture a different class of faults. Since the likely misunderstandings are highly context dependent, this context should be used to determine which semantic mutants should be produced. The approach is illustrated through examples with state charts and C code. In addition, a semantic mutation testing tool for C is proposed.

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

[2]  David Harel,et al.  Modeling Reactive Systems With Statecharts : The Statemate Approach , 1998 .

[3]  W. Eric Wong,et al.  Mutation Testing Applied to Validate SDL Specifications , 2004, TestCom.

[4]  Rajeev Alur,et al.  Model Checking of Message Sequence Charts , 1999, CONCUR.

[5]  Phil McMinn,et al.  Search-based failure discovery using testability transformations to generate pseudo-oracles , 2009, GECCO.

[6]  Mark Harman,et al.  The relationship between program dependence and mutation analysis , 2001 .

[7]  J.H. Andrews,et al.  Finding Sufficient Mutation Operators via Variable Reduction , 2006, Second Workshop on Mutation Analysis (Mutation 2006 - ISSRE Workshops 2006).

[8]  Ada 95 Rationale , 1995, Lecture Notes in Computer Science.

[9]  Michael von der Beeck,et al.  A Comparison of Statecharts Variants , 1994, FTRTFT.

[10]  A. Jefferson Offutt,et al.  Automatically detecting equivalent mutants and infeasible paths , 1997 .

[11]  Leonardo Bottaci,et al.  Efficiency of mutation operators and selective mutation strategies: an empirical study , 1999, Softw. Test. Verification Reliab..

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

[13]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[14]  A. Jefferson Offutt,et al.  An Experimental Evaluation of Data Flow and Mutation Testing , 1996 .

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

[16]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[17]  Weichen Eric Wong On mutation and data flow , 1993 .

[18]  Jonathan P. Bowen,et al.  Ordering Mutants to Minimise Test Effort in Mutation Testing , 2004, FATES.

[19]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

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

[21]  Phyllis G. Frankl,et al.  Further empirical studies of test effectiveness , 1998, SIGSOFT '98/FSE-6.

[22]  W. Eric Wong,et al.  An empirical comparison of data flow and mutation‐based test adequacy criteria , 1994, Softw. Test. Verification Reliab..

[23]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[24]  John A. Clark,et al.  Search-based mutation testing for Simulink models , 2005, GECCO '05.

[25]  Nancy G. Leveson,et al.  Analysis of Faults in an N-Version Software Experiment , 1990, IEEE Trans. Software Eng..

[26]  Les Hatton,et al.  Safer C - developing software for high-integrity and safety-critical systems , 1995, McGrawHill international series in software engineering.

[27]  A. Jefferson Offutt,et al.  A semantic model of program faults , 1996, ISSTA '96.

[28]  K. S. How Tai Wah A Theoretical Study of Fault Coupling , 2000, Softw. Test. Verification Reliab..

[29]  A. Jefferson Offutt,et al.  Detecting equivalent mutants and the feasible path problem , 1996, Proceedings of 11th Annual Conference on Computer Assurance. COMPASS '96.

[30]  A. Jefferson Offutt,et al.  Investigations of the software testing coupling effect , 1992, TSEM.

[31]  Mark Harman,et al.  Using program slicing to assist in the detection of equivalent mutants , 1999, Softw. Test. Verification Reliab..

[32]  Leonardo Bottaci,et al.  Efficiency of mutation operators and selective mutation strategies: an empirical study , 1999 .

[33]  John Barnes,et al.  Ada 2005 Rationale: The Language, The Standard Libraries , 1997, Lecture Notes in Computer Science.

[34]  Gregg Rothermel,et al.  An experimental determination of sufficient mutant operators , 1996, TSEM.

[35]  Jeffrey Voas,et al.  Software Fault Injection , 1998 .

[36]  Amnon Naamad,et al.  The STATEMATE semantics of statecharts , 1996, TSEM.

[37]  Paulo César Masiero,et al.  Mutation testing applied to validate specifications based on statecharts , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[38]  M. R. Woodward,et al.  Errors in algebraic specifications and an experimental mutation testing tool , 1993, Softw. Eng. J..

[39]  Gary J. Nutt A Case Study of Simulation as a Computer System Design Tool , 1978, Computer.

[40]  Susan Stepney,et al.  Challenging formal specifications by mutation: a CSP security example , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

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

[42]  Deepinder P. Sidhu,et al.  Formal Methods for Protocol Testing: A Detailed Study , 1989, IEEE Trans. Software Eng..

[43]  M. R. Woodward,et al.  From weak to strong, dead or alive? an analysis of some mutation testing issues , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[44]  John A. Clark,et al.  Assessing Test Set Adequacy for Object-Oriented Programs Using Class Mutation , 2000 .

[45]  John A. Clark,et al.  Semantic Mutation Testing , 2010, 2010 Third International Conference on Software Testing, Verification, and Validation Workshops.

[46]  K. N. King,et al.  A fortran language system for mutation‐based software testing , 1991, Softw. Pract. Exp..

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

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

[49]  Y. L. Traon,et al.  From genetic to bacteriological algorithms for mutation‐based testing , 2005, Softw. Test. Verification Reliab..

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

[51]  Akbar Siami Namin,et al.  The influence of size and coverage on test suite effectiveness , 2009, ISSTA.

[52]  Yong Rae Kwon,et al.  Evaluation of mutation testing for object-oriented programs , 2006, ICSE.

[53]  Wynne Hsu,et al.  DESIGN OF MUTANT OPERATORS FOR THE C PROGRAMMING LANGUAGE , 2006 .

[54]  Jean-Marc Jézéquel,et al.  From genetic to bacteriological algorithms for mutation-based testing: Research Articles , 2005 .

[55]  Rik Eshuis,et al.  Requirements Level Semantics for UML Statecharts , 2000, FMOODS.

[56]  P. Black,et al.  Mutation of model checker specifications for test generation and evaluation , 2001 .

[57]  Phyllis G. Frankl,et al.  All-uses vs mutation testing: An experimental comparison of effectiveness , 1997, J. Syst. Softw..

[58]  James R. Cordy,et al.  TXL - A Language for Programming Language Tools and Applications , 2004, LDTA@ETAPS.