|Topic:||Automated Test Data Generation for Structural Testing|
|Date:||Thursday, March 25, 1999|
|Place:||Gould-Simpson, Room 701|
Software testing is an important stage of software development as it provides a method to establish confidence in the reliability of software. A challenging problem during the testing process is to generate test data that exercises a selected structural element such as a statement, branch or a path in a program. If test data for a given program can be generated automatically, it can relieve the software testing team of a tedious and difficult task, reducing the cost of software testing significantly.
In this talk, I will present a new program execution based method to automatically generate an input that exercises a selected structural element (statement, branch, path) in a program. The method is based on an innovative application of the traditional relaxation technique used in numerical analysis to iteratively refine an approximate solution of an equation. Several novel ideas have been introduced in formulating the test data generation problem as a relaxation technique problem. The key idea is to view each branch predicate in a program as a function of the input and derive a mathematical model for this function based on program execution. The test data generation is initiated with an arbitrarily chosen input from the input domain of the program. If the given program element is not exercised when the program is executed on this input, the input is iteratively refined using the relaxation technique to obtain a desired input. My technique is general and can handle programs with branch predicates computing general nonlinear functions of the input. It can also be extended to derive input test cases for other types of structural coverage criteria such as data flow testing. It is scalable to large programs and provides a practical solution to the automated test data generation problem.