Hybrid Regression Test Selection by Integrating File and Method Dependences
Guofeng Zhang,Luyao Liu,Zhenbang Chen,Ji Wang
DOI: https://doi.org/10.1145/3691620.3695525
2024-01-01
Abstract:Regression Testing Selection (RTS) reduces the cost of regression testing by only running test cases affected by code changes. Due to the bottleneck of single granularity analyses, the latest RTS techniques tend to analyze with mixed granularities. However, a better synergy of the existing RTS techniques is still challenging. Besides, we have found that once existing RTS approaches use static method-level analysis, handling external library callbacks is difficult, leading to the missed selection of affected test cases. To address these difficulties, we introduce a new hybrid RTS approach, JcgEks, which enhances Ekstazi by integrating static method call graphs. It combines the advantages of dynamic and static analyses, improving precision from class-level to methodlevel and reducing end-to-end time without sacrificing safety. More importantly, JcgEks safely handles external library calls. Besides, we propose a new safety metric and implement the checking tool called Checker to evaluate the safety of RTS tools. We compared JcgEks with four baseline RTS tools in 1000 revisions across 20 open-source projects. The experimental results demonstrate that, compared with the state-of-the-art RTS tool FineEkstazi, JcgEks had the same level of end-to-end testing time and number of selected test classes, while FineEkstazi was confirmed to miss test classes in the experiment. Compared with Ekstazi, JcgEks has reduced end-to-end time by 29% and the number of test classes by 30.9% while ensuring safety.