More than ever, mission-critical and business-critical
applications depend on object-oriented (OO) software. Testing techniques
tailored to the unique challenges of OO technology are necessary to achieve
high reliability and quality. Testing Object-Oriented Systems: Models,
Patterns, and Tools is an authoritative guide to designing and automating
test suites for OO applications.
This comprehensive book explains why testing must be model-based and
provides in-depth coverage of techniques to develop testable models from
state machines, combinational logic, and the Unified Modeling Language (UML).
It introduces the test design pattern and presents 37 patterns that explain
how to design responsibility-based test suites, how to tailor integration
and regression testing for OO code, how to test reusable components and
frameworks, and how to develop highly effective test suites from use cases.
Effective testing must be automated and must leverage object technology.
The author describes how to design and code specification-based assertions
to offset testability losses due to inheritance and polymorphism. Fifteen
micro-patterns present oracle strategies--practical solutions for one of the
hardest problems in test design. Seventeen design patterns explain how to
automate your test suites with a coherent OO test harness framework.
The author provides thorough coverage of testing issues such as:
* The bug hazards of OO programming and differences from testing procedural
code
* How to design responsibility-based tests for classes, clusters, and
subsystems using class invariants, interface data flow models, hierarchic
state machines, class associations, and scenario analysis
* How to support reuse by effective testing of abstract classes, generic
classes, components, and frameworks
* How to choose an integration strategy that supports iterative and
incremental development
* How to achieve comprehensive system testing with testable use cases
* How to choose a regression test approach
* How to develop expected test results and evaluate the post-test state of
an object
* How to automate testing with assertions, OO test drivers, stubs, and test
frameworks
Real-world experience, world-class best practices, and the latest
research in object-oriented testing are included. Practical examples
illustrate test design and test automation for Ada 95, C++, Eiffel, Java,
Objective-C, and Smalltalk. The UML is used throughout, but the test design
patterns apply to systems developed with any OO language or
methodology.