Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Mutation testing in the wild: findings from GitHub

Published: 01 November 2022 Publication History

Abstract

Mutation testing exploits artificial faults to measure the adequacy of test suites and guide their improvement. It has become an extremely popular testing technique as evidenced by the vast literature, numerous tools, and research events on the topic. Previous survey papers have successfully compiled the state of research, its evolution, problems, and challenges. However, the use of mutation testing in practice is still largely unexplored. In this paper, we report the results of a thorough study on the use of mutation testing in GitHub projects. Specifically, we first performed a search for mutation testing tools, 127 in total, and we automatically searched the GitHub repositories including evidence of their use. Then, we focused on the top ten most widely used tools, based on the previous results, and manually revised and classified over 3.5K GitHub active repositories importing them. Among other findings, we observed a recent upturn in interest and activity, with Infection (PHP), PIT (Java) and Humbug (PHP) being the most widely used mutation tools in recent years. The predominant use of mutation testing is development, followed by teaching and learning, and research projects, although with significant differences among mutation tools found in the literature—less adopted and largely used in teaching and research—and those found in GitHub only—more popular and more widely used in development. Our work provides a new and encouraging perspective on the state of practice of mutation testing.

References

[1]
Acree AT, Budd TA, DeMillo RA, Lipton RJ, Sayward FG (1979) Mutation analysis. techreport GIT-ICS-79/08, Georgia Institute of Technology, Atlanta, Georgia
[2]
Aggarwal CC, Zhai C (2012) Mining text data. Springer Science & Business Media
[3]
Ahmed S, Taj-Eddin IATF, Ismail MA (2020) MuHyb: A proposed mutation testing tool for hybrid mobile applications. In: Proceedings of the 2020 9th International Conference on Software and Information Engineering (ICSIE). ICSIE 2020. Association for Computing Machinery, New York, NY, USA, pp 67–72
[4]
Apache Maven Project. https://maven.apache.org/. accessed in October 2021
[5]
Arcuri A An experience report on applying software testing academic results in industry: we need usable automated test generation Empir Softw Eng 2018 23 4 1959-1981
[7]
Bashir MB, Nadeem A (2018) An experimental tool for search-based mutation testing. In: 2018 international conference on frontiers of information technology (FIT)., pp 30–34
[8]
Bashir M B, Nadeem A (2019) An evolutionary mutation testing system for Java programs: eMuJava. In: Intelligent computing-proceedings of the computing conference. Springer, pp 847–865
[9]
Beller M, Wong C, Bader J, Scott A, Machalica M, Chandra S, Meijer E (2021) What it would take to use mutation testing in industry – a study at Facebook. In: 2021 IEEE/ACM 43rd international conference on software engineering: software engineering in practice (ICSE-SEIP). IEEE Computer Society, Los Alamitos, CA, USA, pp 268–277
[10]
Bitbucket. https://bitbucket.org/. accessed in October 2021
[11]
Borges H, Hora A, Valente MT (2016) Understanding the factors that impact the popularity of GitHub repositories. In: 2016 IEEE international conference on software maintenance and evolution (ICSME)., pp 334–344
[12]
Brito G, Valente MT (2020) REST vs GraphQL: A controlled experiment. In: 2020 IEEE international conference on software architecture, ICSA 2020, Salvador, Brazil, March 16-20, 2020. IEEE, pp 81–91
[13]
Cañizares PC, Núñez A, and Merayo MGMutomvo: Mutation testing framework for simulated cloud and HPC environmentsJ Syst Softw2018143187-207https://doi.org/10.1016/j.jss.2018.05.010
[14]
Chapman P, Xu D, Deng L, Xiong Y (2019) Deviant: A mutation testing tool for Solidity Smart Contracts. In: 2019 IEEE International Conference on Blockchain (Blockchain)., pp 319–324
[15]
Chekam T T, Papadakis M, Le Traon Y (2019) Mart: A mutant generation tool for LLVM. In: Proceedings of the 2019 27th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering. ESEC/FSE 2019. Association for Computing Machinery, New York, NY, USA, pp 1080–1084
[16]
Chekam TT, Papadakis M, Traon YL (2020) Muteria: An extensible and flexible multi-criteria software testing framework. In: Proceedings of the IEEE/ACM 1st international conference on automation of software test. AST ’20. Association for Computing Machinery, New York, NY, USA, pp 97–100
[17]
Coles H, Laurent T, Henard C, Papadakis M, Ventresque A (2016) PIT: A practical mutation testing tool for Java (demo). In: Proceedings of the 25th international symposium on software testing and analysis. ISSTA 2016. Association for Computing Machinery, New York, NY, USA, pp 449–452
[18]
Cosentino V, Izquierdo JLC, Cabot J (2016) Findings from GitHub: Methods, datasets and limitations. In: 2016 IEEE/ACM 13th working conference on mining software repositories (MSR), pp 137–141
[20]
Delahaye M and du Bousquet L Selecting a software engineering tool: lessons learnt from mutation analysis Software: Practice and Experience 2015 45 7 875-891
[21]
Delamaro ME, Maldonado JC, Vincenzi A MR (2001) Proteum/im 2.0: An integrated mutation testing environment. In: Wong WE (ed) Mutation Testing for the New Century. Springer US, Boston, MA, pp 91–101
[22]
Delgado-Pérez P, Habli I, Gregory S, Alexander R, Clark J, and Medina-Bulo I Evaluation of mutation testing in a nuclear industry case study IEEE Trans Reliab 2018 67 4 1406-1419
[23]
DeMillo RA, Lipton RJ, and Sayward FG Hints on test data selection: Help for the practicing programmer Computer 1978 11 4 34-41
[24]
DeMillo R A, Lipton R J, Sayward F G (1979) Program mutation: A new approach to program testing. In: Infotech State of the Art Report, Software Testing, pp 107–126
[25]
Denisov A, Pankevich S (2018) Mull it over: Mutation testing based on LLVM. In: 2018 IEEE international conference on software testing, verification and validation workshops (ICSTW)., pp 25–31
[26]
Derezińska A, Hałas K (2014) Analysis of mutation operators for the Python language. In: Proceedings of the Ninth international conference on dependability and complex systems DepCoS-RELCOMEX. June 30–July 4, 2014, Brunów, Poland. Springer, pp 155–164
[27]
Efremidis A, Schmidt J, Krings S, Körner P (2018) Measuring coverage of Prolog programs using mutation testing. In: International workshop on functional and constraint logic programming. Springer, pp 39–55
[28]
Escobar-Velásquez C, Riveros D, Linares-Vásquez M (2020) MutAPK 2.0: A tool for reducing mutation testing effort of Android apps. In: Proceedings of the 28th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering. ESEC/FSE 2020. Association for Computing Machinery, New York, NY, USA, pp 1611–1615
[29]
Escobar-Velásquez C, Osorio-Riaño M, Linares-Vásquez M (2019) MutAPK: Source-codeless mutant generation for Android apps. In: 2019 34th IEEE/ACM international conference on automated software engineering (ASE)., pp 1090–1093
[30]
GitHub GraphQL API. https://docs.github.com/en/graphql. accessed in October 2021
[31]
Gómez-Abajo P, Guerra E, de Lara J, and Merayo MG A tool for domain-independent model mutation Sci Comput Program 2018 163 85-92
[33]
Gómez-Abajo P, Guerra E, de Lara J, Merayo M G (2018) Towards a model-driven engineering solution for language independent mutation testing. In: JISBD2018. http://hdl.handle.net/11705/JISBD/2018/052. SISTEDES
[34]
Gonzalez D, Zimmermann T, Nagappan N (2020) The state of the ML-Universe: 10 years of artificial intelligence & machine learning software development on GitHub. In: Proceedings of the 17th international conference on mining software repositories. MSR ’20. Association for Computing Machinery, New York, NY, USA, pp 431–442
[35]
Gousios G, Spinellis D (2017) Mining software engineering data from GitHub. In: 2017 IEEE/ACM 39th international conference on software engineering companion (ICSE-C)., pp 501–502
[36]
Gousios G (2013) The GHTorent dataset and tool suite. In: Proceedings of the 10th working conference on mining software repositories. MSR ’13. IEEE Press, pp 233–236
[37]
Gradle Build Tool. https://gradle.org/. accessed in October 2021
[38]
Groce A, Holmes J, Marinov D, Shi A, Zhang L (2018) An extensible, regular-expression-based tool for multi-language mutant generation. In: Proceedings of the 40th international conference on software engineering: companion proceeedings. ICSE ’18. Association for Computing Machinery, New York, NY, USA, pp 25–28, DOI, (to appear in print)
[39]
Gutiárrez-Madroñal L, Medina-Bulo I, and Domínguez-Jiménez JJ Evaluation of EPL mutation operators with the MuEPL mutation system Expert Syst Appl 2019 116 78-95
[40]
Hariri F, Shi A, Fernando V, Mahmood S, Marinov D (2019) Comparing mutation testing at the levels of source code and compiler intermediate representation. In: 2019 12th IEEE conference on software testing, validation and verification (ICST)., pp 114–124
[41]
Hu Q, Ma L, Xie X, Yu B, Liu Y, Zhao J (2019) Deepmutation++: A mutation testing framework for deep learning systems. In: Proceedings of the 34th IEEE/ACM international conference on automated software engineering. ASE ’19. IEEE Press, pp 1158–1161
[44]
Irvine S A, Pavlinic T, Trigg L, Cleary J G, Inglis S, Utting M (2007) Jumble Java byte code to measure the effectiveness of unit tests. In: Testing: Academic and industrial conference practice and research techniques - MUTATION (TAICPART-MUTATION 2007)., pp 169–175
[45]
Ivanova Y and Khritankov A RegularMutator: A mutation testing tool for Solidity Smart Contracts Procedia Computer Science 2020 178 75-83 9th International Young Scientists Conference in Computational Science, YSC2020, 05-12 September 2020
[47]
Jia Y and Harman M An analysis and survey of the development of mutation testing IEEE Trans Softw Eng 2011 37 5 649-678
[48]
Jovanovikj I, Weidmann N, Yigitbas E, Anjorin A, Sauer S, Engels G (2020) A model-driven mutation framework for validation of test case migration. In: Babur O, Denil J, Vogel-Heuser B (eds) Proceedings of the First international conference on systems modelling and management, ICSMM 2020 .. Springer
[49]
Just R, Krinke J, Li N, and Rojas JM Special issue on mutation testing and analysis Software Testing, Verification and Reliability 2019 29 1-2 e1697
[50]
Just R (2014) The Major mutation framework: Efficient and scalable mutation analysis for Java. In: Proceedings of the 2014 international symposium on software testing and analysis. ISSTA 2014. Association for Computing Machinery, New York, NY, USA, pp 433–436
[51]
Just R, Jalali D, Inozemtseva L, Ernst M D, Holmes R, Fraser G (2014) Are mutants a valid substitute for real faults in software testing?. FSE 2014. Association for Computing Machinery, New York, NY, USA, pp 654–665
[52]
Kalliamvakou E, Gousios G, Blincoe K, Singer L, German D M, Damian D (2014) The promises and perils of mining GitHub. In: Proceedings of the 11th working conference on mining software repositories. MSR 2014. Association for Computing Machinery, New York, NY, USA, pp 92–101
[53]
Kintis M, Papadakis M, Papadopoulos A, Valvis E, Malevris N, and Le Traon Y How effective are mutation testing tools? An empirical analysis of java mutation testing tools with manual analysis and real faults Empir Softw Eng 2018 23 4 2426-2463
[54]
Li Z, Wu H, Xu J, Wang X, Zhang L, Chen Z (2019) Musc: A tool for mutation testing of Ethereum smart contract. In: 2019 34th IEEE/ACM international conference on automated software engineering (ASE)., pp 1198–1201
[55]
Liu M, Hong W, Pan W, Feng C, Chen Z, Wang J (2020) Styx: A data-oriented mutation framework to improve the robustness of DNN. In: Proceedings of the 35th IEEE/ACM international conference on automated software engineering. ASE ’20. Association for Computing Machinery, New York, NY, USA, pp 1260–1261
[56]
Luna E, Ariss O E (2018) Edroid: A mutation tool for Android apps. In: 2018 6th international conference in software engineering research and innovation (CONISOFT)., pp 99–108
[57]
Ma L, Zhang F, Sun J, Xue M, Li B, Juefei-Xu F, Xie C, Li L, Liu Y, Zhao J, Wang Y (2018) Deepmutation: Mutation testing of deep learning systems. In: 2018 IEEE 29th international symposium on software reliability engineering (ISSRE)., pp 100–111
[58]
Ma Y-S, Offutt J, and Kwon YRMuJava: an automated class mutation systemSoftware Testing, Verification and Reliability200515297-133https://doi.org/10.1002/stvr.308
[59]
Márki A, Lindström B (2017) Mutation tools for Java. In: Proceedings of the symposium on applied computing. SAC ’17. Association for Computing Machinery, New York, NY, USA, pp 1364–1415
[60]
Mombach1 T, Valente M T (2018) GitHub REST API vs GHTorrent vs GitHub Archive: A comparative study. https://homepages.dcc.ufmg.br/mtov/pub/2018-vem-thais.pdf
[61]
Momigliano A, Ornaghi M (2019) The blame game for property-based testing. In: CILC, pp 4–13
[62]
HtmlUnit. https://htmlunit.sourceforge.io. accessed in October 2021
[63]
MuJava download. https://cs.gmu.edu/~offutt/mujava/#Links. accessed in October 2021
[64]
MuJava. https://github.com/jeffoffutt/muJava. accessed in October 2021
[65]
Mull releases, https://github.com/mull-project/mull/releases. accessed in October 2021
[66]
Mutant. https://github.com/mbj/mutant. accessed in October 2021
[68]
Mutmut. https://github.com/boxed/mutmut. accessed in October 2021
[69]
MutPy. https://github.com/mutpy/mutpy. accessed in October 2021
[70]
Ngambenchawong C, Suwannasart T (2019) A weak mutation testing framework for BPMN. In: Proceedings of the international multiconference of engineers and computer scientists, IMECS 2019, pp 13–15
[71]
Offutt AJ and Untch RH Mutation 2000: Uniting the orthogonal 2001 USA Kluwer Academic Publishers 34-44
[72]
Papadakis M and Just R Special issue on mutation testing Inf Softw Technol 2017 81 C 1-2
[73]
Papadakis M, Kintis M, Zhang J, Jia Y, Traon Y L, Harman M (2019) Chapter six - mutation testing advances: An analysis and survey. Elsevier, pp 275–378.
[74]
Petrović G, Ivanković M, Fraser G, Just R (2021) Does mutation testing improve testing practices?. In: 2021 IEEE/ACM 43rd international conference on software engineering (ICSE). IEEE Computer Society, Los Alamitos, CA, USA, pp 910–921
[75]
Petrovic G, Ivankovic M, Fraser G, Just R (2021) Practical mutation testing at scale: A view from Google. IEEE Trans Softw Eng, pp 1–1.
[76]
Phan DL, Kim Y, Kim M (2018) Music: Mutation analysis tool with high configurability and extensibility. In: 2018 IEEE international conference on software testing, verification and validation workshops (ICSTW)., pp 40–46
[77]
Pinheiro P, Viana JC, Ribeiro M, Fernandes L, Ferrari F, Gheyi R, and Fonseca B Mutating code annotations: An empirical evaluation on Java and C# programs Sci Comput Program 2020 191 102418
[78]
PIT: installation with Maven and Gradle. https://pitest.org/quickstart/maven/, https://gradle-pitest-plugin.solidsoft.info/. accessed in October 2021
[79]
PIT. https://github.com/hcoles/pitest. accessed in October 2021
[80]
Pizzoleto AV, Ferrari FC, Offutt J, Fernandes L, and Ribeiro M A systematic literature review of techniques and metrics to reduce the cost of mutation testing J Syst Softw 2019 157 110388
[81]
Pujari A K (2001) Data mining techniques. Universities press
[82]
Rodrigues E, Montecchi L, Ceccarelli A (2020) Model-driven fault injection in Java source code. In: 2020 IEEE 31st international symposium on software reliability engineering (ISSRE)., pp 414–425
[83]
Rodríguez-Baquero D, Linares-Vásquez M (2018) Mutode: Generic JavaScript and Node.Js mutation testing tool. In: Proceedings of the 27th ACM SIGSOFT international symposium on software testing and analysis. ISSTA 2018. Association for Computing Machinery, New York, NY, USA, pp 372–375
[84]
Sadath L, Nair R (2019) Oncological inspired techniques for intelligent software testing. In: 2019 amity international conference on artificial intelligence (AICAI)., pp 327–333
[85]
Siavashi F, Truscan D, Vain J (2018) Vulnerability assessment of web services with model-based mutation testing. In: 2018 IEEE international conference on software quality, reliability and security (QRS)., pp 301–312
[88]
Suguna Mallika S and Rajya Lakshmi D MUTWEB-A testing tool for performing mutation testing of Java and servlet based web applications International Journal of Innovative Technology and Exploring Engineering 2019 8 12 5406-5413
[89]
“Supplementary material of the paper”? [Online]. Available at
[90]
The 17th International Workshop on Mutation Analysis - MUTATION 2022. https://icst2022.vrain.upv.es/home/mutation-2022/
[91]
Usaola MP and Mateo PR Mutation testing cost reduction techniques: A survey IEEE Softw 2010 27 3 80-86
[92]
Uzunbayir S, Kurtel K (2019) An analysis on mutation testing tools for C# programming language. In: 2019 4th international conference on computer science and engineering (UBMK)., pp 439–443
[93]
Van Phol L, Binh N T (2020) Optimizing mutant generation for Lustre programs with multi-threading. In: 2020 5th international conference on innovative technologies in intelligent systems and industrial applications (CITISIA)., pp 1–5
[94]
Wang K, Sullivan A, Khurshid S (2018) MuAlloy: A mutation testing framework for Alloy. In: Proceedings of the 40th international conference on software engineering: companion proceeedings. ICSE ’18. Association for Computing Machinery, New York, NY, USA, pp 29–32
[95]
Witten IH, Frank E, Hall MA, and Pal CJData mining (fourth edition)20174th EdnBurlingtonMorgan Kaufmannhttps://doi.org/10.1016/B978-0-12-804291-5.00014-3
[96]
WODEL: Get started. https://github.com/gomezabajo/Wodel/wiki/Get-Started. accessed in October 2021
[97]
Xiong Y, Meng Z, Shen B, Yin W (2017) Mining developer behavior across GitHub and StackOverflow. In: The 29th international conference on software engineering and knowledge engineering., pp 578–583

Cited By

View all
  • (2024)Data Quality Assessment in the Wild: Findings from GitHubProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661213(120-129)Online publication date: 18-Jun-2024
  • (2024)False Positives and Deceptive Errors in SQL Assessment: A Large-Scale Analysis of Online Judge SystemsACM Transactions on Computing Education10.1145/365467724:3(1-23)Online publication date: 28-Mar-2024
  • (2024)Do we need high-order mutation in fault-based Boolean-specification testing?Journal of Systems and Software10.1016/j.jss.2023.111933210:COnline publication date: 1-Apr-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Empirical Software Engineering
Empirical Software Engineering  Volume 27, Issue 6
Nov 2022
1651 pages

Publisher

Kluwer Academic Publishers

United States

Publication History

Published: 01 November 2022
Accepted: 16 May 2022

Author Tags

  1. Mutation testing
  2. Mutation tools
  3. Data mining
  4. GitHub

Qualifiers

  • Research-article

Funding Sources

  • European Commission (ERDF)
  • Junta de Andalucía (APOLO Project)
  • Junta de Andalucía (EKIPMENT-PLUS)
  • Spanish Government (HORATIO project)
  • Spanish Government (FAME project)
  • Universidad de Sevilla

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Data Quality Assessment in the Wild: Findings from GitHubProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661213(120-129)Online publication date: 18-Jun-2024
  • (2024)False Positives and Deceptive Errors in SQL Assessment: A Large-Scale Analysis of Online Judge SystemsACM Transactions on Computing Education10.1145/365467724:3(1-23)Online publication date: 28-Mar-2024
  • (2024)Do we need high-order mutation in fault-based Boolean-specification testing?Journal of Systems and Software10.1016/j.jss.2023.111933210:COnline publication date: 1-Apr-2024
  • (2024)ReSuMo: a regression strategy and tool for mutation testing of solidity smart contractsSoftware Quality Journal10.1007/s11219-023-09637-132:1(225-253)Online publication date: 1-Mar-2024
  • (2023)An experiment on software test creation: can EvoSuite help test teaching?Proceedings of the XXII Brazilian Symposium on Software Quality10.1145/3629479.3629499(281-290)Online publication date: 7-Nov-2023
  • (2023)Who Judges the Judge: An Empirical Study on Online Judge TestsProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598060(334-346)Online publication date: 12-Jul-2023
  • (2023)Snapshot testing in practiceJournal of Systems and Software10.1016/j.jss.2023.111797204:COnline publication date: 1-Oct-2023

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media