Doctor of Philosophy (PhD)


Computer Science

Document Type



Program testing is important to develop bug free software. A common form of program testing involves selecting test cases which execute (cover) a given set W of statements in the program. In regression testing, W typically forms a small subset of the program. It is often possible to find an alternate small set W so that execution of W' implies execution of W. We develop concepts and algorithms for finding W' as small as possible with the condition that the statements in W' are "close" to those in W in terms of program structure. These concepts generalize the notion of the essential set, which was introduced by Bertolino for the special case W= set of all program statements. We define the essential-for relationship between two nodes x and y and degree of essentialness for a node x in a program flowchart. The sets Ei = all nodes whose degrees of essentialness is the ith largest value, i.e., ith level essential nodes form a partition. We group them in a certain way to form the sets Gj so that each Gj "covers" G1, G2, …, Gj-1. The sets Gj are then pruned by using a suitable notion of "equivalence" to form the sets Hi, which have two important properties: Hi covers Hi-1 and |Hi| ≥ |Hi-1|. The sets Hi are then used to construct our desired set W'. We give efficient algorithms to compute the sets Hi and the set W' and illustrate our method with example programs.



Document Availability at the Time of Submission

Release the entire work immediately for access worldwide.

Committee Chair

S. Kundu