Part I. Software Testing Overview
Chapter 1 Background on Software Testing 3
1.1 Notorious Software Error Use Case Study 3
1.1.1 Disney's The Lion King, 1994-1995 3
1.1.2 Intel Pentium Floating-Point Division Defects, 1994 4
1.1.3 NASA Mars Polar Lander Rover, 1999 4
1.1.4 Patriot Missile Defense System, 1991 5
1.1.5 The millennium bug problem, circa 1974 5
1.1.6 Hazard anticipation, 2004 5
1.2 What are software defects 6
1.2.1 Terminology for software failure 6
1.2.2 Official Definition of Software Defects 7
1.3 Why Software Defects Occur 8
1.4 Cost of fixing software defects 9
1.5 What Software Testers Really Do 10
1.6 Qualities of a good software tester 10
1.7 Summary 11
1.8 Quiz 12
Chapter 2 The Software Development Process 13
2.1 Components of the product 13
2.1.1 How much input is required for a software product 13
2.1.2 What a software product consists of 16
2.2 Software project members
2.3 Software Development Life Cycle Model 18
2.3.1 The Big Bang model 18
2.3.2 Write-as-you-go model 19
2.3.3 Waterfall model 20
2.3.4 Spiral model 21
2.4 Summary 22
2.5 Quiz 22
Chapter 3 The Substance of Software Testing 23
3.1 Principles of Testing 23
3.1.1 It is impossible to test a program completely 23
3.1.2 Software Testing is a Risky Behavior 24
3.1.3 Testing fails to reveal latent software defects 24
3.1.4 More software defects found means more software defects 25
3.1.5 Pesticide quirks 25
3.1.6 Not all software defects need to be fixed 26
3.1.7 It is difficult to say when a defect is a defect 27
3.1.8 Product specifications never have a final version 28
3.1.9 Software testers are unpopular in product teams 28
3.1.10 Software testing as a structured technical profession 28
3.2 Software Testing Terms and Definitions 29
3.2.1 Precision and accuracy 29
3.2.2 Confirmation and validation 30
3.2.3 Quality and reliability
3.2.4 Testing and Quality Assurance (QA) 30
3.3 Summary 31
3.4 Quizzes 31
Part II Testing Fundamentals
Chapter 4 Checking the product manual 35
4.1 Starting the test 35
4.1.1 Black-box and white-box testing 36
4.1.2 Static and Dynamic Testing 37
4.1.3 Static Black Box Testing, Test Product Specifications 37
4.2 High-level review of product specifications 37
4.2.1 Assuming one's self as a client 38
4.2.2 Study of existing standards and norms 38
4.2.3 Review and testing of similar software 39
4.3 Low-Level Testing Techniques for Product Specifications 39
4.3.1 Product specification attribute checklist 39
4.3.2 Checklist for product specification terminology 40
4.4 Summary 40
4.5 Quiz 40
Chapter 5 Testing the Software with a Blindfold 42
5.1 Dynamic black-box testing: testing software with a blindfold on 42
5.2 Passage and Failure Tests 43
5.3 Classification of equivalence
5.4 Data testing
5.4.1 Boundary conditions 47
5.4.2 Sub-boundary conditions 49
5.4.3 Default, Blank, Null, Zero, and None 51
5.4.4 Illegal, erroneous, incorrect and garbage data 52
5.5 Status Testing 53
5.5.1 Logical flow of test software 54
5.5.2 Failed State Testing 57
5.6 Other Black Box Testing Techniques 58
5.6.1 Doing it like a clumsy user 58
5.6.2 Looking Again Where Software Defects Have Been Found 59
5.6.3 Thinking like a hacker 59
5.6.4 Experience, intuition and hunches 59
5.7 Summary 59
5.8 Quiz 60
Chapter 6 Checking the Code 61
6.1 Static white box testing: checking the design and code 61
6.2 Formal review
6.2.1 Colleague review
6.2.2 Walk-through 63
6.2.3 Testing 63
6.3 Coding standards and norms 64
6.3.1 Examples of Programming Standards and Specifications 64
6.3.2 Acquisition criteria
6.4 Generic Code Review Checklist 66
6.4.1 Data referencing errors 66
6.4.2 Data declaration errors 67
6.4.3 Calculation errors 67
6.4.4 Comparison errors 67
6.4.5 Control process errors 68
6.4.6 Subroutine parameter errors 68
6.4.7 Input/output errors 68
6.4.8 Other inspections
6.5 Summary 69
6.6 Quizzes 69
Chapter 7 Testing Software with X-Ray Glasses 70
7.1 Dynamic White Box Testing 70
7.2 Dynamic White Box Testing and Debugging 71
7.3 Segmentation testing
7.3.1 Unit and Integration Testing 72
7.3.2 Unit Test Example 74
7.4 Data coverage
7.4.1 Data flow 76
7.4.2 Sub-boundaries 76
7.4.3 Formulas and equations 77
7.4.4 Error Coercion 77
7.5 Code Coverage 78
7.5.1 Program Statements and Line-of-Code Overrides 79
7.5.2 Branch Coverage 79
7.5.3 Conditional overrides 80
7.6 Summary
7.7 Quiz 81
Part III. Utilizing Testing Techniques
Chapter 8 Configuration Testing 85
8.1 Overview of Configuration Testing 85
8.1.1 Separation of configuration defects 88
8.1.2 Calculation of workload 89
8.2 Implementation of mandates
8.2.1 Determining the type of hardware required 90
8.2.2 Determining which vendors' hardware, models, and drivers are available 90
8.2.3 Identifying possible hardware features, modes and options 91
8.2.4 Reducing defined hardware configurations to a manageable range 91
8.2.5 Clarifying Software Unique Characteristics Related to Hardware Configuration 92
8.2.6 Designing Test Cases to Execute in Each Configuration 93
8.2.7 Executing Tests in Each Configuration 93
8.2.8 Repeat testing until the group is satisfied with the results 93
8.3 Obtaining Hardware 93
8.4 Clarifying hardware standards 94
8.5 Configuration tests on other hardware 95
8.6 Summary 95
8.7 Quizzes 95
Chapter 9 Compatibility Testing 96
9.1 Overview of compatibility testing 96
9.2 Platform and application versions 97
9.2.1 Backward and forward compatibility 97
9.2.2 Testing the impact of multiple versions 98
9.3 Standards and norms
9.3.1 Advanced standards and norms 99
9.3.2 Low-level standards and norms 100
9.4 Data-sharing compatibility 100
9.5 Summary 102
9.6 Quizzes 102
Chapter 10 Foreign language tests
10.1 Making sense of words and pictures 103
10.2 Translation issues
10.2.1 Text extensions 104
10.2.2 ASCll, DBCS and Unicode 105
10.2.3 Hotkeys and Shortcuts 105
10.2.4 Extended Characters 106
10.2.5 Character Counting 106
10.2.6 Reading from left to right and right to left 107
10.2.7 Text in Graphics 107
10.2.8 Detaching text from code 107
10.3 Localization issues
10.3.1 Content 108
10.3.2 Data format 109
10.4 Configuration and compatibility issues 110
10.4.1 Foreign Platform Configuration 110
10.4.2 Data compatibility 111
10.5 How much to test 112
10.6 Summary 113
10.7 Quizzes 113
Chapter 11 Ease-of-Use Testing 114
11.1 User Interface Testing 114
11.2 What makes a good UI 115
11.2.1 Conformity with standards and norms 115
11.2.2 Intuitive 116
11.2.3 Unanimously 117
11.2.4 Flexibility 117
11.2.5 Comfort 118
11.2.6 Correct 118
11.2.7 Practical 119
11.3 Testing for persons with disability impairments: the assistive options test 119
11.3.1 Legal requirements
11.3.2 Ancillary features in software 120
11.4 Summary 122
11.5 Quizzes 122
Chapter 12 Test Documentation 123
12.1 Types of Software Documentation 123
12.2 Importance of Documentation Testing 125
12.3 What to look for when reviewing documentation 126
12.4 The essence of document testing 127
12.5 Summary 127
12.6 Quizzes 127
Chapter 13 Software Security Testing 129
13.1 War games - movies 129
13.2 Understanding motivation
13.3 Threat model analysis 131
13.4 Is Software Security a Feature? Is a Software Vulnerability a Flaw 134
13.5 Understanding Buffer Overflows 134
13.6 Using Safe String Functions 135
13.7 Computer forensics 137
13.8 Summary 139
13.9 Quizzes 139
Chapter 14 Web Site Testing 141
14.1 Web page fundamentals 141
14.2 Black Box Testing 142
14.2.1 Text 143
14.2.2 Hyperlinks 144
14.2.3 Pictures 145
14.2.4 Forms 145
14.2.5 Objects and various other simple functions 145
14.3 Gray Box Testing 146
14.4 White Box Testing 147
14.5 Configuration and Compatibility Testing 148
14.6 Ease of use tests 149
14.7 Introduction to Automated Testing 151
14.8 Summary 151
14.9 Quizzes 151
Part IV. Additions to the test
Chapter 15 Automated Testing and Testing Tools 155
15.1 Benefits of tools and automation 155
15.2 Testing tools 156
15.2.1 Viewers and monitors 156
15.2.2 Drivers 157
15.2.3 Piles 158
15.2.4 Stress and Load Tools 159
15.2.5 Interference injectors and noise generators 159
15.2.6 Analytical tools 160
15.3 Software Test Automation 160
15.3.1 Macro Recording and Playback 161
15.3.2 Programmable Macros 162
15.3.3 Fully Programmable Automated Testing Tools 163
15.4 Randomized testing: monkeys and gorillas 164
15.4.1 Clumsy monkeys 165
15.4.2 Semi-intelligent monkeys 166
15.4.3 Clever monkeys 166
15.5 The Substance of Using Testing Tools and Automation 168
15.6 Summary 168
15.7 Quizzes 169
Chapter 16 Defect Bombing and Beta Testing 170
16.1 Letting Others Test Your Software 170
16.2 Test Sharing 171
16.3 beta testing 172
16.4 Outsourced testing 173
16.5 Summary 173
16.6 Quizzes 174
Part V Using Test Documents
Chapter 17 Planning the Test Effort 177
17.1 Objectives of a Test Plan 177
17.2 Test Plan Topics 178
17.2.1 Advanced Expectations 178
17.2.2 People, places and things 179
17.2.3 Definitions 179
17.2.4 Responsibilities between teams 180
17.2.5 What to test and what not to test 182
17.2.6 Phases of testing 182
17.2.7 Testing Strategies 182
17.2.8 Resource requirements 183
17.2.9 Assignment of Testers 183
17.2.10 Test progress 183
17.2.11 Test cases 185
17.2.12 Software defect reports 185
17.2.13 Metrics and statistics 185
17.2.14 Risks and issues 185
17.3 Summary 185
17.4 Quizzes 186
Chapter 18 Writing and Tracking Test Cases 187
18.1 Objectives of a Test Case Plan 187
18.2 Test Case Plan Overview 188
18.2.1 Test design 189
18.2.2 Test cases 191
18.2.3 Test program 192
18.3 Test Case Organization and Tracking 194
18.4 Summary 195
18.5 Quizzes 195
Chapter 19 Findings of the report 197
19.1 Trying to fix software defects 198
19.2 Isolating and reproducing software defects 200
19.3 Not All Software Defects Are Born Equal 202
19.4 Software Defect Life Cycle 203
19.5 Software Defect Tracking System 205
19.5.1 Standard: test event reports 205
19.5.2 Manual Software Defect Reporting and Tracking 206
19.5.3 Automating Software Defect Reporting and Tracking 206
19.6 Summary 210
19.7 Quizzes 211
Chapter 20 Effectiveness evaluation 212
20.1 Using Information from a Software Defect Tracking Database 212
20.2 Metrics used in routine testing 213
20.3 Common Project-Level Metrics 216
20.4 Summary 220
20.5 Quizzes 221
Part VI The Future of Software Testing
Chapter 21 Software quality assurance 225
21.1 Quality is free 225
21.2 Testing and quality assurance at the work site 226
21.2.1 Software testing 226
21.2.2 Quality assurance 227
21.2.3 Other names for the software testing team 228
21.3 Management and organization of testing 228
21.4 Capability Maturity Model (CMM) 230
21.5 IS0 9000 232
21.6 Summary 233
21.7 Quizzes 233
Chapter 22 Careers for Software Testers 234
22.1 The Job of a Software Tester 234
22.2 Seeking a Software Testing Position 235
22.3 Access to first-hand experience 236
22.4 Formal training opportunities
22.5 Website 237
22.6 Professional organizations specializing in software and software quality 238
22.7 Further Reading 238
22.8 Summary 239
22.9 Quizzes 240
Appendix A Quiz Questions and Answers 241
Chapter 1 Background on Software Testing 3
1.1 Notorious Software Error Use Case Study 3
1.1.1 Disney's The Lion King, 1994-1995 3
1.1.2 Intel Pentium Floating-Point Division Defects, 1994 4
1.1.3 NASA Mars Polar Lander Rover, 1999 4
1.1.4 Patriot Missile Defense System, 1991 5
1.1.5 The millennium bug problem, circa 1974 5
1.1.6 Hazard anticipation, 2004 5
1.2 What are software defects 6
1.2.1 Terminology for software failure 6
1.2.2 Official Definition of Software Defects 7
1.3 Why Software Defects Occur 8
1.4 Cost of fixing software defects 9
1.5 What Software Testers Really Do 10
1.6 Qualities of a good software tester 10
1.7 Summary 11
1.8 Quiz 12
Chapter 2 The Software Development Process 13
2.1 Components of the product 13
2.1.1 How much input is required for a software product 13
2.1.2 What a software product consists of 16
2.2 Software project members
2.3 Software Development Life Cycle Model 18
2.3.1 The Big Bang model 18
2.3.2 Write-as-you-go model 19
2.3.3 Waterfall model 20
2.3.4 Spiral model 21
2.4 Summary 22
2.5 Quiz 22
Chapter 3 The Substance of Software Testing 23
3.1 Principles of Testing 23
3.1.1 It is impossible to test a program completely 23
3.1.2 Software Testing is a Risky Behavior 24
3.1.3 Testing fails to reveal latent software defects 24
3.1.4 More software defects found means more software defects 25
3.1.5 Pesticide quirks 25
3.1.6 Not all software defects need to be fixed 26
3.1.7 It is difficult to say when a defect is a defect 27
3.1.8 Product specifications never have a final version 28
3.1.9 Software testers are unpopular in product teams 28
3.1.10 Software testing as a structured technical profession 28
3.2 Software Testing Terms and Definitions 29
3.2.1 Precision and accuracy 29
3.2.2 Confirmation and validation 30
3.2.3 Quality and reliability
3.2.4 Testing and Quality Assurance (QA) 30
3.3 Summary 31
3.4 Quizzes 31
Part II Testing Fundamentals
Chapter 4 Checking the product manual 35
4.1 Starting the test 35
4.1.1 Black-box and white-box testing 36
4.1.2 Static and Dynamic Testing 37
4.1.3 Static Black Box Testing, Test Product Specifications 37
4.2 High-level review of product specifications 37
4.2.1 Assuming one's self as a client 38
4.2.2 Study of existing standards and norms 38
4.2.3 Review and testing of similar software 39
4.3 Low-Level Testing Techniques for Product Specifications 39
4.3.1 Product specification attribute checklist 39
4.3.2 Checklist for product specification terminology 40
4.4 Summary 40
4.5 Quiz 40
Chapter 5 Testing the Software with a Blindfold 42
5.1 Dynamic black-box testing: testing software with a blindfold on 42
5.2 Passage and Failure Tests 43
5.3 Classification of equivalence
5.4 Data testing
5.4.1 Boundary conditions 47
5.4.2 Sub-boundary conditions 49
5.4.3 Default, Blank, Null, Zero, and None 51
5.4.4 Illegal, erroneous, incorrect and garbage data 52
5.5 Status Testing 53
5.5.1 Logical flow of test software 54
5.5.2 Failed State Testing 57
5.6 Other Black Box Testing Techniques 58
5.6.1 Doing it like a clumsy user 58
5.6.2 Looking Again Where Software Defects Have Been Found 59
5.6.3 Thinking like a hacker 59
5.6.4 Experience, intuition and hunches 59
5.7 Summary 59
5.8 Quiz 60
Chapter 6 Checking the Code 61
6.1 Static white box testing: checking the design and code 61
6.2 Formal review
6.2.1 Colleague review
6.2.2 Walk-through 63
6.2.3 Testing 63
6.3 Coding standards and norms 64
6.3.1 Examples of Programming Standards and Specifications 64
6.3.2 Acquisition criteria
6.4 Generic Code Review Checklist 66
6.4.1 Data referencing errors 66
6.4.2 Data declaration errors 67
6.4.3 Calculation errors 67
6.4.4 Comparison errors 67
6.4.5 Control process errors 68
6.4.6 Subroutine parameter errors 68
6.4.7 Input/output errors 68
6.4.8 Other inspections
6.5 Summary 69
6.6 Quizzes 69
Chapter 7 Testing Software with X-Ray Glasses 70
7.1 Dynamic White Box Testing 70
7.2 Dynamic White Box Testing and Debugging 71
7.3 Segmentation testing
7.3.1 Unit and Integration Testing 72
7.3.2 Unit Test Example 74
7.4 Data coverage
7.4.1 Data flow 76
7.4.2 Sub-boundaries 76
7.4.3 Formulas and equations 77
7.4.4 Error Coercion 77
7.5 Code Coverage 78
7.5.1 Program Statements and Line-of-Code Overrides 79
7.5.2 Branch Coverage 79
7.5.3 Conditional overrides 80
7.6 Summary
7.7 Quiz 81
Part III. Utilizing Testing Techniques
Chapter 8 Configuration Testing 85
8.1 Overview of Configuration Testing 85
8.1.1 Separation of configuration defects 88
8.1.2 Calculation of workload 89
8.2 Implementation of mandates
8.2.1 Determining the type of hardware required 90
8.2.2 Determining which vendors' hardware, models, and drivers are available 90
8.2.3 Identifying possible hardware features, modes and options 91
8.2.4 Reducing defined hardware configurations to a manageable range 91
8.2.5 Clarifying Software Unique Characteristics Related to Hardware Configuration 92
8.2.6 Designing Test Cases to Execute in Each Configuration 93
8.2.7 Executing Tests in Each Configuration 93
8.2.8 Repeat testing until the group is satisfied with the results 93
8.3 Obtaining Hardware 93
8.4 Clarifying hardware standards 94
8.5 Configuration tests on other hardware 95
8.6 Summary 95
8.7 Quizzes 95
Chapter 9 Compatibility Testing 96
9.1 Overview of compatibility testing 96
9.2 Platform and application versions 97
9.2.1 Backward and forward compatibility 97
9.2.2 Testing the impact of multiple versions 98
9.3 Standards and norms
9.3.1 Advanced standards and norms 99
9.3.2 Low-level standards and norms 100
9.4 Data-sharing compatibility 100
9.5 Summary 102
9.6 Quizzes 102
Chapter 10 Foreign language tests
10.1 Making sense of words and pictures 103
10.2 Translation issues
10.2.1 Text extensions 104
10.2.2 ASCll, DBCS and Unicode 105
10.2.3 Hotkeys and Shortcuts 105
10.2.4 Extended Characters 106
10.2.5 Character Counting 106
10.2.6 Reading from left to right and right to left 107
10.2.7 Text in Graphics 107
10.2.8 Detaching text from code 107
10.3 Localization issues
10.3.1 Content 108
10.3.2 Data format 109
10.4 Configuration and compatibility issues 110
10.4.1 Foreign Platform Configuration 110
10.4.2 Data compatibility 111
10.5 How much to test 112
10.6 Summary 113
10.7 Quizzes 113
Chapter 11 Ease-of-Use Testing 114
11.1 User Interface Testing 114
11.2 What makes a good UI 115
11.2.1 Conformity with standards and norms 115
11.2.2 Intuitive 116
11.2.3 Unanimously 117
11.2.4 Flexibility 117
11.2.5 Comfort 118
11.2.6 Correct 118
11.2.7 Practical 119
11.3 Testing for persons with disability impairments: the assistive options test 119
11.3.1 Legal requirements
11.3.2 Ancillary features in software 120
11.4 Summary 122
11.5 Quizzes 122
Chapter 12 Test Documentation 123
12.1 Types of Software Documentation 123
12.2 Importance of Documentation Testing 125
12.3 What to look for when reviewing documentation 126
12.4 The essence of document testing 127
12.5 Summary 127
12.6 Quizzes 127
Chapter 13 Software Security Testing 129
13.1 War games - movies 129
13.2 Understanding motivation
13.3 Threat model analysis 131
13.4 Is Software Security a Feature? Is a Software Vulnerability a Flaw 134
13.5 Understanding Buffer Overflows 134
13.6 Using Safe String Functions 135
13.7 Computer forensics 137
13.8 Summary 139
13.9 Quizzes 139
Chapter 14 Web Site Testing 141
14.1 Web page fundamentals 141
14.2 Black Box Testing 142
14.2.1 Text 143
14.2.2 Hyperlinks 144
14.2.3 Pictures 145
14.2.4 Forms 145
14.2.5 Objects and various other simple functions 145
14.3 Gray Box Testing 146
14.4 White Box Testing 147
14.5 Configuration and Compatibility Testing 148
14.6 Ease of use tests 149
14.7 Introduction to Automated Testing 151
14.8 Summary 151
14.9 Quizzes 151
Part IV. Additions to the test
Chapter 15 Automated Testing and Testing Tools 155
15.1 Benefits of tools and automation 155
15.2 Testing tools 156
15.2.1 Viewers and monitors 156
15.2.2 Drivers 157
15.2.3 Piles 158
15.2.4 Stress and Load Tools 159
15.2.5 Interference injectors and noise generators 159
15.2.6 Analytical tools 160
15.3 Software Test Automation 160
15.3.1 Macro Recording and Playback 161
15.3.2 Programmable Macros 162
15.3.3 Fully Programmable Automated Testing Tools 163
15.4 Randomized testing: monkeys and gorillas 164
15.4.1 Clumsy monkeys 165
15.4.2 Semi-intelligent monkeys 166
15.4.3 Clever monkeys 166
15.5 The Substance of Using Testing Tools and Automation 168
15.6 Summary 168
15.7 Quizzes 169
Chapter 16 Defect Bombing and Beta Testing 170
16.1 Letting Others Test Your Software 170
16.2 Test Sharing 171
16.3 beta testing 172
16.4 Outsourced testing 173
16.5 Summary 173
16.6 Quizzes 174
Part V Using Test Documents
Chapter 17 Planning the Test Effort 177
17.1 Objectives of a Test Plan 177
17.2 Test Plan Topics 178
17.2.1 Advanced Expectations 178
17.2.2 People, places and things 179
17.2.3 Definitions 179
17.2.4 Responsibilities between teams 180
17.2.5 What to test and what not to test 182
17.2.6 Phases of testing 182
17.2.7 Testing Strategies 182
17.2.8 Resource requirements 183
17.2.9 Assignment of Testers 183
17.2.10 Test progress 183
17.2.11 Test cases 185
17.2.12 Software defect reports 185
17.2.13 Metrics and statistics 185
17.2.14 Risks and issues 185
17.3 Summary 185
17.4 Quizzes 186
Chapter 18 Writing and Tracking Test Cases 187
18.1 Objectives of a Test Case Plan 187
18.2 Test Case Plan Overview 188
18.2.1 Test design 189
18.2.2 Test cases 191
18.2.3 Test program 192
18.3 Test Case Organization and Tracking 194
18.4 Summary 195
18.5 Quizzes 195
Chapter 19 Findings of the report 197
19.1 Trying to fix software defects 198
19.2 Isolating and reproducing software defects 200
19.3 Not All Software Defects Are Born Equal 202
19.4 Software Defect Life Cycle 203
19.5 Software Defect Tracking System 205
19.5.1 Standard: test event reports 205
19.5.2 Manual Software Defect Reporting and Tracking 206
19.5.3 Automating Software Defect Reporting and Tracking 206
19.6 Summary 210
19.7 Quizzes 211
Chapter 20 Effectiveness evaluation 212
20.1 Using Information from a Software Defect Tracking Database 212
20.2 Metrics used in routine testing 213
20.3 Common Project-Level Metrics 216
20.4 Summary 220
20.5 Quizzes 221
Part VI The Future of Software Testing
Chapter 21 Software quality assurance 225
21.1 Quality is free 225
21.2 Testing and quality assurance at the work site 226
21.2.1 Software testing 226
21.2.2 Quality assurance 227
21.2.3 Other names for the software testing team 228
21.3 Management and organization of testing 228
21.4 Capability Maturity Model (CMM) 230
21.5 IS0 9000 232
21.6 Summary 233
21.7 Quizzes 233
Chapter 22 Careers for Software Testers 234
22.1 The Job of a Software Tester 234
22.2 Seeking a Software Testing Position 235
22.3 Access to first-hand experience 236
22.4 Formal training opportunities
22.5 Website 237
22.6 Professional organizations specializing in software and software quality 238
22.7 Further Reading 238
22.8 Summary 239
22.9 Quizzes 240
Appendix A Quiz Questions and Answers 241