Debugging the performance of Maven’s test isolation: experience report

作者: Pengyu Nie , Ahmet Celik , Matthew Coley , Aleksandar Milicevic , Jonathan Bell

DOI: 10.1145/3395363.3397381

关键词:

摘要: Testing is the most common approach used in industry for checking software correctness. Developers frequently practice reliable testing-executing individual tests isolation from each other-to avoid test failures caused by test-order dependencies and shared state pollution (e.g., when mutate static fields). A way of doing this running as a separate process. Unfortunately, known to introduce substantial overhead. This experience report describes our efforts better understand sources overhead create system confirm minimal possible. We found that different build systems use mechanisms communicating between these multiple processes, because design decision, with some could be faster than others. Through inquiry we discovered significant performance bug Apache Maven’s code, which slowed down execution on average 350 milliseconds per-test compared competing system, Ant. When testing real projects, can result reduction time. submitted patch has been integrated into Maven describe ongoing improve tooling.

参考文章(27)
Walid Taha, A Gentle Introduction to Multi-stage Programming Lecture Notes in Computer Science. pp. 30- 50 ,(2004) , 10.1007/978-3-540-25935-0_3
Alex Gyori, August Shi, Farah Hariri, Darko Marinov, Reliable testing: detecting state-polluting tests to prevent test dependency international symposium on software testing and analysis. pp. 223- 233 ,(2015) , 10.1145/2771783.2771793
Milos Gligoric, Lamyaa Eloussi, Darko Marinov, Practical regression test selection with dynamic file dependencies international symposium on software testing and analysis. pp. 211- 222 ,(2015) , 10.1145/2771783.2771784
S. Yoo, M. Harman, Regression testing minimization, selection and prioritization: a survey Software Testing, Verification and Reliability. ,vol. 22, pp. 67- 120 ,(2012) , 10.1002/STV.430
Qingzhou Luo, Farah Hariri, Lamyaa Eloussi, Darko Marinov, An empirical analysis of flaky tests foundations of software engineering. pp. 643- 653 ,(2014) , 10.1145/2635868.2635920
Bogdan Vasilescu, Yue Yu, Huaimin Wang, Premkumar Devanbu, Vladimir Filkov, Quality and productivity outcomes relating to continuous integration in GitHub foundations of software engineering. pp. 805- 816 ,(2015) , 10.1145/2786805.2786850
Jonathan Bell, Gail Kaiser, Eric Melski, Mohan Dattatreya, Efficient dependency detection for safe Java test acceleration foundations of software engineering. pp. 770- 781 ,(2015) , 10.1145/2786805.2786823
Jonathan Bell, Gail Kaiser, Unit test virtualization with VMVM international conference on software engineering. pp. 550- 561 ,(2014) , 10.1145/2568225.2568248
Shane McIntosh, Bram Adams, Ahmed E. Hassan, The evolution of Java build systems Empirical Software Engineering. ,vol. 17, pp. 578- 608 ,(2012) , 10.1007/S10664-011-9169-5
Myra B. Cohen, Atif M. Memon, Automated testing of GUI applications: models, tools, and controlling flakiness international conference on software engineering. pp. 1479- 1480 ,(2013) , 10.5555/2486788.2487046