Test coverage analysis based on program slicing

Coverage analysis is a structural testing technique, which helps to eliminate gaps in a test suite and determines when to stop testing. To compute test coverage, the paper proposes a gradation model, in which different coverage have different ranks, and the test coverage of the upper layer is compute according to the coverage of all the layers from the lowest to current layer and the rank difference. To distinguish the importance of different variables, the paper proposes a new concept - coverage about variables, based on program slicing, and adds powers according to their importance. Thus we can focus on the important variables to obtain higher test coverage. In most case, the coverage obtained by our method is bigger than that obtained by a traditional measure, because the coverage about a variable takes only the codes related into account, and the gradation model takes more factors into consideration when analyzing test coverage.

[1]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[2]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[3]  Larry J Morell,et al.  A Theory of Fault-Based Testing , 1990, IEEE Trans. Software Eng..

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

[5]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[6]  Steven P. Miller,et al.  Applicability of modified condition/decision coverage to software testing , 1994, Softw. Eng. J..

[7]  Gregg Rothermel,et al.  Empirical Studies of a Safe Regression Test Selection Technique , 1998, IEEE Trans. Software Eng..

[8]  James M. Bieman,et al.  An empirical evaluation (and specification) of the all-du-paths testing criterion , 1992, Softw. Eng. J..

[9]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[10]  Mary Lou Soffa,et al.  Generating test data for branch coverage , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[11]  Robert G. Lanergan,et al.  Software Engineering with Reusable Designs and Code , 1984, IEEE Transactions on Software Engineering.

[12]  Janusz W. Laski,et al.  A Data Flow Oriented Program Testing Strategy , 1983, IEEE Transactions on Software Engineering.

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

[14]  Baowen Xu,et al.  Slicing object-oriented java programs , 2001, SIGP.

[15]  Elaine J. Weyuker,et al.  More Experience with Data Flow Testing , 1993, IEEE Trans. Software Eng..

[16]  Elaine J. Weyuker,et al.  Provable Improvements on Branch Testing , 1993, IEEE Trans. Software Eng..

[17]  Mark Harman,et al.  Using program slicing to simplify testing , 1995, Softw. Test. Verification Reliab..

[18]  Jonathan P. Bowen,et al.  Reinforced Condition/Decision Coverage (RC/DC): A New Criterion for Software Testing , 2002, ZB.

[19]  Elaine J. Weyuker,et al.  An Applicable Family of Data Flow Testing Criteria , 1988, IEEE Trans. Software Eng..

[20]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[21]  Mark Weiser,et al.  Comparison of Structural Test Coverage Metrics , 1985, IEEE Software.

[22]  Simeon C. Ntafos,et al.  A Comparison of Some Structural Testing Strategies , 1988, IEEE Trans. Software Eng..

[23]  Phyllis G. Frankl,et al.  An Experimental Comparison of the Effectiveness of Branch Testing and Data Flow Testing , 1993, IEEE Trans. Software Eng..