Assertion-Based Validation of Modified Programs

Assertions are used to detect incorrect program behavior during testing and debugging. Assertions when combined with automated test data generation may increase the confidence that certain types of faults are not present in the program. If the test data generation process is not able to violate an assertion, a developer may have confidence that the fault "captured" by the assertion is not present. We refer to this process as an assertion-based validation. Assertion-based validation may be very expensive especially when a large number of assertions are present in a program. During maintenance, after a modification is made to the program, all unchanged assertions need to be revalidated to make sure that certain types of faults are present. In this paper we present an approach that may reduce the cost of assertion-based revalidation after modifications are made to the program by identifying assertions that need to be revalidated or only partially revalidated. The presented approach is based on program dependence analysis and testability transformation. The results of a small case study indicate that the presented approach may significantly reduce the effort during the process of assertion-based revalidation.

[1]  Hal Berghel Digital: The Y2K e-commerce tumble , 2001, Commun. ACM.

[2]  R. Gupta,et al.  Data dependence based testability transformation in automated test generation , 2005, 16th IEEE International Symposium on Software Reliability Engineering (ISSRE'05).

[3]  Gary McGraw,et al.  Generating Software Test Data by Evolution , 2001, IEEE Trans. Software Eng..

[4]  Roy P. Pargas,et al.  Test-Data Generation Using Genetic Algorithms , 1999, Softw. Test. Verification Reliab..

[5]  RothermelGregg,et al.  Supporting Controlled Experimentation with Testing Techniques , 2005 .

[6]  Bogdan Korel,et al.  Assertion-oriented automated test data generation , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[7]  Bryan F. Jones,et al.  Automatic structural testing using genetic algorithms , 1996, Softw. Eng. J..

[8]  David S. Rosenblum Towards A Method Of Programming With Assertions , 1992, International Conference on Software Engineering.

[9]  Bogdan Korel,et al.  Automated Software Test Data Generation , 1990, IEEE Trans. Software Eng..

[10]  Hal Berghel,et al.  The Code Red Worm , 2001, CACM.

[11]  Joachim Wegener,et al.  Evolutionary test environment for automatic structural testing , 2001, Inf. Softw. Technol..

[12]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[13]  Mark Harman,et al.  Testability transformation , 2004, IEEE Transactions on Software Engineering.

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

[15]  Lori A. Clarke,et al.  A System to Generate Test Data and Symbolically Execute Programs , 1976, IEEE Transactions on Software Engineering.

[16]  McMinnPhil Search-based software test data generation: a survey , 2004 .

[17]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[18]  Bogdan Korel,et al.  The chaining approach for software test data generation , 1996, TSEM.