Skip to content
STARTS - A tool for STAtic Regression Test Selection
Java Groovy
Branch: master
Clone or download
Pull request Compare This branch is 15 commits ahead, 57 commits behind TestingResearchIllinois:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

An Optimization of STARTS

STARTS is a maven plugin for regression test selection, which enables the developers to only run tests that are impacted by the changes since the last build. It does the selection by maintaining a dependency graph of all source and test classes.

This repository implements an optimization of STARTS by running the execution phase (run affected tests) and the graph computation phase (find dependencies) concurrently (see figure below). Ideally, this could improve the time by 7.5% according to this paper. In practice, it improves the time by 5%.

Below is the original readme of STARTS with a new usage of the optimized version added to Major Functionality section.

STARTS (STAtic Regression Test Selection) Overview

Build Status

STARTS is a tool for static class-level regression test selection tool for Maven-based Java programs.


  1. Java 1.8
  2. Maven 3.2.5 and above
  3. Maven Surefire 2.14 and above
  4. Operating System: Linux or OSX

Integrating STARTS Plugin from Maven Central

Change the pom.xml to add the configuration for the STARTS plugin:


Building STARTS from source

  1. git clone
  2. cd starts
  3. mvn install

Using the STARTS Maven Plugin

Available Options

  1. To see all the goals that STARTS provides, run mvn starts:help
  2. To see the details for any of the goals, run mvn starts:help -Ddetail=true -Dgoal=<goal>; replace <goal> with the goal of interest.

Major Functionality

  1. To see the types that changed since the last time STARTS was run: mvn starts:diff
  2. To see the types that may be impacted by changes since the last time STARTS was run: mvn starts:impacted
  3. To see the tests that are affected by the most recent changes: mvn starts:select
  4. To perform RTS using STARTS (i.e., select tests and run the selected tests): mvn starts:starts
  • To perform optimized RTS: mvn starts:starts -DwriteNonAffected=true -DofflineMode=true
  1. To remove all artifacts that STARTS stores between versions (i.e. in the .starts directories): mvn starts:clean

NOTE: By default, commands (1) - (3) will not update the checksums of files in the latest version, while the command in (4) will update the checksums of the files. Each command has a update**Checksums option that can be used to change the default behavior. For example, to update the checksums while checking the diff, run mvn starts:diff -DupdateDiffChecksums=true.

You can’t perform that action at this time.