Next Webcast: DevProdEng Lowdown: How Uber does Developer Productivity Engineering – July 14th (10am – 11am PDT). Learn more and register here.
Cut Test Time Up To 70% with
Predictive Test Selection
Gradle Enterprise Predictive Test Selection saves testing time by identifying, prioritizing, and running only tests that are likely to provide useful feedback during test runs. Predictive Test Selection accomplishes this by applying a machine learning model that uniquely incorporates fine-grained code snapshots, comprehensive test analytics, and flaky test data. It supports Gradle and Maven build tools.
Key Predictive Test Selection Benefits
Faster test feedback cycles
By avoiding test runs that are not adding value, 35-70% of test time for most builds can be saved without reducing test quality.
Improved DevProd and Developer Experience
Minimizing test time makes developers more productive and happier since they spend less idle time waiting for test feedback.
Lower development costs
Developer time saved translates directly into developer cost savings and lower cloud computing costs for hosted deployments.
Key Predictive Test Selection Components and Features
Predictive Test Selection Simulator
Before deployment you can simulate predictions by comparing against actual test results, allowing teams to decide which test sets should be optimized. These results can be inspected through the Predictive Test Selection simulation dashboard.
Test Selection Build Plugin
Predictive Test Selection seamlessly integrates with your Gradle and Maven builds, allowing you to configure it with Test Distribution and standardize how it is used in your organization.
|Fine-Grained Selection Control||Seamless Integration||Airgapped Data|
|Familiar build configuration options allow you to control how Predictive Test Selection acts at a per-test level.||Predictive Test Selection is not bound to any IDE or VCS, and doesn’t dictate adjustments to your workflow to operate. Build however you want— it just works.||Predictive Test Selection operates entirely within your infrastructure. Your sensitive project and test data never leaves your network.|
Trends & Insights
Each Build Scan™ indicates exactly how Predictive Test Selection affected the build, including which tests were selected and why. The Predictive Test Selection dashboard visualizes usage and savings for a custom set of builds and test runs. In this report you will see the productivity impact reflected in the test performance trend chart.
|Model Accuracy||Interpreted Predictions||Unparalleled Insights|
|Predictive Test Selection can predict more than 99% of all test run failures and avoid most irrelevant tests.||Build Scan™ logically explains why each test was selected or not, so you can have confidence in predictions.||Gradle Enterprise is uniquely able to leverage detailed code and dependency data, which gives our model unparalleled insight into production sources and related tests.|
How it Works
- When a test run starts, Gradle Enterprise submits a test input snapshot and test set to a machine learning model.
- Gradle Enterprise automatically develops a test selection strategy by learning from historical code changes and test outcomes from your Build Scan™ data to predict a subset of relevant tests, which are then executed by your build.
- Code change and test results data are processed immediately after a Build Scan is uploaded to Gradle Enterprise and updates the test selection strategy based on new results.
Combine Predictive Test Selection with other Performance Acceleration Technologies for a Force-Multiplier Effect
While Predictive Test Selection does not depend on other Performance Acceleration technologies available in Gradle Enterprise to deliver dramatic feedback cycle time improvements, combining Predictive Test Selection with other technologies can provide a force multiplier effect on feedback cycle times as illustrated below.
- Build Cache. Avoid unnecessarily running components of builds and tests whose inputs have not changed.
- Predictive Test Selection. Run only tests that are likely to provide useful feedback using machine learning.
- Test Distribution. Run the necessary and relevant remaining tests in parallel to minimize build time.
- Performance Continuity. Sustain Test Distribution and other performance improvements over time with data analytic and performance profiling capabilities.