Introduction 1
About the Second Edition 1
Who Should Use This Book? 2
What This Book Will Do for You 2
Software Necessary to Use This Book 3
How This Book Is Organized 3
Part Ⅰ:The Big Picture 3
Part Ⅱ:Testing Fundamentals 4
Part Ⅲ:Applying Your Testing Skills 4
Part Ⅳ:Supplementing Your Testing 5
Part Ⅴ:Working with Test Documentation 5
Part Ⅵ:The Future 5
Appendix 6
Conventions Used in This Book 6
Part Ⅰ The Big Picture 9
1 Software Testing Background 9
Infamous Software Error Case Studies 9
Disney's Lion King,1994-1995 10
Intel Pentium Floating-Point Division Bug,1994 10
NASA Mars Polar Lander,1999 11
Patriot Missile Defense System,1991 12
The Y2K(Year 2000)Bug,circa 1974 12
Dangerous Viewing Ahead,2004 13
What Is a Bug? 13
Terms for Software Failures 13
Software Bug:A Formal Definition 14
Why Do Bugs Occur? 16
The Cost of Bugs 18
What Exactly Does a Software Tester Do? 19
What Makes a Good Software Tester? 20
Summary 21
Quiz 22
2 The Software Development Process 23
Product Components 23
What Effort Goes Into a Software Product? 24
What Parts Make UP a Software Product? 28
Software Proiect Staff 29
Software Development Lifecycle Models 30
Big-Bang Model 31
Code-and-Fix Model 32
Waterfall Model 33
Spiral Model 34
Summary 36
Quiz 36
3 The Realities of Software Testing 37
Testing Axioms 38
It's Impossible to Test a Program Completely 38
Software Testing Is a Risk-Based Exercise 39
Testing Can't Show That Bugs Don't Exist 40
The More Bugs You Find,the More Bugs There Are 41
The Pesticide Paradox 41
Not All the Bugs You Find Will Be Fixed 42
When a Bug's a Bug Is Difficult to Say 43
Product Specifications Are Never Final 44
Software Testers Aren't the Most Popular Members of a ProjectTeam 45
Software Testing Is a Disciplined Technical Profession 45
SoftwareTestingTerms andDefinitions 46
Precision and Accuracy 46
Verification and Validation 47
Quality and Reliability 48
Testing and Quality Assurance(QA) 48
Summary 49
Quiz 49
Part Ⅱ Testing Fundamentals 53
4 Examining the Specification 53
Getting Started 53
Black-Box and White-Box Testing 55
Static and Dynamic Testing 56
Static Black-Box Testing:Testing the Specification 56
Performing a High-Level Review of the Specification 57
Pretend to Be the Customer 57
Research Existing Standards and Guidelines 58
Review and Test Similar Software 59
Low-Level Specification Test Techniques 60
Specification Attributes Checklist 60
Specification Terminology Checklist 61
Summary 61
Quiz 62
5 Testing the Software with Blinders On 63
Dynamic Black-Box Testing:Testing the Software While Blindfolded 64
Test-to-Pass and Test-to-Fail 66
Equivalence Partitioning 67
Data Testing 70
Boundary Conditions 70
Sub-Boundary Conditions 75
Default,Empty,Blank,Null,Zero,and None 77
Invalid,Wrong,Incorrect,and Garbage Data 78
State Testing 79
Testing the Software's Logic Flow 80
Testing States to Fail 84
Other Black-Box Test Techniques 87
Behave Like a Dumb User 87
Look for Bugs Where You've Already Found Them 88
Think like a Hacker 88
Follow Experience,Intuition,and Hunches 88
Summary 89
Quiz 89
6 Examining the Code 91
Static White-Box Testing:Examining the Design and Code 91
Formal Reviews 92
Peer Reviews 94
Walkthroughs 95
Inspections 95
Coding Standards and Guidelines 96
Examples of Programming Standards and Guidelines 96
Obtaining Standards 98
Generic Code Review Checklist 99
Data Reference Errors 99
Data Declaration Errors 100
Computation Errors 101
Comparison Errors 101
Control Flow Errors 102
Subroutine Parameter Errors 102
Input/Output Errors 102
Other Checks 103
Summary 103
Quiz 104
7 Testing the Software with X-Ray Glasses 105
Dynamic White-Box Testing 106
Dynamic White-Box Testing Versus Debugging 107
Testing the Pieces 108
Unit and Integration Testing 109
An Example of Module Testing 111
Data Coverage 113
Data Flow 114
Sub-Boundaries 115
Formulas and Equations 115
Error Forcing 116
Code Coverage 117
Program Statement and Line Coverage 118
Branch Coverage 119
Condition Coverage 120
Summary 121
Quiz 122
Part Ⅲ Applying Your Testing Skills 125
8 Configuration Testing 125
An Overview of Configuration Testing 126
Isolating Configuration Bugs 129
Sizing Up the Job 131
Approaching the Task 132
Decide the Types of Hardware You'll Need 133
Decide What Hardware Brands,Models,and Device Drivers Are Available 133
Decide Which Hardware Features,Modes,and Options Are Possible 134
Pare Down the Identified Hardware Configurations to a Manageable Set 134
Identify Your Software's Unique Features That Work with the Hardware Configurations 135
Design the Test Cases to Run on Each Configuration 136
Execute the Tests on Each Configuration 137
Rerun the Tests Until the Results Satisfy Your Team 137
Obtaining the Hardware 137
Identifying Hardware Standards 139
Configuration Testing Other Hardware 139
Summary 140
Quiz 140
9 Compatibility Testing 141
Compatibility Testing Overview 142
Platform and Application Versions 143
Backward and Forward Compatibility 144
The hnpact ofTesting Multiple Versions 144
Standards and Guidelines 146
High-Level Standards and Guidelines 147
Low-Level Standards and Guidelines 148
Data Sharing Compatibility 148
Summary 150
Quiz 151
10 Foreign-Language Testing 153
Making the Words and Pictures Make Sense 154
Translation Issues 154
Text Expansion 155
ASCII,DBCS,and Unicode 155
Hot Keys and Shortcuts 156
Extended Characters 157
Computations on Characters 158
Reading Left to Right and Rightto Left 158
Text in Graphics 159
Keep the Text out of the Code 159
Localization Issues 160
Content 160
Data Formats 162
Configuration and Compatibility Issues 163
Foreign Platform Configurations 163
Data Compatibility 165
How Much Should You Test? 166
Summary 167
Quiz 168
11 Usability Testing 169
User Interface Testing 170
What Makes a Good UI? 170
Follows Standards and Guidelines 171
Intuitive 173
Consistent 173
Flexible 175
Comfortable 176
Correct 176
Useful 178
Testing for the Disabled:Accessibility Testing 178
Legal Requirements 179
Accessibility Features in Software 180
Summary 182
Quiz 182
12 Testing the Documentation 183
Types of Software Documentation 183
The Importance of Documentation Testing 187
What to Look for When Reviewing Documentation 188
The Realities of Documentation Testing 189
Summary 190
Quiz 190
13 Testing for Software Security 193
WarGames—the Movie 194
Understanding the Motivation 195
Threat Modeling 197
Is Software Security a Feature?Is Security Vulnerability a Bug? 200
Understanding the Buffer Overrun 201
Using Safe String Functions 203
Computer Forensics 205
Summary 208
Quiz 209
14 Website Testing 211
Web Page Fundamentals 212
Black-Box Testing 213
Text 215
Hyperlinks 216
Graphics 217
Forms 217
Objects and Other Simple Miscellaneous Functionality 218
Gray-Box Testing 218
White-Box Testing 220
Configuration and Compatibility Testing 222
Usability Testing 224
Introducing Automation 226
Summary 227
Quiz 227
Part Ⅳ Supplementing Your Testing 231
15 Automated Testing and Test Tools 231
The Benefits of Automation and Tools 231
Test Tools 233
Viewers and Monitors 234
Drivers 235
Stubs 236
Stress and Load Tools 237
Interference Injectors and Noise Generators 238
Analysis Tools 239
Software Test Automation 239
Macro Recording and Playback 240
Programmed Macros 242
Fully Programmable Automated Testing Tools 243
Random Testing:Monkeys and Gorillas 245
Dumb Monkeys 246
Semi-Smart Monkeys 248
Smart Monkeys 248
Realities of Using Test Tools and Automation 250
Summary 251
Quiz 252
16 Bug Bashes and Beta Testing 253
Having Other People Test Your Software 253
Test Sharing 255
Beta Testing 256
Outsourcing Your Testing 258
Summary 259
Quiz 259
Part Ⅴ Working with Test Documentation 263
17 Planning Your Test Effort 263
The Goal of Test Planning 264
Test Planning Topics 265
High-Level Expectations 265
People,Places,and Things 266
Definitions 267
Inter-Group Responsibilities 268
What Will and Won't Be Tested 270
Test Phases 270
Test Strategy 271
Resource Requirements 271
Tester Assignments 272
Test Schedule 272
Test Cases 274
Bug Reporting 274
Metrics and Statistics 274
Risks and Issues 275
Summary 275
Quiz 275
18 Writing and Tracking Test Cases 277
The Goals of Test Case Planning 277
Test Case Planning Overview 279
Test Design 281
TestCases 283
Test Procedures 285
Test Case Organization and Tracking 287
Summary 289
Quiz 290
19 Reporting What You Find 291
Getting Your Bugs Fixed 292
Isolating and Reproducing Bugs 296
Not All Bugs Are Created Equal 298
A Bug's Life Cycle 300
Bug-Tracking Systems 303
The Standard:The Test Incident Report 303
Manual Bug Reporting and Tracking 304
Automated Bug Reporting and Tracking 306
Summary 310
Quiz 311
20 Measuring Your Success 313
Using the Information in the Bug Tracking Database 314
Metrics That You'll Use in Your Daily Testing 315
Common Project-Level Metrics 320
Summary 325
Quiz 326
Part Ⅵ The Future 329
21 Software Quality Assurance 329
Quality Is Free 330
Testing and Quality Assurance in the Workplace 331
Software Testing 331
Quality Assurance 333
Other Names for Software Testing Groups 334
Test Management and Organizational Structures 335
Capability Maturity Model(CMM) 337
ISO 9000 339
Summary 342
Quiz 342
22 Your Career as a Software Tester 343
Your Job as a Software Tester 344
Finding a Software Testing Position 345
Gaining Hands-On Experience 346
Formal Training Opportunities 348
Websites 349
Professional Organizations Dedicated to Software or Software Quality 350
Further Reading 350
Summary 352
Quiz 353
Appendix 355
A Answers to Quiz Questions 355
Chapter 1 355
Chapter 2 356
Chapter 3 357
Chapter 4 358
Chapter 5 359
Chapter 6 361
Chapter 7 362
Chapter 8 364
Chapter 9 365
Chapter 10 366
Chapter 11 367
Chapter 12 368
Chapter 13 368
Chapter 14 369
Chapter 15 370
Chapter 16 371
Chapter 17 372
Chapter 18 373
Chapter 19 373
Chapter 20 375
Chapter 21 375
Chapter 22 376
Index 377