Software changes, such as bug fixes or feature additions, can introduce software bugs and reduce the code quality. As a result tests which passed earlier may not pass any more—thereby exposing a regression in software behavior. This survey overviews recent advances in determining the impact of the code changes onto the program’s behavior and other syntactic program artifacts. Static program analysis can help determining change impact in an approximate manner while dynamic analysis determines change impact more precisely but requires a regression test suite. Moreover, as the program is changed, the corresponding test suite may, too. Some tests may become obsolete while other tests are to be augmented that stress the changes. This article surveys such test generation techniques to stress and propagate program changes. It concludes that a combination of dependency analysis and lightweight symbolic execution show promise in providing powerful techniques for regression test generation.
['Marcel Böhme', 'Abhik Roychoudhury', 'Bruno C. d. S. Oliveira']
Regression Testing of Evolving Programs