A Practical Guide to Testing Object-Oriented Software (Paperback)
John D. McGregor, David A. Sykes
A start-to-finish methodology for testing object-oriented software: What, why, how, who, and when!
- Understanding the unique challenges of testing object-oriented software.
- Establishing test priorities, choosing approaches, developing test software, and more.
- Includes a beginning-to-end case study.
John D. McGregor is an internationally recognized software testing consultant currently affiliated with Clemson University in South Carolina, where he leads a team of researchers investigating state-of-the-art object-oriented software test methods. David A. Sykes is an independent consultant specializing in object-oriented testing.
What Software Testing Is and Isn't.
What Is Different about Testing Object-Oriented Software?
Overview of Our Testing Approach.
The Testing Perspective.
Organization of This Book.
Conventions Used in This Book.
A Continuing Example — Brickles.
2. The Testing Perspective.
3. Planning for Testing.
A Testing Process Overview.
Risk Analysis — A Tool for Testing.
A Testing Process.
Dimensions of Software Testing.
Who Performs Testing?
Which Pieces Are Tested?
When is Testing Performed?
How Is Testing Performed?
How Much Testing Is Adequate?
Roles in the Testing Process.
A Detailed Set of Test Activities.
A Process for Testing Brickles.
4. Testing Analysis and Design Models.
Place in the Development Process.
The Basics of Guided Inspection.
Organization of the Guided Inspection Activity.
Preparing for the Inspection.
Selecting Test Cases for the Inspection.
Creating Test Cases .
The Interactive Inspection Session.
Testing Specific Types of Models.
Testing Models for Additional Qualities.
Addendum: A Process Definition for Guided Inspection.
Detailed Step Descriptions.
Roles in the Process.
5. Class Testing Basics.
Dimensions of Class Testing.
Constructing Test Cases.
Constructing a Test Driver.
Tester Class Design.
6. Testing Interactions.
Testing Object Interactions.
Testing Collaborator Classes.
The Interaction between Testing and Design Approach.
Sampling Test Cases.
Adequacy Criteria for OATS.
Another Application of OATS.
Testing Off-the-Shelf Components.
7. Testing Class Hierarchies.
Subclass Test Requirements.
Hierarchical, Incremental Testing.
Organizing Testing Software.
Testing Abstract Classes.
8. Testing Distributed Objects.
Dynamic Nature of the Structure.
Path Testing in Distributed Systems.
Life Cycle Testing.
Models of Distribution.
Standard Models of Distribution.
Comparisons and Implications.
A Generic Distributed Component Model.
Local and Remote Interfaces.
Specifying Distributed Objects.
Traditional Pre/Post-Conditions and Invariants.
A Test Environment.
Logic-Specific Test Cases.
The Ultimate Distributed System — The Internet.
Life Cycle Testing of Internet Applications.
What Haven't We Said?
9. Testing Systems.
Test Suspension Criteria and Resumption Requirements.
Complementary Strategies for Selecting Test Cases.
Use Cases as Sources of Test Cases.
Using Scenarios to Construct Test Cases.
The Expected Results Section of a Test Case.
Testing Incremental Projects.
Testing Multiple Representations.
What Needs to Be Tested.
Testing for Qualitative System Attributes.
Testing the System Deployment.
Testing After Deployment.
Testing Environment Interactions.
Test System Security.
Types of Testing.
Life Cycle Testing.
Testing Different Types of Systems.
Measuring Test Coverage.
When Is Coverage Measured?
When Is Coverage Used?
10. Components, Frameworks, and Product Lines.
Testing Components vs. Objects.
Component Test Processes.
Test Cases Based on Interfaces.
Case Study — A GameBoard Component.
Framework Testing Processes.
Inspecting a Framework.
Structuring Test Cases to Support a Framework.
Testing at the Technical Management Level.
Testing at the Software Engineering Level.
Testing in a Product Line Project.
Organization and Process.