Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing

Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing

by Elisabeth Hendrickson


View All Available Formats & Editions
Choose Expedited Shipping at checkout for delivery by Thursday, May 20


Uncover surprises, risks, and potentially serious bugs with exploratory testing. Rather than designing all tests in advance, explorers design and execute small, rapid experiments, using what they learned from the last little experiment to inform the next. Learn essential skills of a master explorer, including how to analyze software to discover key points of vulnerability, how to design experiments on the fly, how to hone your observation skills, and how to focus your efforts.

Software is full of surprises. No matter how careful or skilled you are, when you create software it can behave differently than you intended. Exploratory testing mitigates those risks.

Part 1 introduces the core, essential skills of a master explorer. You'll learn to craft charters to guide your exploration, to observe what's really happening (hint: it's harder than it sounds), to identify interesting variations, and to determine what expected behavior should be when exercising software in unexpected ways.

Part 2 builds on that foundation. You'll learn how to explore by varying interactions, sequences, data, timing, and configurations. Along the way you'll see how to incorporate analysis techniques like state modeling, data modeling, and defining context diagrams into your explorer's arsenal.

Part 3 brings the techniques back into the context of a software project. You'll apply the skills and techniques in a variety of contexts and integrate exploration into the development cycle from the very beginning.

You can apply the techniques in this book to any kind of software. Whether you work on embedded systems, Web applications, desktop applications, APIs, or something else, you'll find this book contains a wealth of concrete and practical advice about exploring your software to discover its capabilities, limitations, and risks.

Product Details

ISBN-13: 9781937785024
Publisher: The Pragmatic Programmers, LLC
Publication date: 02/27/2013
Pages: 186
Sales rank: 1,072,417
Product dimensions: 7.40(w) x 8.90(h) x 0.60(d)

About the Author

Elisabeth Hendrickson is a tester, developer, and Agile enabler. A seasoned veteran, she wrote her first line of code in 1980, and almost immediately found her first bug. In 2010 she won the prestigious Gordon Pask Award from the Agile Alliance. She is best known for her Google Tech Talk on Agile Testing as well as her wildly popular Test Heuristics Cheatsheet. She splits her time between teaching, speaking, writing, programming, and working on Agile teams that value her obsession with testing.

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

Customer Reviews