Debugging the performance of Maven's test isolation: experience report
Pengyu Nie, Ahmet Çelik, Matthew Coley, Aleksandar Milicevic, Jonathan Bell, Milos Gligoric
Abstract
Testing is the most common approach used in industry for checking software correctness. Developers frequently practice reliable testing-executing individual tests in isolation from each other-to avoid test failures caused by test-order dependencies and shared state pollution (e.g., when tests mutate static fields). A common way of doing this is by running each test as a separate process. Unfortunately, this is known to introduce substantial overhead. This experience report describes our efforts to better understand the sources of this overhead and to create a system to confirm the minimal overhead possible. We found that different build systems use different mechanisms for communicating between these multiple processes, and that because of this design decision, running tests with some build systems could be faster than with others. Through this inquiry we discovered a significant performance bug in Apache Maven's test running code, which slowed down test execution by on average 350 milliseconds per-test when compared to a competing build system, Ant. When used for testing real projects, this can result in a significant reduction in testing time. We submitted a patch for this bug which has been integrated into the Apache Maven build system, and describe our ongoing efforts to improve Maven's test execution tooling.
• Software and its engineering → Software configuration management and version control systems.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 27577387-0d1d-486d-b278-87f043c8cd86Cited by top-tier papers6
- A large-scale longitudinal study of flaky testsWing Lam, Stefan Winter, Anjiang Wei, Tao Xie et al.OOPSLA 2020 · 63 citations
- Preempting Flaky Tests via Non-Idempotent-Outcome TestsAnjiang Wei, Pu Yi, Zhengxi Li, Tao Xie et al.ICSE 2022 · 20 citations
- Performance Testing for Cloud Computing with Dependent Data BootstrappingSen He, Tianyi Liu, Palden Lama, Jaewoo Lee et al.ASE 2021 · 12 citations
- Reducing Test Runtime by Transforming Test FixturesChengpeng Li, Abdelrahman Baz, August ShiASE 2024 · 1 citation
- Efficient Incremental Code Coverage Analysis for Regression Test SuitesJiale Amber Wang, Kaiyuan Wang, Pengyu NieASE 2024 · 1 citation
Related papers
- Efficient Detection of Test Interference in C ProjectsFlorian Eder, Stefan WinterASE 2024 · 2 citations
- An In-Depth Study of Runtime Verification Overheads during Software TestingKevin Guan, Owolabi LegunsenISSTA 2024 · 7 citations
- CP-Detector: Using Configuration-related Performance Properties to Expose Performance BugsHaochen He, Zhouyang Jia, Shanshan Li, Erci Xu et al.ASE 2020 · 14 citations
- Towards the use of the readily available tests from the release pipeline as performance tests: are we there yet?Zishuo Ding, Jinfu Chen, Weiyi ShangICSE 2020 · 33 citations
- Test-case prioritization for configuration testingRunxiang Cheng, Lingming Zhang, Darko Marinov, Tianyin XuISSTA 2021 · 34 citations
