Reducing Test Runtime by Transforming Test Fixtures
Chengpeng Li, Abdelrahman Baz, August Shi
Abstract
Software testing is a fundamental part of software development, but the cost of running tests can be high. Existing approaches to speed up testing such as test-suite reduction or regression test selection aim to run only a subset of tests from the full test suite, but these approaches run the risk of missing to run some key tests that are needed to detect faults in the code. We propose a new technique to transform test code to speed up test runtime while still running all the tests. The insight is that testing frameworks such as JUnit for Java projects allow for developers to define test fixtures, i.e., methods that run before or after every test to setup or teardown test state, but these test fixtures need not be called all the time before/after each test. It may be sufficient to do the setup and teardown once at the beginning and end, respectively, of all tests. Our technique, TestBoost, transforms the test fixtures within a test class to instead run once before/after all tests in the test class, thereby running the test fixtures less frequently while still running all tests and ensuring that tests all still pass, as they did before. Our evaluation on 697 test classes from 34 projects shows that on average we can reduce the runtime per test class by 28.39% for the cases with positive significant improvement. Using these transformed test classes can result in an average 18.24% reduction per test suite runtime. We find that the coverage of the transformed test classes changes by <1%, and when we submitted 15 pull requests, 9 have already been merged. CCS CONCEPTS • Software and its engineering → Software testing and debugging.
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 0f17ee39-af98-4912-9a25-2bb8cc19b3ebCited by top-tier papers1
Ask how each one uses itBuilds on8
- A large-scale longitudinal study of flaky testsWing Lam, Stefan Winter, Anjiang Wei, Tao Xie et al.OOPSLA 2020 · 63 citations
- Empirically revisiting and enhancing IR-based test-case prioritizationQianyang Peng, August Shi, Lingming ZhangISSTA 2020 · 49 citations
- Empirically evaluating readily available information for regression test optimization in continuous integrationDaniel Elsner, Florian Hauer, Alexander Pretschner, Silke ReimerISSTA 2021 · 45 citations
- Repairing Order-Dependent Flaky Tests via Test GenerationChengpeng Li, Chenguang Zhu, Wenxi Wang, August ShiICSE 2022 · 22 citations
- More Precise Regression Test Selection via Reasoning about Semantics-Modifying ChangesYu Liu, Jiyang Zhang, Pengyu Nie, Milos Gligoric et al.ISSTA 2023 · 19 citations
Related papers
- Efficient Incremental Code Coverage Analysis for Regression Test SuitesJiale Amber Wang, Kaiyuan Wang, Pengyu NieASE 2024 · 1 citation
- Profiling-Guided Bayesian Optimization of JVM ConfigurationsAbdelrahman Baz, Wing Lam, August ShiISSTA 2026
- Dependent-test-aware regression testing techniquesWing Lam, August Shi, Reed Oei, Sai Zhang et al.ISSTA 2020 · 44 citations
- ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolutionary SearchRongqi Pan, Taher Ahmed Ghaleb, Lionel C. BriandICSE 2023 · 22 citations
- Generalizing Test Cases for Comprehensive Test Scenario CoverageBinhang Qi, Yun Lin, Xinyi Weng, Chenyan Liu et al.FSE 2026 · 1 citation
