Table of Contents
1 Introduction 1
2 Software Testing Basics 7
2.1 Concepts and Motivations 7
2.1.1 Defect and Fault Terminology 9
2.1.2 Testing Terminology 12
2.1.3 Test Artifacts and the Relationships Between Them 14
2.1.4 Testing Effort 16
2.1.5 Applying Testing Skills Early Ensures Success 19
2.1.6 The Basic Principles of Testing 20
2.2 Software Quality 22
2.2.1 Software Quality according to ISO 25010 22
2.2.2 Quality Management and Quality Assurance 26
2.3 The Testing Process 27
2.3.1 Test Planning 29
2.3.2 Test Monitoring and Control 30
2.3.3 Test Analysis 31
2.3.4 Test Design 34
2.3.5 Test Implementation 36
2.3.6 Test Execution 37
2.3.7 Test Completion 40
2.3.8 Traceability 41
2.3.9 The Influence of Context on the Test Process 42
2.4 The Effects of Human Psychology on Testing 43
2.4.1 How Testers and Developers Think 46
2.5 Summary 47
3 Testing Throughout the Software Development Lifecycle 49
3.1 Sequential Development Models 49
3.1.1 The Waterfall Model 50
3.1.2 The V-Model 51
3.2 Iterative and Incremental Development Models 54
3.3 Software Development in Project and Product Contexts 56
3.4 Testing Levels 58
3.4.1 Component Testing 58
3.4.2 Integration Testing 66
3.4.3 System Testing 74
3.4.4 Acceptance Testing 76
3.5 Test Types 80
3.5.1 Functional Tests 80
3.5.2 Non-Functional Tests 83
3.5.3 Requirements-Based and Structure-Based Testing 85
3.6 Testing New Product Versions 86
3.6.1 Testing Following Software Maintenance 88
3.6.2 Testing Following Release Development 90
3.6.3 Regression Testing 91
3.7 Summary 93
4 Static Testing 95
4.1 What Can We Analyze and Test? 96
4.2 Static Test Techniques 97
4.3 The Review Process 98
4.3.1 Review Process Activities 99
4.3.2 Different Individual Review Techniques 102
4.3.3 Roles and Responsibilities within the Review Process 106
4.4 Types of Review 108
4.5 Critical Factors, Benefits, and Limits 114
4.6 The Differences Between Static and Dynamic Testing 117
4.7 Summary 119
5 Dynamic Testing 121
5.1 Black-Box Test Techniques 126
5.1.1 Equivalence Partitioning 126
5.1.2 Boundary Value Analysis 137
5.1.3 State Transition Testing 145
5.1.4 Decision Table Testing 153
5.1.5 Pair-Wise Testing 159
5.1.6 Use-Case Testing 168
5.1.7 Evaluation of Black-Box Testing 171
5.2 White-Box Test Techniques 172
5.2.1 Statement Testing and Coverage 173
5.2.2 Decision Testing and Coverage 175
5.2.3 Testing Conditions 179
5.2.4 Evaluation of White-Box Testing 188
5.3 Experience-Based Test Techniques 189
5.4 Selecting the Right Technique 195
5.5 Summary 199
6 Test Management 201
6.1 Test Organization 201
6.1.1 Independent Testing 201
6.1.2 Roles, Tasks, and Qualifications 205
6.2 Testing Strategies 210
6.2.1 Test Planning 210
6.2.2 Selecting a Testing Strategy 213
6.2.3 Concrete Strategies 215
6.2.4 Testing and Risk 217
6.2.5 Testing Effort and Costs 220
6.2.6 Estimating Testing Effort 222
6.2.7 The Cost of Testing vs. The Cost of Defects 223
6.3 Test Planning, Control, and Monitoring 225
6.3.1 Test Execution Planning 226
6.3.2 Test Control 232
6.3.3 Test Cycle Monitoring 232
6.3.4 Test Reports 233
6.4 Defect Management 235
6.4.1 Evaluating Test Reports 236
6.4.2 Creating a Defect Report 238
6.4.3 Classifying Failures and Defects 241
6.4.4 Defect Status Tracking 242
6.4.5 Evaluation and Reporting 245
6.5 Configuration Management 246
6.6 Relevant Standards and Norms 248
6.7 Summary 249
7 Test Tools 251
7.1 Types of Test Tools 252
7.1.1 Test Management Tools 252
7.1.2 Test Specification Tools 256
7.1.3 Static Test Tools 257
7.1.4 Tools for Automating Dynamic Tests 260
7.1.5 Load and Performance Testing Tools 266
7.1.6 Tool-Based Support for Other Kinds of Tests 267
7.2 Benefits and Risks of Test Automation 268
7.3 Using Test Tools Effectively 271
7.3.1 Basic Considerations and Principles 271
7.3.2 Tool Selection 272
7.3.3 Pilot Project 273
7.3.4 Success Factors During Rollout and Use 274
7.4 Summary 275
Appendices 277
A Important Notes on the Syllabus and the Certified Tester Exam 279
B Glossary 281
C References 309
C.1 Literature 309
C.2 Norms and Standards 311
C.3 URLs 313
Index 317