1 Introduction 1
2 The Basics of Software Testing 5
2.1 Terms and Motivation 6
2.1.1 Error and Bug Terminology 7
2.1.2 Testing Terms 8
2.1.3 Software Quality 10
2.1.4 Test Effort 12
2.2 The Fundamental Test Process 16
2.2.1 Test Planning and Control 18
2.2.2 Test Analysis and Design 21
2.2.3 Test Implementation and Execution 24
2.2.4 Evaluation of the Test Exit Criteria and Reporting 26
2.2.5 Test Closure Activities 29
2.3 The Psychology of Testing 30
2.4 General Principles of Testing 32
2.5 Summary 33
3 Testing in the Software Lifecycle 35
3.1 The General V-Model 35
3.2 Component Test 38
3.2.1 Explanation of Terms 38
3.2.2 Test Objects 39
3.2.3 Test Environment 39
3.2.4 Test Objectives 42
3.2.5 Test Strategy 44
3.3 Integration Test 46
3.3.1 Explanation of Terms 46
3.3.2 Test Objects 48
3.3.3 Test Environment 48
3.3.4 Test Objectives 49
3.3.5 Integration Strategies 51
3.4 System Test 54
3.4.1 Explanation of Terms 54
3.4.2 Test Object and Test Environment 55
3.4.3 Test Objectives 56
3.4.4 Problems in System Test Practice 56
3.5 Acceptance Test 57
3.5.1 Testing for Acceptance According to the Contract 58
3.5.2 Testing for User Acceptance 59
3.5.3 Operational (Acceptance) Testing 59
3.5.4 Field Testing 60
3.6 Testing New Product Versions 60
3.6.1 Software Maintenance 61
3.6.2 Release Development 63
3.6.3 Testing in Incremental Development 64
3.7 Generic Types of Testing 65
3.7.1 Functional Testing 65
3.7.2 Nonfunctional Testing 67
3.7.3 Testing of Software Structure 69
3.7.4 Testing Related to Changes and Regression Testing 70
3.8 Summary 71
4 Static Testing 73
4.1 Structured Group Examinations 73
4.1.1 Foundations 73
4.1.2 Reviews 74
4.1.3 The General Process 76
4.1.4 Roles and Responsibilities 80
4.1.5 Types of Reviews 82
4.2 Static Analysis 88
4.2.1 The Compiler as Static Analysis Tool 90
4.2.2 Examination of Compliance to Conventions and Standards 90
4.2.3 Data Flow Analysis 91
4.2.4 Control Flow Analysis 92
4.2.5 Determining Metrics 93
4.3 Summary 95
5 Dynamic Analysis-Test Design Techniques 97
5.1 Black Box Testing Techniques 101
5.1.1 Equivalence Class Partitioning 101
5.1.2 Boundary Value Analysis 112
5.1.3 State Transition Testing 119
5.1.4 Cause-Effect Graphing and Decision Table Technique 126
5.1.5 Use Case Testing 130
5.1.6 Further Black Box Techniques 133
5.1.7 General Discussion of the Black Box Technique 133
5.2 White Box Testing Techniques 134
5.2.1 Statement Coverage 135
5.2.2 Branch Coverage 137
5.2.3 Test of Conditions 140
5.2.4 Path Coverage 144
5.2.5 Further White Box Techniques 148
5.2.6 General Discussion of the White Box Technique 148
5.2.7 Instrumentation and Tool Support 149
5.3 Intuitive and Experience Based Test Case Determination 149
5.4 Summary 153
6 Test Management 157
6.1 Test Organization 157
6.1.1 Test Teams 157
6.1.2 Tasks and Qualifications 160
6.2 Test Planning 162
6.2.1 Quality Assurance Plan 162
6.2.2 Test Plan 163
6.2.3 Prioritizing Tests 165
6.2.4 Test Exit Criteria 167
6.3 Cost and Economy Aspects 167
6.3.1 Costs of Defects 167
6.3.2 Costs of Testing 169
6.3.3 Test Effort Estimation 171
6.4 Definition of Test Strategy 172
6.4.1 Preventative vs Reactive Approach 172
6.4.2 Analytical vs Heuristic Approach 173
6.4.3 Testing and Risk 174
6.5 Test Activity Management 176
6.5.1 Test Cycle Planning 176
6.5.2 Test Cycle Monitoring 177
6.5.3 Test Cycle Control 179
6.6 Incident Management 180
6.6.1 Test Log 180
6.6.2 Incident Reporting 180
6.6.3 Incident Classification 183
6.6.4 Incident Status 184
6.7 Requirements to Configuration Management 187
6.8 Relevant Standards 189
6.9 Summary 190
7 Test Tools 193
7.1 Types of Test Tools 193
7.1.1 Tools for Test Management and Control 193
7.1.2 Tools for Test Specification 196
7.1.3 Tools for Static Testing 197
7.1.4 Tools for Dynamic Test 198
7.1.5 Tools for Nonfunctional Tests 203
7.2 Selection and Introduction of Test Tools 204
7.2.1 Cost Effectiveness of Tool Introduction 205
7.2.2 Tool Selection 206
7.2.3 Tool Introduction 208
7.3 Summary 209
Appendix 211
A Test Plan According to IEEE Std.829 213
B Important Information on the Curriculum and on the Certified Tester Exam 219
C Exercises 221
Glossary 225
Literature 257
Index 265