Regression testing is the process of validating modified software to detect whether new errors have been introduced into previously tested code and to provide confidence that modifications are correct. Since regression testing is an expensive process, researchers have proposed regression test selection techniques as a way to reduce some of this expense. These techniques attempt to reduce costs by selecting and running only a subset of the test cases in a program's existing test suite. Although there have been some analytical and empirical evaluations of individual techniques, to our knowledge only one comparative study, focusing on one aspect of two of these techniques, has been reported in the literature. We conducted an experiment to examine the relative costs and benefits of several regression test selection techniques. Permission to make digital / hard copy of part or all of this work for personal or classroom use is granted without fee provided that the copies are not made or distributed for profit or commercial advantage, the copyright notice, the title of the publication, and its date appear, and notice is given that copying is by permission of the ACM, Inc. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and / or a fee. to reduce regression testing effort and uncover faults in modified programs. Our results highlight several differences between the techniques, and expose essential trade-offs that should be considered when choosing a technique for practical application.  As developers maintain a software system, they periodically regression test it, hoping to find errors caused by their changes and provide confidence that their modifications are correct. To support this process, developers often create an initial test suite, and then reuse it for regression testing. The simplest regression testing strategy, retest all, reruns every test case in the initial test suite. This approach, however, can be prohibitively expensive-rerunning all test cases in the test suite may require an unacceptable amount of time. An alternative approach, regression test selection, reruns only a subset of the initial test suite. Of course, this approach is imperfect as well-regression test selection techniques can have substantial costs, and can discard test cases that could reveal faults, possibly reducing fault detection effectiveness. This trade-off between the time required to select and run test cases and the fault detection ability of the test cases that are run is central to regression test selection. Because there are many ways in which to approach this trade-off, a variety of test selection techniques have been proposed (e.g., Agrawal et al. [1993 ], Chen et al. [1994 , Harrold and Soffa [1988] , Hartmann and Robson [1990] , Leung and White [1990 ], Ostrand and Weyuker [1988 ], and Rothermel and Harrold [1997 ). Although there have been some analytical and empirical evaluations of individual techniques [Chen et al. 1994; Rosenblum and Weyuker 1997b; Rothermel and Harrold 1997; ], to our knowledge only one comparative study, focusing on one aspect of two of these techniques, has been reported in the literature [Rosenblum and Rothermel 1997] . We hypothesize that different regression test selection techniques create different trade-offs between the costs of selecting and executing test cases, and the need to achieve sufficient fault detection ability. Because there have been few controlled experiments to quantify these trade-offs, we conducted such a study. Our results indicate that the choice of regression test selection algorithm significantly affects the cost-effectiveness of regression testing. Below we review the relevant literature, describe the test selection techniques we examined, and present our experimental design, analysis, and conclusions.
Harrold and Soffa proposed a data flow coverage based regression test selection technique REF .
An empirical study of regression test selection techniques
TSEM
Engineering Computer Science