O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

A Practical Guide to Testing Object-Oriented Software

Book Description

A Practical Guide to Testing Object-Oriented Software focuses on the real-world issues that arise in planning and implementing effective testing for object-oriented and component-based software development. It shows how testing object-oriented software differs from testing procedural software and highlights the unique challenges and opportunities inherent in object-oriented software testing.

The authors reveal how object-oriented software development allows testing to be integrated into each stage of the process--from defining requirements to system integration--resulting in a smoother development process and a higher end quality. As they follow this process, they describe what to test at each stage as well as offer experienced-based testing techniques.

You will find information on such important topics as:

  • Testing analysis and design models, including selecting test cases to guide design inspections

  • Testing components, frameworks, and product lines

  • The testing challenges of inheritance and polymorphism

  • How to devise an effective testing strategy

  • Testing classes, including constructing a test driver and test suites

  • Testing object interactions, covering sampling test cases, off-the-shelf components, protocol testing, and test patterns

  • Testing class hierarchies, featuring subclass test requirements

  • Testing distributed objects, including threads, life cycle testing, and Web server testing

  • Testing systems, with information on stress, life cycle, and performance testing

One comprehensive example runs throughout the book to demonstrate testing techniques for each stage of development. In addition, the book highlights important questions that testers should ask when faced with specific testing tasks.

The authors acknowledge that testing is often viewed as a necessary evil, and that resources allocated to testing are often limited. With that in mind, they present a valuable repertoire of testing techniques from which you can choose those that fit your budget, schedule, and needs.


Table of Contents

  1. Copyright
  2. Preface
  3. Introduction
    1. Who Should Read This Book?
    2. What Software Testing Is—and Isn't
    3. What Is Different about Testing Object-Oriented Software?
    4. Overview of Our Testing Approach
    5. The Testing Perspective
    6. Organization of This Book
    7. Conventions Used in This Book
    8. A Continuing Example—Brickles
    9. Exercises
  4. The Testing Perspective
    1. Testing Perspective
    2. Object-Oriented Concepts
    3. Development Products
    4. Summary
    5. Exercises
  5. Planning for Testing
    1. A Development Process Overview
    2. A Testing Process Overview
    3. Risk Analysis—A Tool for Testing
    4. A Testing Process
    5. Roles in the Testing Process
    6. A Detailed Set of Test Activities
    7. Planning Activities
    8. Summary
    9. Exercises
  6. Testing Analysis and Design Models
    1. An Overview
    2. Place in the Development Process
    3. The Basics of Guided Inspection
    4. Organization of the Guided Inspection Activity
    5. Preparing for the Inspection
    6. Testing Specific Types of Models
    7. Testing Models for Additional Qualities
    8. Summary
    9. Exercises
    10. Addendum: A Process Definition for Guided Inspection
  7. Class Testing Basics
    1. Class Testing
    2. Constructing Test Cases
    3. Constructing a Test Driver
    4. Summary
    5. Exercises
  8. Testing Interactions
    1. Object Interactions
    2. Testing Object Interactions
    3. Sampling Test Cases
    4. Testing Off-the-Shelf Components
    5. Protocol Testing
    6. Test Patterns
    7. Testing Exceptions
    8. Summary
    9. Exercises
  9. Testing Class Hierarchies
    1. Inheritance in Object-Oriented Development
    2. Subclass Test Requirements
    3. Organizing Testing Software
    4. Testing Abstract Classes
    5. Summary
    6. Exercises
  10. Testing Distributed Objects
    1. Basic Concepts
    2. Computational Models
    3. Basic Differences
    4. Threads
    5. Path Testing in Distributed Systems
    6. Life-Cycle Testing
    7. Models of Distribution
    8. A Generic Distributed-Component Model
    9. Specifying Distributed Objects
    10. Temporal Logic
    11. A Test Environment
    12. Test Cases
    13. The Ultimate Distributed System—The Internet
    14. Summary
    15. Exercises
  11. Testing Systems
    1. Defining the System Test Plan
    2. Complementary Strategies for Selecting Test Cases
    3. Use Cases as Sources of Test Cases
    4. Testing Incremental Projects
    5. Testing Multiple Representations
    6. What Needs to Be Tested?
    7. Types of Testing
    8. Testing Different Types of Systems
    9. Measuring Test Coverage
    10. Summary
    11. Exercises
  12. Components, Frameworks, and Product Lines
    1. Component Models
    2. Frameworks
    3. Product Lines
    4. Summary
    5. Exercises
  13. Conclusion
    1. Suggestions
    2. Brickles
    3. Finally
  14. Bibliography
  15. Index