Sie sind auf Seite 1von 6

Contents

An Extremely Subjective Foreword 9

A Global Foreword 11

1 Rapid Application Testing 13


1.1 Everything Is in Flux 13
1.1.1 Software Development as a Game 13
1.1.2 The Art of Getting a Program to Crash 14
1.1.3 Error Weighting 15
1.2 The Rapid in Rapid Application Testing 16
1.2.1 Integrated Testing 17
1.2.2 All Good Things Take Time 18
1.3 Testers and Developers 19
1.3.1 The Way Things Stand 19
1.3.2 Theory and Practice 20
1.3.3 Self-Awareness 21
1.3.4 And the Winner Is ... 23
1.4 Ideas, Techniques and Tools 23

2 Testing: an Overview 25
2.1 What is Software Quality? 25
2.1.1 Possible Definitions 25
2.1.2 New Approaches to Quality 28
2.2 The Overall Course of a Test 29
2.2.1 Planning 30
2.2.2 Execution 32
2.2.3 Evaluation 33
2.3 What is to be done with the test results? 35
2.3.1 Checking 36
2.3.2 List of known errors 38
2.4 Testing Strategies 38
2.4.1 Exploratory Testing 38
2.4.2 Testing and Improving (Testing and Tuning) 39
2.4.3 Automated Testing 40
2.4.4 Testing by Using 43
2.4.5 Testing by Documenting 45
2.4.6 Regression Testing 45
2.4.7 Smoke Tests 46
2.4.8 Embedded Testing 47
2.4.9 Live Testing 48

Contents 3
2.5 Testing Methods 49
2.5.1 Black Box Testing 49
2.5.2 White Box Testing 50
2.5.3 Gray Box tests 50
2.6 Types of Functional and Structural Tests 51
2.6.1 Requirements-Based Testing 51
2.6.2 Design-Based Testing 53
2.6.3 Code-Based Testing 53
2.6.4 Performance Testing 54
2.6.5 Stress Testing 54
2.6.6 Robustness Testing 54
2.6.7 Long-term Testing 55
2.6.8 Installation Testing 55
2.6.9 Security Testing 55
2.7 Testing Types with Various Input Data 56
2.7.1 Random Data Testing 56
2.7.2 Spot Check Testing 56
2.7.3 Boundary Value Testing 57
2.8 Phases of Testing 58
2.8.1 The Classic Test Planning Model 59
2.8.2 Integration of Phases in Rapid Application Testing 64
2.9 Other Quality Assurance Methods 68
2.9.1 Design and Code Reviews 68
2.9.2 Static Code Analysis 69
2.9.3 Model Validation 70

3 Testing in the Real World 71


3.1 Developing and Testing 71
3.1.1 A case study 71
3.2 Risk assessment 84
3.2.1 Setting Priorities 84
3.2.2 Various Risk Types 85
3.2.3 Risk Assessment Based on User Priorities 87
3.2.4 Function/risk matrix 90
3.3 Testing Patterns, Patterns for Debugging 92
3.3.1 Best, Minimal, Maximal and Error Case 92
3.3.2 Equivalence classes 94
3.3.3 Boundary Values 95
3.3.4 Cause and Effect Diagrams, Decision Trees 96
3.4 Unit testing 97
3.4.1 Functional testing 98
3.4.2 Structure testing 104

4 Contents
3.5 Integration Testing 108
3.5.1 Transactions 108
3.5.2 Linking to the Interface 111
3.5.3 Synchronization 111
3.6 System Testing 113
3.6.1 Functional completeness 113
3.6.2 Run-time Behavior 115
3.6.3 Installation 117
3.6.4 Capacity Limitations 119
3.6.5 System problems 120
3.6.6 System Security 121
3.7 Performance Testing 123
3.7.1 System Parameters 123
3.7.2 The Quadratic Effect 125
3.7.3 Stress Testing for Middleware 127
3.7.4 Database Access 129
3.8 Test Coverage 130
3.8.1 Classic Coverage Indices 130
3.8.2 What Information Do Code Coverage Indices Contain? 132
3.8.3 Function Coverage 134
3.8.4 Generating Test Cases on the Basis of Use Cases 135
3.8.5 Test Coverage and Object-Oriented Languages 138
3.8.6 Coverage of System Scenarios 141

4 Methodologies and Tools 147


4.1 Debugging—Another Use Case 147
4.1.1 The Test Case 148
4.1.2 Detecting Bugs 149
4.1.3 Error Accumulation 151
4.1.4 Isolating Bugs 152
4.1.5 Creating Bug Reports 154
4.1.6 Bug fixing 155
4.1.7 Verification 157
4.1.8 Regression Testing 157
4.2 Automating Testing Procedures 158
4.2.1 Integration and Systems Testing 159
4.2.2 Scripting under Windows 162
4.2.3 Unit Test Frameworks 179
4.2.4 Application Interface Testing 189
4.3 Test-driven Application Development 191
4.3.1 Separation of Interface and Implementation 193
4.3.2 Handling Printouts 195
4.3.3 Interface-centric design 196
4.3.4 Design by Contract 197

Contents 5
4.3.5 Test Code 204
4.3.6 Code Instrumentation 205
4.3.7 Audit Trail 206
4.4 Tools 207
4.4.1 File comparison tools, Diff, XML Diff 207
4.4.2 Data Access and Evaluation 208
4.4.3 COM Interactive 210
4.4.4 Code Coverage, Logging, Tracing and Profiling 211
4.4.5 Design by Contract 212
4.4.6 Load and Performance Tests 213
4.4.7 GUI Test Automation 214
4.4.8 Testing Distributed Systems 216

5 Agile Quality Management 217


5.1 Keep It Flexible 217
5.1.1 Individuals and Interactions 218
5.1.2 Working Software 219
5.1.3 Collaboration with the Customer 220
5.1.4 Reaction to Changes 223
5.2 Estimates of Effort 224
5.2.1 Evaluating One’s Own Projects 225
5.2.2 Software Risk Classes 226
5.3 The Test Machine 227
5.3.1 Cloning Hard Drives 227
5.3.2 Virtual Machines 227
5.4 Administering Test Data 228
5.5 Quality Metrics 229
5.5.1 Errors per Area 229
5.5.2 Errors According to Error Type 230
5.5.3 Errors per Unit of Time 230
5.6 Quality Control 231
5.6.1 Bug Tracking Database 231
5.6.2 Bug Reporting 233
5.6.3 Test Case Tracking 233
5.6.4 Test Scripts 236
5.7 Criteria for Concluding Testing 236

6 Internationalization and Localization Testing 239


6.1 Localization and Internationalization 239
6.2 International Planning and Architecture 241
6.2.1 Lack of International Focus in Project Plans 242
6.2.2 Why Native Language Centric Plans are an Issue in Development 243
6.2.3 Why Native Language Centric Plans are an Issue in Testing 244
6.2.4 What the Plan Should Look Like 245

6 Contents
6.3 International Development Issues 247
6.3.1 Problems Working With Strings 247
6.3.2 Problems Working With Dialogs – String Expansion 257
6.3.3 Builds and Installers 261
6.3.4 Achieving Success through Proper Planning and Architecting 267
6.4 Internationalization Testing 271
6.4.1 Start Testing from Day One 271
6.4.2 Testing Your Program’s Installation 273
6.4.3 Testing for Localizable Strings 274
6.4.4 Testing With Foreign Characters 276
6.4.5 Double-Byte Overlapping Characters 280
6.4.6 Keyboards 283
6.4.7 Printing and Paper Sizes 284
6.4.8 Sorting 284
6.4.9 Filtering and Searching functionality 290
6.4.10 Shortcut Keys and Mnemonics 290
6.4.11 Date and Time 292
6.4.12 Currency 294
6.4.13 Numbers 295
6.4.14 Addresses, Postal Codes and Phone Numbers 295
6.4.15 Spelling, Grammar and Other Language Considerations 296
6.4.16 Brand Names and Terminology 298
6.4.17 Asian Text in Programs 299
6.4.18 Databases 300
6.4.19 Seasons 301
6.4.20 Measurements 302
6.4.21 Signs, Symbols and Colors 302
6.5 Conclusion 304

Bibliography 307

Index 315

Contents 7