Techniques |
Applicability |
TCP
|
Industry Motivation
Industry Evaluation
Put into Practice
|
Experiment subject(s) |
Industrial Partner |
Programming Language |
Open-source Java projects (up to 9691 TCs) plus undisclosed projects from Baidu (up to 4139 TCs)
Open-source, large scale
Industrial proprietary, large scale |
Baidu (China) |
C, Java |
Effectiveness Metrics |
Efficiency Metrics |
Other Metrics |
Average Percentage of Faults Detected (APFD), Time/tests To First Failure
|
|
|
Information Approach |
Algorithm Approach |
Open Challenges |
|
|
Apply ML on distribution images; consider additional factors that might affect PTP; consider time-based metrics to guide the solution.
|
Abstract
Test prioritization aims to detect regression faults faster via reordering test executions, and a large number of test prioritization techniques have been proposed accordingly. However, test prioritization effectiveness is usually measured in terms of the average percentage of faults detected concerned with the number of test executions, rather than the actual regression testing time, making it unclear which technique is optimal in actual regression testing time. To answer this question, this paper first conducts an empirical study to investigate the actual regression testing time of various prioritization techniques. The results reveal a number of practical guidelines. In particular, no prioritization technique can always perform optimal in practice. To achieve the optimal prioritization effectiveness for any given project in practice, based on the findings of this study, we design learning-based Predictive Test Prioritization (PTP). PTP predicts the optimal prioritization technique for a given project based on the test distribution analysis (i.e., the distribution of test coverage, testing time, and coverage per unit time). The results show that PTP correctly predicts the optimal prioritization technique for 46 out of 50 open-source projects from GitHub, outperforming stateof- the-art techniques significantly in regression testing time, e.g., 43.16% to 94.92% improvement in detecting the first regression fault. Furthermore, PTP has been successfully integrated into the practical testing infrastructure of Baidu (a search service provider with over 600M monthly active users), and received positive feedbacks fromthe testing team of this company, e.g., saving beyond 2X testing costs with negligible overheads.