Reading this article, OO developers can learn about what should be considered during the design phase to produce a program with good testability. The book can also be used for a graduate course in software engineering, preferably a special topic or seminar course on OO software testing. In fact, most of the articles in this book were used in a graduate level special topic course taught by one of the editors. The book begins with a chapter on OO software testing problems to expose the reader to the differences between testing a conventional program and testing an OO program and focuses on the difficulties or challenges a tester would face when testing an OO program. This chapter also helps the reader to understand some subtle issues of OO programming.
Software verification is a software quality assurance activity closely related to software testing.
Software verification checks for inconsistencies in a specification or code, for example, what should be checked when adding a subclass to a super class and what are valid invocation sequences of the methods of a class. Solutions to these problems are answered in the Specification and Verification chapter. The Unit Testing and Integration Testing chapter addresses OO testing techniques. In conventional programming, the basic program unit for unit testing is usually a function, or a module. This chapter offers some ideas and methods.