Software regresses when existing functionality stops working upon the change of the program. Thus, the importance of automatic regression testing is increasing; this is especially true for fast-evolving systems and continuous delivery done right. To stress functional behavior, the regression test suite and its execution time is, in general, large. Moreover, by definition, regression test suites are executed recurrently, and thus, the number of test cases greatly influences the execution time. However, a change has only a partial impact on the system, so we can choose to execute only relevant test cases (test selection). Similarly, we can permanently remove test cases that are “irrelevant” (test minimization). Last but not least, the order of the test cases can reveal regression errors “faster” (test prioritization).
In research, several optimization techniques as proposed. However, those strategies often exists only on paper, don’t scale, and tools are very rare to non-existent. We are working on a framework for Java and JUnit that allows an easy integration into existing projects and enables researches to implement new optimization strategies. Moreover, a concept for pointing out “irrelevant” tests and automated evaluation for strategies has to be developed. Further, we want to identify prerequisites and requirements for projects to be suitable for test selection and prioritization techniques.