Table of Contents
Foreword xi
Acknowledgments xiii
Preface xv
Part I Establishing Foundations
1 On Testing and Exploration 3
1.1 Two Sides of Testing 4
1.2 Essential Elements of Exploratory Testing 6
1.3 Working in Time-Boxed Sessions 7
1.4 Practice Sessions 8
2 Charter Your Explorations 11
2.1 Chartering the Expedition 11
2.2 A Simple Charter Template 13
2.3 Good Charters 15
2.4 Generating Charters 16
2.5 The Nightmare Headline Game 21
2.6 Planning Charters 24
2.7 Practice Sessions 24
3 Observe the Details 25
3.1 But Did You See the Moonwalking Bear? 25
3.2 Digging Deeper 27
3.3 Testability and Making the Invisible Visible 30
3.4 Consoles and Logs 31
3.5 Practice Sessions 32
4 Find Interesting Variations 33
4.1 Variables Are Things That Vary 34
4.2 Subtle Variables, Big Disasters 36
4.3 Identifying Variables 38
4.4 Variables! They're Everywhere! 44
4.5 Practice Sessions 44
5 Evaluate Results 47
5.1 Never and Always 48
5.2 Alternative Resources 50
5.3 Approximations 52
5.4 Practice Sessions 55
Part II Adding Dimensions
6 Vary Sequences and Interactions 59
6.1 Nouns and Verbs 60
6.2 Random Navigation 62
6.3 Personas 63
6.4 Practice Sessions 64
7 Explore Entities and Their Relationships 67
7.1 Recognizing Entities, Attributes, and Dependencies 67
7.2 CRUD: Create, Read, Update, Delete 70
7.3 Following the Data 73
7.4 Practice Sessions 73
8 Discover States and Transitions 75
8.1 Recognizing States and Events 76
8.2 Diagramming a State Model 78
8.3 Exploring with State Models 80
8.4 Changing the Representation: State Tables 82
8.5 Practice Sessions 85
9 Explore the Ecosystem 87
9.1 Diagramming the Ecosystem 87
9.2 Trust Boundaries 92
9.3 What If? 93
9.4 Follow the Data 95
9.5 Practice Sessions 96
Part III Putting it in Context
10 Explore When There Is No User Interface 99
10.1 Exploring an API 100
10.2 Exploring a Programming Language 102
10.3 Exploring a Web Service 104
10.4 Characterizing Bugs 106
10.5 Practice Sessions 107
11 Explore an Existing System 109
11.1 Starting with a Recon Session 109
11.2 Sharing Observations 112
11.3 Interviewing Stakeholders to Gather Questions 114
11.4 Selecting Techniques 116
11.5 Recording Your Findings 116
11.6 What About the Dreaded Unreproducible Bugs? 117
11.7 Practice Sessions 119
12 Explore Requirements 121
12.1 Getting into the Requirements Meeting 122
12.2 In the Requirements Meeting 125
12.3 Charter During Requirements Discussions 128
12.4 Active Reading 130
12.5 Practice Sessions 132
13 Integrate Exploration Throughout 133
13.1 Exploring as Part of Your Test Strategy 133
13.2 Paired Exploration 137
13.3 Discovering Systemic Sources of Problems 138
13.4 Estimating Exploration 140
13.5 How to Tell When You Have Explored Enough 141
13.6 Debriefing Stakeholders 142
13.7 Capturing Useful Nuggets of Wisdom 144
13.8 Practice Sessions 145
A1 Interviewing for Exploratory Testing Skills 147
A1.1 Paired Exploratory Testing as Part of an Interview 148
A1.2 Assessing the Candidates 150
A2 Test Heuristics Cheat Sheet 151
A2.1 General Heuristics 151
A2.2 Web Heuristics 156
Bibliography 157
Index 159