학술논문

Evaluating Regression Test Selection Opportunities in a Very Large Open-Source Ecosystem
Document Type
Conference
Source
2018 IEEE 29th International Symposium on Software Reliability Engineering (ISSRE) ISSRE Software Reliability Engineering (ISSRE), 2018 IEEE 29th International Symposium on. :112-122 Oct, 2018
Subject
Computing and Processing
Libraries
Ecosystems
Testing
Google
Open source software
Industries
Regression Testing
Regression Test Selection
Ecosystem Testing
Language
ISSN
2332-6549
Abstract
Regression testing in very large software ecosystems is notoriously costly, requiring computational resources that even large corporations struggle to cope with. Very large ecosystems contain thousands of rapidly evolving, interconnected projects where client projects transitively depend on library projects. Regression test selection (RTS) reduces regression testing costs by rerunning only tests whose pass/fail behavior may flip after code changes. For single projects, researchers showed that class-level RTS is more effective than lower method-or statement-level RTS. Meanwhile, several very large ecosystems in industry, e.g., at Facebook, Google, and Microsoft, perform project-level RTS, rerunning tests in a changed library and in all its transitive clients. However, there was no previous study of the comparative benefits of class-level and project-level RTS in such ecosystems. We evaluate RTS opportunities in the MAVEN Central opensource ecosystem. There, some popular libraries have up to 924589 clients; in turn, clients can depend on up to 11190 libraries. We sampled 408 popular projects and found that 202 (almost half) cannot update to latest library versions without breaking compilation or tests. If developers want to detect these breakages earlier, they need to run very many tests. We compared four variants of class-level RTS with project-level RTS in MAVEN Central. The results showed that class-level RTS may be an order of magnitude less costly than project-level RTS in very large ecosystems. Specifically, various class-level RTS variants select, on average, 7.8%-17.4% of tests selected by project-level RTS.