Regression Test Selection (RTS) is a set of techniques for selecting a subset of test cases fromthe test suite based on the changes in source code. RTS tools may select tests in different
granularity, namely file-level, class-level, or method-level. File- and class-level tools are less
precise than method-level tools, but they are simpler and carry considerably less execution
overhead in test selection. In this thesis, we show how method-level test selection can be
made efficient by appropriate use of inverted indexing and parallel processing. We present
a static method-level RTS tool, TLDR – a Maven plugin for unit testing with JUnit 4.x.
Like other static RTS approaches, TLDR extracts the firewall of each changed method or
field to compensate for dynamic dispatch. The main difference with other RTS tools is
that it has a configurable and multi-threaded Pipe and Filter architecture, with several
in-memory inverted indexes for fast lookup. We conducted 23.5 hours of experiments on 20
popular open-source Java projects where we compared TLDR with state-of-art RTS tools
like Ekstazi, STARTS, and HyRTS, and traditional unit testing methods like retest-all and
parallel retest-all. Our evaluation has shown that TLDR is both more precise and more
efficient than contemporary RTS techniques like Ekstazi, STARTS, HyRTS, retest-all, and
parallel retest-all.