Using semantic differencing to reduce the cost of regression testing

An algorithm is presented that reduces the cost of regression testing by reducing the number of test cases that must be rerun and by reducing the size of the program that they must be run on. The algorithm uses dependence graphs and program slicing to partition the components of the new program into two sets: preserved points-components that have unchanged run-time behaviour; and affected points-components that have changed run-time behavior. Only test cases that test the behavior of affected points just be rerun; the behavior of the preserved points is guaranteed to be the same in the old and new versions of the program. Furthermore, the algorithm produces a program 'difference', which captures the behavior of (only) the affected points. Thus, rather than restricting the (large) new program on a large number of test cases, it is possible to certify the new program by running the (smaller) program 'differences' on a (smaller) number of test cases.<<ETX>>

[1]  Mary Lou Soffa,et al.  An incremental approach to unit testing during maintenance , 1988, Proceedings. Conference on Software Maintenance, 1988..

[2]  Aniello Cimitile,et al.  Post-maintenance testing based on path change analysis , 1988, Proceedings. Conference on Software Maintenance, 1988..

[3]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[4]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[5]  Hareton Leung,et al.  A cost model to compare regression test strategies , 1991, Proceedings. Conference on Software Maintenance 1991.

[6]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[7]  John Banning,et al.  : An Efficient , 2022 .

[8]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[9]  David Binkley Multi-procedure program integration , 1992 .

[10]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[11]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.

[12]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[13]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

[14]  Wuu Yang,et al.  Identifying syntactic differences between two programs , 1991, Softw. Pract. Exp..

[15]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[16]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.