TY - GEN
T1 - An extensible, regular-expression-based tool for multi-language mutant generation
AU - Groce, Alex
AU - Holmes, Josie
AU - Marinov, Darko
AU - Shi, August
AU - Zhang, Lingming
N1 - Publisher Copyright:
© 2018 Authors.
PY - 2018/5/27
Y1 - 2018/5/27
N2 - Mutation testing is widely used in research (even if not in practice). Mutation testing tools usually target only one programming language and rely on parsing a program to generate mutants, or operate not at the source level but on compiled bytecode. Unfortunately, developing a robust mutation testing tool for a new language in this paradigm is a difficult and time-consuming undertaking. Moreover, bytecode/intermediate language mutants are difficult for programmers to read and understand. This paper presents a simple tool, called universalmutator, based on regular-expression-defined transformations of source code. The primary drawback of such an approach is that our tool can generate invalid mutants that do not compile, and sometimes fails to generate mutants that a parser-based tool would have produced. Additionally, it is incompatible with some approaches to improving the efficiency of mutation testing. However, the regexp-based approach provides multiple compensating advantages. First, our tool is easy to adapt to new languages; e.g., we present here the first mutation tool for Apple's Swift programming language. Second, the method makes handling multi-language programs and systems simple, because the same tool can support every language. Finally, our approach makes it easy for users to add custom, project-specific mutations.
AB - Mutation testing is widely used in research (even if not in practice). Mutation testing tools usually target only one programming language and rely on parsing a program to generate mutants, or operate not at the source level but on compiled bytecode. Unfortunately, developing a robust mutation testing tool for a new language in this paradigm is a difficult and time-consuming undertaking. Moreover, bytecode/intermediate language mutants are difficult for programmers to read and understand. This paper presents a simple tool, called universalmutator, based on regular-expression-defined transformations of source code. The primary drawback of such an approach is that our tool can generate invalid mutants that do not compile, and sometimes fails to generate mutants that a parser-based tool would have produced. Additionally, it is incompatible with some approaches to improving the efficiency of mutation testing. However, the regexp-based approach provides multiple compensating advantages. First, our tool is easy to adapt to new languages; e.g., we present here the first mutation tool for Apple's Swift programming language. Second, the method makes handling multi-language programs and systems simple, because the same tool can support every language. Finally, our approach makes it easy for users to add custom, project-specific mutations.
KW - Mutation testing
KW - Regular expressions
KW - multi-language tools
UR - http://www.scopus.com/inward/record.url?scp=85049686552&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85049686552&partnerID=8YFLogxK
U2 - 10.1145/3183440.3183485
DO - 10.1145/3183440.3183485
M3 - Conference contribution
AN - SCOPUS:85049686552
T3 - Proceedings - International Conference on Software Engineering
SP - 25
EP - 28
BT - Proceedings - International Conference on Software Engineering
PB - IEEE Computer Society
T2 - 40th ACM/IEEE International Conference on Software Engineering, ICSE 2018
Y2 - 27 May 2018 through 3 June 2018
ER -