Although software may have been completely tested during its development to satisfy some enough criterion, program changes during maintenance require that parts of the software be tested. Also, the current research indicates that software maintenance activities account for as much as two-thirds of the cost of software production. One necessary but expensive maintenance task is regression test [7,8,11,13,15]. Regression testing is the process of validating modified parts of the software and ensuring that no new errors are introduced into previously tested code. An important difference between regression testing and development testing is that during regression testing an established set of tests may be reuse. One approach to reusing tests, rerun all such test ( retest-all), but this strategy may consume extensive time and resources. An alterative approach, selective test [7], chooses a subset of test the old test set and uses this subset to test the modified program. One of the selective regression test technique that is used in this project is data flow type regression testing [10,11,15]. In data flow testing, a variable assignment in a program is tested by generating test that execute sub-path from assignment (definition) to points where the variable's value is used (use). Traditional data flow analysis techniques uses control flow graph representation of a program. In control flow graph, each node corresponds to a statement that are executed sequentially and each edge represent the flow of the control between statements. Definitions and uses of variable are attached to nodes in a control flow graph, and data flow analysis uses these definitions and uses to compute def-use associations. In this project, we tried to integrate the Omega test into data flow type regression testing.
If we try to tell briefly what the omega test is, it is a system for manipulating sets of affine constraints over integer variable. The omega Test determines whether there is an integer solution to an arbitrary set of linear equalities and inequalities.
The omega test initially used in array data dependency testing [1]. Data
dependency problem is equivalent to deciding whether there exits an
integer solution to a set of linear equalities and inequalities.
An assignment to array element
in two nested
loops (outer loop index i and inner loop index j)
in code segment is an example of data dependency, it can be
formulated as an integer programming by putting constraints on the loop
variables (inequalities) and assignments (equalities).
the omega test try to give yes/no answer to question ``is there an
integer solution that satisfy those equalities and inequalities'' [1].
This property of the omega test is suitable for use in production
compilers.
Also, in the later researches the omega test was extended to be able to
project integer programming problem onto subset of variables other than
deciding them.
By this extension, the omega test was able to used directly in deciding the
validity of program transformation, calculating direction and array
data dependencies.
This project introduces a way to using the omega test in software regression test. We developed a method for this integration which is called ``Hierarchical regression test''. Being hierarchical comes from that consecutive variable assignment is clustered as block and represented a node in control flow graph, and any kind of loop is represented a node and the data dependencies is calculated inside that node by using omega test. If it needs you can further make clustering inside the loop node.This method tries to eliminate the false definition-use pairs for array elements, hence decrease the number of test cases to be used in retesting.
In Section 2, The motivation of this research is given. In Section 3, the general information about the omega test is given. Section 4 explains the data flow type regression test. The last section, our method hierarchical regression testing is given by explaining it with examples.