Document Type


Department or Administrative Unit

Computer Science

Publication Date



As we move toward developing object‐oriented (OO) programs, the complexity traditionally found in functions and procedures is moving to the connections among components. Different faults occur when components are integrated to form higher‐level structures that aggregate the behavior and state. Consequently, we need to place more effort on testing the connections among components. Although OO technologies provide abstraction mechanisms for building components that can then be integrated to form applications, it also adds new compositional relations that can contain faults. This paper describes techniques for analyzing and testing the polymorphic relationships that occur in OO software. The techniques adapt traditional data flow coverage criteria to consider definitions and uses among state variables of classes, particularly in the presence of inheritance, dynamic binding, and polymorphic overriding of state variables and methods. The application of these techniques can result in an increased ability to find faults and to create an overall higher quality software.


The download link on this page is to an accepted manuscript version of this article and may not be the final version of this article

This is the peer reviewed version of the following article: Alexander, R.T., Offutt, J. and Stefik, A. (2010), Testing coupling relationships in object‐oriented programs. Softw. Test. Verif. Reliab., 20: 291-327., which has been published in final form at This article may be used for non-commercial purposes in accordance with Wiley Terms and Conditions for Use of Self-Archived Versions.


Software Testing Verification & Reliability


Copyright © 2010 John Wiley & Sons, Ltd.