Testing Object-Oriented Systems: Models, Patterns, and Tools (The Addison-Wesley Object Technology Series)