A Practical Guide to Testing Object-Oriented Software / Edition 1

A Practical Guide to Testing Object-Oriented Software / Edition 1

by John D. McGregor, David A. Sykes
     
 

ISBN-10: 0201325640

ISBN-13: 9780201325645

Pub. Date: 03/05/2001

Publisher: Addison-Wesley

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

Overview

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.

0201325640B04062001

Product Details

ISBN-13:
9780201325645
Publisher:
Addison-Wesley
Publication date:
03/05/2001
Series:
Addison-Wesley Object Technology Series
Edition description:
BK&CD-ROM
Pages:
416
Product dimensions:
7.10(w) x 9.00(h) x 0.90(d)

Table of Contents

Prefacexiii
Chapter 1Introduction1
Who Should Read This Book?2
What Software Testing Is--and Isn't3
What Is Different about Testing Object-Oriented Software?5
Overview of Our Testing Approach6
Test Early7
Test Often7
Test Enough8
The Testing Perspective8
Organization of This Book8
Conventions Used in This Book9
A Continuing Example--Brickles10
Basic Brickles Components11
Brickles Physics11
Game Environment14
Chapter 2The Testing Perspective15
Testing Perspective15
Object-Oriented Concepts17
Object18
Message20
Interface21
Class22
Inheritance31
Polymorphism32
Development Products39
Analysis Models40
Design Models56
Source Code59
Summary62
Chapter 3Planning for Testing65
A Development Process Overview66
A Testing Process Overview68
Risk Analysis--A Tool for Testing74
Risks74
Risk Analysis74
A Testing Process78
Planning Issues78
Dimensions of Software Testing78
Who Performs Testing?80
Which Pieces Are Tested?81
When Is Testing Performed?82
How Is Testing Performed?83
How Much Testing Is Adequate?84
Roles in the Testing Process86
Class Tester86
Integration Tester87
System Tester87
Test Manager87
A Detailed Set of Test Activities87
Planning Activities91
Scheduling Testing Activities91
Estimation91
A Process for Testing Brickles93
Document Templates94
Test Metrics106
Summary107
Chapter 4Testing Analysis and Design Models109
An Overview110
Place in the Development Process115
The Basics of Guided Inspection116
Evaluation Criteria118
Organization of the Guided Inspection Activity120
Basic Roles120
Individual Inspection121
Preparing for the Inspection121
Specifying the Inspection121
Realistic Models121
Selecting Test Cases for the Inspection123
Creating Test Cases127
Completing Checklists128
The Interactive Inspection Session128
Testing Specific Types of Models131
Requirements Model131
Analysis Models138
Design Models141
Testing Again151
Testing Models for Additional Qualities151
Summary154
Model-Testing Checklist155
Addendum: A Process Definition for Guided Inspection157
Steps in the Process157
Detailed Step Descriptions157
Roles in the Process161
Chapter 5Class Testing Basics163
Class Testing164
Ways to Test a Class164
Dimensions of Class Testing166
Constructing Test Cases168
Adequacy of Test Suites for a Class179
Constructing a Test Driver183
Test Driver Requirements186
Tester Class Design188
Summary210
Chapter 6Testing Interactions213
Object Interactions214
Identifying Interactions215
Specifying Interactions221
Testing Object Interactions222
Testing Collection Classes222
Testing Collaborator Classes223
The Interaction between Testing and Design Approach224
Sampling Test Cases225
Orthogonal Array Testing228
Adequacy Criteria for OATS234
Another Example235
Another Application of OATS237
Testing Off-the-Shelf Components237
A Case Study in Component Acceptance Testing238
Protocol Testing241
Test Patterns242
Listener Test Pattern242
Specific Example244
Testing Exceptions245
Testing Interactions at the System Level247
Summary248
Chapter 7Testing Class Hierarchies249
Inheritance in Object-Oriented Development250
Subclass Test Requirements250
Refinement Possibilities251
Hierarchical, Incremental Testing253
Organizing Testing Software262
Testing Abstract Classes263
Summary266
Chapter 8Testing Distributed Objects269
Basic Concepts270
Computational Models271
Concurrent271
Parallel271
Networked272
Distributed272
Basic Differences272
Nondeterminism272
Additional Infrastructure273
Partial Failures273
Time-Outs274
Dynamic Nature of the Structure274
Threads274
Synchronization274
Path Testing in Distributed Systems275
Thread Models278
Life-Cycle Testing280
Models of Distribution281
Basic Client/Server Model281
Standard Models of Distribution282
Comparisons and Implications284
A Generic Distributed-Component Model284
Basic Architecture285
Local and Remote Interfaces287
Specifying Distributed Objects287
Interface Definition Language287
Traditional Pre- and Postconditions and Invariants288
Temporal Logic288
Temporal Test Patterns291
Eventually(p)291
Until(p,q)292
Always(p)293
A Test Environment293
Class Testing293
Interaction Testing295
Test Cases295
Model-specific Tests296
Testing Every Assumption297
Infrastructure Tests300
Logic-Specific Test Cases301
The Ultimate Distributed System--The Internet303
Web Servers304
Life-Cycle Testing of Internet Applications305
What Haven't We Said?306
Summary306
Chapter 9Testing Systems309
Defining the System Test Plan311
Features Tested and Not Tested311
Test Suspension Criteria and Resumption Requirements311
Complementary Strategies for Selecting Test Cases313
Use Profile313
ODC314
Use Cases as Sources of Test Cases315
Constructing Use Profiles316
Using Scenarios to Construct Test Cases317
The Expected Results Section of a Test Case319
Brickles320
Testing Incremental Projects323
Legacy Projects323
Testing Multiple Representations324
What Needs to Be Tested?326
Testing against Functional Requirements326
Testing for Qualitative System Attributes326
Testing the System Deployment327
Testing after Deployment328
Testing Environment Interactions328
Test System Security330
Types of Testing331
Stress Testing331
Life-Cycle Testing331
Performance Testing333
Testing Different Types of Systems334
Reactive Systems334
Embedded Systems335
Multitiered Systems336
Distributed Systems338
Measuring Test Coverage338
What Is to Be Covered?338
When Is Coverage Measured?339
When Is Coverage Used?339
ODC--Defect Impacts339
More Examples341
Summary341
Chapter 10Components, Frameworks, and Product Lines343
Component Models344
Enterprise JavaBeans Component Model345
Testing Components versus Objects346
Component Test Processes348
Test Cases Based on Interfaces349
Case Study--A GameBoard Component351
Frameworks359
Basic Issues359
Framework Testing Processes360
Inspecting a Framework360
Structuring Test Cases to Support a Framework361
Product Lines362
Testing at the Organizational Management Level362
Testing at the Technical Management Level363
Testing at the Software Engineering Level363
Testing in a Product Line Project363
Future364
Summary364
Chapter 11Conclusion367
Suggestions367
Organization and Process367
Data368
Standards368
Software Infrastructure370
Techniques370
Risks371
Brickles371
Finally373
Bibliography375
Index381

Customer Reviews

Average Review:

Write a Review

and post it to your social network

     

Most Helpful Customer Reviews

See all customer reviews >