When are two classes equivalent?
K. Rangarajan, A. Balasubramaniam · ACM SIGPLAN Notices · 1998
Software written using an object-oriented programming language is made up of classes, which are compile-time entities and objects, that represent the run-tlme instances of these classes. When the software evolves from one version to another, some of these classes might undergo changes. An important question concerning this evolution is whether the changed class needs to be retested. Research in the area of regression testing has focussed on techniques for optimizing the regression testing effort. We have proposed elsewhere a language-based approach to regression testing that exploits features specific to an object-oriented language to reason about the need to retest an evolved class. The basis for our research is the intuition that when a class can be shown to be equivalent to its original tested version, regression testing may not always be required. We have identified four types of equivalence between a class and its evolved counterpart. In this article, we discuss these equivalence categories and point out their impact on retest effort.