Techniques |
Applicability |
TCS
|
Industry Motivation
Industry Evaluation
Industry Author
Put into Practice
|
Experiment subject(s) |
Industrial Partner |
Programming Language |
Facebook mobile app repository (undisclosed scale)
Industrial proprietary, supposedly large scale |
Facebook (USA) |
Multi-language |
Effectiveness Metrics |
Efficiency Metrics |
Other Metrics |
Selection/reduction count/percentage, Accuracy/precision/recall
|
|
|
Information Approach |
Algorithm Approach |
Open Challenges |
History-based
|
Machine learning-based
|
Incorporate more features into the ML model; more sophisticated ML algorithms and models; correlation between tests that are impacted by the same code.
|
Abstract
Change-based testing is a key component of continuous integration at Facebook. However, a large number of tests coupled with a high rate of changes committed to our monolithic repository make it infeasible to run all potentially-impacted tests on each change. We propose a new predictive test selection strategy which selects a subset of tests to exercise for each change submitted to the continuous integration system. The strategy is learned from a large dataset of historical test outcomes using basic machine learning techniques. Deployed in production, the strategy reduces the total infrastructure cost of testing code changes by a factor of two, while guaranteeing that over 95% of individual test failures and over 99.9% of faulty changes are still reported back to developers. The method we present here also accounts for the non-determinism of test outcomes, also known as test flakiness.