The testing perspective is a way of looking at any development product and questioning its validity. The person examining work products from this perspective utilizes a thorough investigation of the software and all its representations to identify faults. The search for faults is guided by both systematic thinking and intuitive insights. It is a perspective that makes reviews and inspections just as powerful a tool as execution-based testing. A review will almost never find something that is missing that is, a review typically only seeks to validate what exists and does not systematically search to determine if all things that should be in the software actually are in it. The testing perspective requires that a piece of software demonstrate that it not only performs according to its specification, but performs only to that specification. Thus, a product is tested to determine that it will do what it is supposed to do, and it is also tested to ensure that it does not do what it is not supposed to do.
The testing perspective may be adopted by the same person who developed a product undergoing testing or by another person who brings an independent view of the specification and the product. Anyone assigned to test specific work products and every person assigned to a project at one time or another should adopt the testing perspective. We will refer to anyone who adopts this perspective by the title tester. A developer testing his or her own work is a tester, and so is the person who applies the testing perspective full time. The testing perspective is as follows:
In this chapter we discuss aspects of object-oriented technologies using this testing perspective. First, we will review central concepts of object-oriented programming. What features of these concepts affect the testing of software that was developed using them? We will also delineate some assumptions we make in regard to using object-oriented technologies properly. Then we will look at various products of the development process and discuss the potential causes of failures in the software they represent. |