Testing software that has been modified to incorporate enhancements or fix defects is a time-consuming effort. Traditionally, test software developed for the initial version of the software is completely re-run with the modified software to verify that the changes do not introduce additional defects. The cost of retesting (known as regression tests) can be reduced only by running a subset of all the tests, which exercises only the changed code.
This paper compares two tools that analyze the original and changed software to identify a subset of all the test cases sufficient to identify a fault in the modified software. The tools were used to analyze three different groups of software, ranging from a suite of small programs to a single, large (49 thousand lines of code) program. Both tools required excessive analysis time, and proved to be less efficient than simply reexecuting all test cases. However, the investigation by the authors and the resultant analysis indicate that the tools would work better if the best parts of each tool were combined. In addition, much of the execution time appears to be taken up by the analysis phase of each tool. This phase might be reduced by a compiler that retained semantic information and provided it to the tools. It would also be helpful if the authors provided a complexity measure of the software under test, as it appears to be a factor in the analysis time for each tool.