Semantics guided regression test cost reduction

被引:106
作者
Binkley, D
机构
[1] Computer Science Department, Loyola College, Baltimore
基金
美国国家科学基金会;
关键词
CTR categories and subject descriptors; D.2.2 [software engineering; tools and techniques-programmer workbench; D.2.5 [software enginering; testing and debugging; D.3.3 [programming languages; language constructs-control; structures; procedures; functions; and subroutines; E.1 [data structures] graphs; other keywords; slicing; regression testing;
D O I
10.1109/32.624306
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Software maintainers are faced with the task of regression testing: retesting a modified program on an often large number of test cases. The cost of regression testing can be reduced if the size of the program that must be retested is reduced and if old test cases and old test results can be reused. Two complimentary algorithms for reducing the cost of regression testing are presented. The first produces a program called differences that captures the semantic change between certified, a previously tested program, and modified, a changed version of certified. It is more efficient to test differences, because it omits unchanged computations. The program differences is computed using a combination of program slices. The second algorithm identifies test cases for which certified and modified will produce the same output and existing test cases that will test components new in modified. Not rerunning test cases that produce the same output avoids unproductive testing; testing new components with existing test cases avoids the costly construction of new test cases. The second algorithm is based on the notion of common execution patterns, which is the interprocedural extension of the notion introduced by Bates and Horwitz. Program components with common execution patterns have the same execution pattern during some call to their procedure. They are computed using a new type of interprocedural slice called a calling context slice. Whereas an interprocedural slice includes the program components necessary to capture all possible executions of a statement, a calling context slice includes only those program components necessary to capture the execution of a statement in a particular calling context (i.e., a particular call to the procedure). Together with differences, it is possible to test modi fled by running the smaller program differences on a smaller number of test cases. This is more efficient than running modified on a large number of test cases. A prototype implementation has been built to examine and illustrate these algorithms.
引用
收藏
页码:498 / 516
页数:19
相关论文
共 43 条
[1]  
BATES S, 1993, P C REC 20 ACM S PRI
[2]  
Benedusi P., 1988, Proceedings of the Conference on Software Maintenance - 1988 (IEEE Cat. No.88CH2615-3), P352, DOI 10.1109/ICSM.1988.10187
[3]  
Binkley D., 1995, ACM Transactions on Software Engineering and Methodology, V4, P3, DOI 10.1145/201055.201056
[4]  
Binkley D, 1995, INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, 1995 PROCEEDINGS, P251, DOI 10.1109/ICSM.1995.526547
[5]  
BINKLEY D, 1995, TR95001 LOYOL COLL D
[6]  
BINKLEY D, 1993, ACM LETT PROGRAMMING, V2, P1
[7]  
BINKLEY D, 1992, P IEEE C SOFTW MAINT, P41
[8]  
BINKLEY D, 1991, TR1038 U WISC COMP S
[9]  
CHOI J, 1991, ACM T PROGR LANG SYS, V16, P1097
[10]   A FORMAL EVALUATION OF DATA FLOW PATH SELECTION CRITERIA [J].
CLARKE, LA ;
PODGURSKI, A ;
RICHARDSON, DJ ;
ZEIL, SJ .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 1989, 15 (11) :1318-1332