There is an apparent paradox at the heart of this proposal:
Structural testing is based upon structurally defined test adequacy criteria. The automated generation of test data to satisfy these criteria can be impeded by properties of the software (for example, flags, side effects, and unstructured control flow). Testability transformation seeks to remove the problem by transforming the program so that it becomes easier to generate adequate test data. However, transformation alters the structure of the program. Since the program's structure is altered and the adequacy criteria is structurally defined, it would appear that the original test adequacy criterion may no longer apply.
Testability transformation therefore requires co-transformation of the adequacy criterion; this avoids the apparent paradox. An (informal) definition of a testability transformation is given below:
Observe that, while traditional transformations are meaning preserving functions on programs, testability transformations are `test set preserving' functions on pairs containing both a program and its associated adequacy criterion. Therefore, TeTra will construct transformations which allow the test adequacy criterion to be re-formulated so that it preserves the meaning of the original adequacy criterion with respect to the original program. The definition of transformation rules and algorithms based upon this new notion of transformation is the essential research challenge which underpins the TeTra project.