MMT: Mutation Testing of Java Bytecode with Model Transformation -- An Illustrative Demonstration (2404.14097v1)
Abstract: Mutation testing is an approach to check the robustness of test suites. The program code is slightly changed by mutations to inject errors. A test suite is robust enough if it finds such errors. Tools for mutation testing usually integrate sets of mutation operators such as, for example, swapping arithmetic operators; modern tools typically work with compiled code such as Java bytecode. In this case, the mutations must be defined in such a way that the mutated program still can be loaded and executed. The results of mutation tests depend directly on the possible mutations. More advanced mutations and even domain-specific mutations can pose another challenge to the test suite. Since extending the classical approaches to more complex mutations is not well supported and is difficult, we propose a model-driven approach where mutations of Java bytecode can be flexibly defined by model transformation. The corresponding tool called MMT has been extended with advanced mutation operators for modifying object-oriented structures, Java-specific properties and method calls of APIs, making it the only mutation testing tool for Java bytecode that supports such mutations.
- A. J. Offutt and R. H. Untch, “Mutation 2000: Uniting the orthogonal,” Mutation testing for the new century, pp. 34–44, 2001.
- N. Nystrom, M. R. Clarkson, and A. C. Myers, “Polyglot: An extensible compiler framework for java,” in Compiler Construction. Springer, 2003, pp. 138–152. [Online]. Available: https://doi.org/10.1007/3-540-36579-6_11
- E. Bruneton, R. Lenglet, and T. Coupaye, “ASM: a code manipulation tool to implement adaptable systems,” Adaptable and extensible component systems, vol. 30, p. 19, 2002. [Online]. Available: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.117.5769
- “The BCEL homepage,” https://commons.apache.org/proper/commons-bcel/, May 2022, accessed: October 10, 2022.
- R. Just, “The major mutation framework: Efficient and scalable mutation analysis for java,” in Proc. of the 2014 Int. Symp. on Software Testing and Analysis, 2014, pp. 433–436.
- D. Schuler and A. Zeller, “Javalanche: Efficient mutation testing for java,” in Proc. of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering, 2009, pp. 297–298.
- H. Coles, T. Laurent, C. Henard, M. Papadakis, and A. Ventresque, “Pit: a practical mutation testing tool for java,” in Proc. of the 25th Int. Symp. on Software Testing and Analysis, 2016, pp. 449–452.
- C. Bockisch, G. Taentzer, N. Nassar, and L. Wydra, “Java bytecode verification with OCL: Why, how and when,” J. Object Technol., vol. 19, no. 3, pp. 3:1–16, 2020. [Online]. Available: https://doi.org/10.5381/jot.2020.19.3.a13
- B. M. Yildiz, C. Bockisch, A. Rensink, and M. Aksit, “An MDE approach for modular program analyses,” in Companion to the 1st Int. Conf. on the Art, Science and Engineering of Programming, J. B. Sartor, T. D’Hondt, and W. D. Meuter, Eds. ACM, 2017, pp. 15:1–15:5. [Online]. Available: https://doi.org/10.1145/3079368.3079392
- T. Arendt, E. Biermann, S. Jurack, C. Krause, and G. Taentzer, “Henshin: Advanced Concepts and Tools for In-Place EMF Model Transformations,” in Proc. MODELS. Springer, 2010, pp. 121–135. [Online]. Available: https://www.eclipse.org/henshin
- “Eclipse Modeling Framework website,” https://www.eclipse.org/modeling/emf/, Apr. 2016.
- “Object Constraint Language, Version 2.4, Object Management Group,” http://www.omg.org/spec/OCL/2.4, Object Management Group, 2014.
- J. Offutt, Y.-S. Ma, and Y.-R. Kwon, “The class-level mutants of mujava,” in Proceedings of the 2006 International Workshop on Automation of Software Test, ser. AST ’06. ACM, 2006, p. 78–84. [Online]. Available: https://doi.org/10.1145/1138929.1138945
- E. Biermann, C. Ermel, and G. Taentzer, “Formal foundation of consistent EMF model transformations by algebraic graph transformation,” Softw. Syst. Model., vol. 11, no. 2, pp. 227–250, 2012. [Online]. Available: https://doi.org/10.1007/s10270-011-0199-7
- N. Nassar, J. Kosiol, T. Arendt, and G. Taentzer, “OCL2AC: automatic translation of OCL constraints to graph constraints and application conditions for transformation rules,” in Graph Transformation - 11th International Conference, ICGT 2018, Proceedings, ser. LNCS, vol. 10887. Springer, 2018, pp. 171–177. [Online]. Available: https://doi.org/10.1007/978-3-319-92991-0_11
- S. A. Irvine, T. Pavlinic, L. Trigg, J. G. Cleary, S. Inglis, and M. Utting, “Jumble: Java byte code to measure the effectiveness of unit tests,” in Testing: Academic and Industrial Conference Practice and Research Techniques. IEEE, 2007, pp. 169–175.
- A. Parsai, A. Murgia, and S. Demeyer, “LittleDarwin: a feature-rich and extensible mutation testing framework for large and complex Java systems,” in Int. Conf. on Fundamentals of Software Engineering. Springer, 2017, pp. 148–163.
- J.-M. Mottu, B. Baudry, and Y. L. Traon, “Mutation analysis testing for model transformations,” in Europ. Conf. on Model Driven Architecture-Foundations and Applications. Springer, 2006, pp. 376–390.
- P. Gómez-Abajo, E. Guerra, J. de Lara, and M. G. Merayo, “Wodel-test: a model-based framework for language-independent mutation testing,” Softw. Syst. Model., vol. 20, no. 3, pp. 767–793, 2021. [Online]. Available: https://doi.org/10.1007/s10270-020-00827-0
- Christoph Bockisch (3 papers)
- Gabriele Taentzer (10 papers)
- Daniel Neufeld (1 paper)