Testing of object-oriented programming systems (OOPS): A fault-based approach [chapter]

Jane Huffman Hayes
1994 Lecture Notes in Computer Science  
The goal of this paper is to examine the testing of object-oriented systems and to compare and contrast it with the testing of conventional programming language systems, with emphasis on fault-based testing. Conventional system testing, object-oriented system testing, and the application of conventional testing methods to object-oriented software will be examined, followed by a look at the differences between testing of conventional (procedural) software and the testing of objectoriented
more » ... e. An examination of software faults (defects) will follow, with emphasis on developing a preliminary taxonomy of faults specific to object-oriented systems. Test strategy adequacy will be briefly presented. As a result of these examinations, a set of candidate testing methods for object-oriented programming systems will be identified. set of possible objects. A class is meant to implement a user-defined type (ideally an Abstract Data Type (ADT) to support data abstraction). The goal is to keep the implementation details private to the class (information hiding). Inheritance refers to the concept of a new class being declared as an extension or restriction of a previously defined class [15] . Polymorphism refers to the ability to take more than one form. In object-oriented systems, it refers to a reference that can, over time, refer to instances of more than one class. The static type of the reference is determined from the declaration of the entity in the program text. The dynamic type of a polymorphic reference may change from instant to instant during the program execution. Dynamic binding refers to the fact that the code associated with a given procedure call is not known until the moment of the call at run-time [12] . Applying the principles of polymorphism and inheritance, it can be envisioned that a function call could be associated with a polymorphic reference. Thus the function call would need to know the dynamic type of the reference. This provides a tremendous advantage to programmers over conventional programming languages (often referred to as procedural languages): the ability to request an operation without explicitly selecting one of its variants (this choice occurs at run-time) [16] .
doi:10.1007/bfb0014026 fatcat:7c5lsxplofftphzm5dza3q64be