Constraint-Based Automatic Test Data Generation
IEEE Transactions on Software Engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
The relationship between program dependence and mutation analysis
Mutation testing for the new century
Inter-Class Mutation Operators for Java
ISSRE '02 Proceedings of the 13th International Symposium on Software Reliability Engineering
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
The class-level mutants of MuJava
Proceedings of the 2006 international workshop on Automation of software test
Weak Mutation Testing and Completeness of Test Sets
IEEE Transactions on Software Engineering
Testing Programs with the Aid of a Compiler
IEEE Transactions on Software Engineering
Systematically refactoring inheritance to delegation in java
Proceedings of the 30th international conference on Software engineering
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Efficient mutation testing by checking invariant violations
Proceedings of the eighteenth international symposium on Software testing and analysis
Refactoring using type constraints
SAS'07 Proceedings of the 14th international conference on Static Analysis
Safira: a tool for evaluating behavior preservation
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Hi-index | 0.00 |
The efficacy of mutation analysis depends heavily on its capability to mutate programs in such a way that they remain executable and exhibit deviating behaviour. Whereas the former requires knowledge about the syntax and static semantics of the programming language, the latter requires some least understanding of its dynamic semantics, i.e., how expressions are evaluated. We present an approach that is knowledgeable enough to generate only mutants that are both syntactically and semantically correct and likely exhibit non-equivalent behaviour. Our approach builds on our own prior work on constraint-based refactoring tools, and works by negating behaviour-preserving constraints. As a proof of concept we present an enhanced implementation of the Access Modifier Change operator for Java programs whose naive implementations create huge numbers of mutants that do not compile or leave behaviour unaltered. While we cannot guarantee that our generated mutants are non-equivalent, we can demonstrate a considerable reduction in the number of vain mutant generations, leading to substantial temporal savings.