Welcome to HyRTS website!
HyRTS is a Hybrid Regression Test Selection (RTS) framework for Java programs with JUnit tests. HyRTS currently supports test-class level RTS for single-module and multi-module Maven projects, JUnit 3 and JUnit 4 tests, as well as unit and integration tests. 

Requirements

  • JDK 7/8/9
  • JUnit 4.10+ (but supports both JUnit 3 and 4 tests)
  • Maven 3.2.2+

Setup

  • Maven Central (Recommended): No installation needed, the HyRTS plugin will be automatically downloaded once declared in the pom.xml of the project under test. Currently, the following versions are recommended in Maven Central:
    • 1.0.1

Perform RTS

  • Add the HyRTS plugin to the plugins section under the build section in your pom.xml (Note that for multi-module Maven projects, the plugin needs to be added to the pom.xml file for each sub module):
    <project>
      ...
      <build>
        ...
        <plugins>
          ...
          <plugin>
          <groupId>org.hyrts</groupId>
          <artifactId>hyrts-maven-plugin</artifactId>
          <version>${version}</version>
          </plugin>
        </plugins>
      </build>
    </project>
  • To perform basic HyRTS (hybrid method and file level RTS), run:

    mvn hyrts:HyRTS
    

    To run RTS in the offline mode (i.e., running selected tests without dependency collection), do:

    mvn hyrts:HyRTS -DexecOnly=true
    

    Note that the config works for all other RTS variants.

  • To perform HyRTS variants that transform different method-level changes into file changes, run:

    mvn hyrts:HyRTS -DhybridLevel=[config-letter]
    

    Where [config-letter] denotes transforming the corresponding method-level changes into file-level changes:

    • a: DSI (Deleting Static Initializer)
    • b: ASI (Adding Static Initializer)
    • c: CSI (Changing Static Initializer)
    • d: DI (Deleting Instance Initializer)
    • e: AI (Adding Instance Initializer)
    • f: CI (Changing Instance Initializer)
    • g: DSM (Deleting Static Method)
    • h: ASM (Adding Static Method)
    • i: CSM (Changing Static Method)
    • j: DIM (Deleting Instance Method)
    • k: AIM (Adding Instance Method)
    • l: CIM (Changing Instance Method)
  • To perform HyRTSf (transforming instance method additions/deletions for better performance), run:

    mvn hyrts:HyRTSf
    

    Or

    mvn hyrts:HyRTS -DhybridLevel=jk
    
  • To perform FRTS (pure file-level RTS), run:

    mvn hyrts:FRTS
    
  • To clean HyRTS data, run:

    mvn hyrts:clean
    
  • The plugin also enables collection of various coverage information. For more information, run:

    mvn hyrts:help
    

Outputs

All the files generated by the tool will be stored in a dir named “hyrts-files” (The dir will be located under each module of the Maven project). Different mojo runs may generate different files inside the corresponding dirs, e.g.,:

  • HyRTS:
    • “HyRTS-checksum.gz” stores all the method/file-level checksum info for the prior version
    • “HyRTS-meth-cov” stores all the method-level dependency info for tests, each test class has one coverage file
  • HyRTSf:
    • “HyRTSf-checksum-hybrid.gz” stores all the method/file-level checksum info for the prior version
    • “HyRTSf-meth-cov” stores all the method-level dependency info for tests, each test class has one coverage file
  • FRTS:
    • “FRTS-checksum.gz” stores all the class-level checksum info for the prior version
    • “FRTS-class-cov” stores all the file-level dependency info for tests, each test class has one coverage file
Contacts
Lingming Zhang
lingming.zhang@utdallas.edu
University of Texas at Dallas
Tell us about your comments,  questions, or bug reports.