The widespread use of the object-oriented (OO) paradigm to develop software systems has resulted in the class becoming the basic test unit. The class structure is more complex than the traditional test unit, the "subprogram", due to the possible combinations of the OO properties exhibited by the features (data items and methods) of the class. These properties include: typing, accessibility, polymorphism, dynamic binding, exception handling, and concurrency. In addition, the relationships between classes in a system component have become more complex. As a result of this complexity in both the class structure and inter-class relationships, testers are spending more time analyzing the source code before the actual testing process begins. This analysis is required so that the tester can decide on the appropriate class integration test order and which testing techniques are most appropriate to adequately testing each class in the application. In this dissertation I present a new class abstraction technique, "A Taxonomy of Object-Oriented (OO) Classes", and show how this class abstraction technique supports the testing of classes. My taxonomy of OO classes catalogs an OO class based on the characteristics exhibited by that class. The characteristics of a class include the properties of its features (data items and methods) and its relationships with other classes. Using the information captured by my taxonomy I extend an existing class integration test strategy to: (1) order concrete derived classes of an abstract class, hence reducing the testing effort, and (2) order instances of parameterized classes based on the actual types of their parameters. Finally, I develop an algorithm to map implementation-based testing techniques to a "class under test". This mapping process identifies those implementation-based testing techniques that can be used to "suitably test" a class based on the "characteristics" of the class under test.