| Foreword |
|
xv | |
| Preface |
|
xvii | |
| Acknowledgments |
|
xix | |
| Part I The XP Tester Role |
|
1 | (38) |
|
|
|
3 | (8) |
|
|
|
3 | (1) |
|
|
|
4 | (2) |
|
|
|
4 | (1) |
|
|
|
5 | (1) |
|
|
|
5 | (1) |
|
|
|
6 | (1) |
|
How XP Solves Testing and Quality Assurance Problems |
|
|
6 | (2) |
|
System and Acceptance Testing Resources Wasted on Unit- and Integration-Level Bugs |
|
|
7 | (1) |
|
Missing and Out-of-Date Requirements |
|
|
7 | (1) |
|
Huge Gaps between the System and User Expectations |
|
|
8 | (1) |
|
Wolves in Sheep's Clothing |
|
|
8 | (1) |
|
|
|
9 | (2) |
|
Why XP Teams Need Testers |
|
|
11 | (6) |
|
|
|
11 | (1) |
|
The Tester's Contribution, Illustrated |
|
|
12 | (2) |
|
|
|
14 | (1) |
|
|
|
15 | (2) |
|
How XP Teams Benefit from Having Testers |
|
|
17 | (6) |
|
|
|
18 | (1) |
|
Acceptance Tests versus Unit Tests |
|
|
19 | (1) |
|
Navigating for XP Projects |
|
|
20 | (1) |
|
|
|
21 | (2) |
|
|
|
23 | (6) |
|
|
|
24 | (1) |
|
|
|
25 | (1) |
|
|
|
26 | (1) |
|
|
|
27 | (1) |
|
|
|
28 | (1) |
|
Overview of the XP Tester Role |
|
|
29 | (6) |
|
XP Tester's Bill of Rights |
|
|
31 | (1) |
|
|
|
32 | (1) |
|
|
|
33 | (2) |
|
|
|
35 | (4) |
|
|
|
35 | (2) |
|
|
|
37 | (1) |
|
Who Is Responsible for Quality? |
|
|
37 | (1) |
|
|
|
38 | (1) |
| Part II Test Drive through an XP Project |
|
39 | (162) |
|
User Stories and Release Planning |
|
|
41 | (6) |
|
The Tester's Role in Up-Front Activities |
|
|
42 | (1) |
|
Goals of Up-Front Tester Activities |
|
|
43 | (2) |
|
|
|
45 | (1) |
|
|
|
45 | (2) |
|
Identifying Hidden Assumptions |
|
|
47 | (8) |
|
A Process for Finding Hidden Assumptions |
|
|
47 | (6) |
|
|
|
49 | (4) |
|
|
|
53 | (1) |
|
|
|
53 | (2) |
|
Introducing the XTrack Application |
|
|
53 | (2) |
|
Defining High-Level Acceptance Tests |
|
|
55 | (6) |
|
Basic Acceptance Test Definitions |
|
|
56 | (3) |
|
|
|
56 | (2) |
|
|
|
58 | (1) |
|
|
|
59 | (1) |
|
|
|
60 | (1) |
|
High-Level Acceptance Test Estimates |
|
|
61 | (10) |
|
Ways to Estimate Acceptance-Test Effort |
|
|
63 | (5) |
|
|
|
63 | (1) |
|
|
|
63 | (1) |
|
A More Detailed Estimating Method |
|
|
64 | (1) |
|
|
|
65 | (3) |
|
|
|
68 | (1) |
|
|
|
69 | (2) |
|
Enabling Accurate Estimates during Release Planning |
|
|
71 | (6) |
|
Why We Care about Estimates |
|
|
71 | (1) |
|
How You Can Improve Estimate Accuracy |
|
|
72 | (2) |
|
|
|
74 | (1) |
|
|
|
74 | (3) |
|
Planning the First Iteration |
|
|
77 | (6) |
|
Overview of Iteration Planning |
|
|
78 | (1) |
|
The Tester's Role in Iteration Planning |
|
|
78 | (3) |
|
Thinking of All the Tasks |
|
|
79 | (1) |
|
|
|
80 | (1) |
|
|
|
81 | (1) |
|
|
|
82 | (1) |
|
Defining and Estimating Testing and Test Infrastructure Tasks |
|
|
83 | (10) |
|
Identifying and Estimating Test Infrastructure Tasks |
|
|
84 | (1) |
|
Identifying and Estimating Functional and Acceptance Testing Tasks |
|
|
85 | (2) |
|
A Note on Separate Test Teams |
|
|
87 | (5) |
|
|
|
88 | (1) |
|
Test Infrastructure Tasks |
|
|
89 | (1) |
|
|
|
90 | (2) |
|
|
|
92 | (1) |
|
|
|
92 | (1) |
|
Acceptance Tests and Quality |
|
|
93 | (6) |
|
|
|
94 | (1) |
|
Internal and External Quality |
|
|
95 | (1) |
|
|
|
96 | (1) |
|
|
|
97 | (2) |
|
|
|
99 | (10) |
|
Picking the Customer's Brain (and the Programmers'!) |
|
|
100 | (1) |
|
The Good, the Bad, and the Ugly |
|
|
101 | (3) |
|
|
|
102 | (2) |
|
|
|
104 | (1) |
|
|
|
105 | (1) |
|
|
|
105 | (1) |
|
|
|
106 | (1) |
|
|
|
107 | (2) |
|
|
|
109 | (10) |
|
|
|
110 | (3) |
|
If You Have Trouble Getting Started |
|
|
113 | (3) |
|
|
|
116 | (1) |
|
|
|
116 | (3) |
|
Organizing Acceptance Tests |
|
|
119 | (6) |
|
Version Control of Acceptance Tests |
|
|
119 | (1) |
|
|
|
120 | (1) |
|
Organizing Acceptance Tests in Spreadsheets |
|
|
121 | (2) |
|
|
|
123 | (1) |
|
|
|
124 | (1) |
|
Test Design and Refactoring |
|
|
125 | (6) |
|
Establishing the Initial System State |
|
|
125 | (1) |
|
Tests That Leave the System State Unchanged |
|
|
126 | (2) |
|
|
|
128 | (1) |
|
|
|
129 | (1) |
|
|
|
130 | (1) |
|
|
|
131 | (2) |
|
|
|
131 | (1) |
|
|
|
131 | (2) |
|
|
|
133 | (6) |
|
Manual Tests Are Unreliable |
|
|
134 | (1) |
|
Manual Tests Undermine the XP Testing Practice |
|
|
134 | (1) |
|
Manual Tests Are Divisive |
|
|
135 | (1) |
|
The Wings-Fall-Off Button |
|
|
135 | (1) |
|
What If You Have Manual Tests? |
|
|
136 | (1) |
|
|
|
136 | (1) |
|
|
|
137 | (2) |
|
|
|
139 | (8) |
|
|
|
141 | (1) |
|
|
|
142 | (1) |
|
|
|
143 | (1) |
|
|
|
144 | (1) |
|
|
|
145 | (2) |
|
Making Executable Tests Run |
|
|
147 | (10) |
|
Linking the Executable Test to an Application Test Class |
|
|
148 | (1) |
|
Defining the Application Test Class |
|
|
149 | (1) |
|
Calling the Code to be Tested |
|
|
150 | (1) |
|
|
|
150 | (2) |
|
Getting Additional Tests to Run |
|
|
152 | (2) |
|
Combining Multiple Tests into Test Suites |
|
|
154 | (1) |
|
|
|
155 | (1) |
|
|
|
156 | (1) |
|
Running Executable Tests through Other Interfaces |
|
|
157 | (12) |
|
Code Missed by Direct Calls |
|
|
158 | (1) |
|
Expanding Coverage of the Executable Tests |
|
|
158 | (1) |
|
Interfacing to a Test Tool |
|
|
159 | (1) |
|
Creating an Application Test-Interface Class |
|
|
160 | (1) |
|
Refactoring the Direct-Call Interface |
|
|
161 | (1) |
|
Refactoring the Application Test Class |
|
|
162 | (2) |
|
Creating a Tool-Specific Interface Class |
|
|
164 | (2) |
|
One Team's Experience with Direct-Call Test Automation |
|
|
166 | (1) |
|
|
|
167 | (1) |
|
|
|
168 | (1) |
|
Driving the System with a Test Tool |
|
|
169 | (8) |
|
|
|
170 | (1) |
|
|
|
170 | (1) |
|
|
|
171 | (2) |
|
|
|
173 | (2) |
|
|
|
175 | (1) |
|
|
|
176 | (1) |
|
Bugs on the Windshield: Running Acceptance Tests |
|
|
177 | (8) |
|
How Often Do You Run Acceptance Tests? |
|
|
177 | (3) |
|
|
|
180 | (1) |
|
|
|
181 | (1) |
|
|
|
181 | (1) |
|
|
|
182 | (1) |
|
|
|
183 | (1) |
|
|
|
183 | (2) |
|
Looking Back for the Future |
|
|
185 | (8) |
|
|
|
191 | (1) |
|
|
|
192 | (1) |
|
Keep On Truckin': Completing the XP Road Trip |
|
|
193 | (8) |
|
|
|
194 | (1) |
|
|
|
195 | (1) |
|
|
|
196 | (1) |
|
|
|
196 | (1) |
|
|
|
197 | (1) |
|
|
|
198 | (1) |
|
|
|
199 | (2) |
| Part III Road Hazard Survival Kit |
|
201 | (50) |
|
Challenges in ``Testability'' |
|
|
203 | (4) |
|
Designing for Testability |
|
|
203 | (1) |
|
|
|
204 | (2) |
|
|
|
206 | (1) |
|
|
|
206 | (1) |
|
Selecting and Implementing Tools |
|
|
207 | (8) |
|
|
|
208 | (1) |
|
|
|
208 | (1) |
|
Other Tools Related to Quality |
|
|
209 | (1) |
|
Choosing an Off-the-Shelf Tool |
|
|
210 | (1) |
|
|
|
211 | (1) |
|
|
|
211 | (2) |
|
|
|
213 | (2) |
|
|
|
215 | (10) |
|
|
|
215 | (1) |
|
|
|
216 | (3) |
|
|
|
216 | (1) |
|
|
|
217 | (1) |
|
|
|
218 | (1) |
|
|
|
218 | (1) |
|
|
|
219 | (2) |
|
|
|
221 | (1) |
|
Other Obvious Best Practices |
|
|
222 | (1) |
|
|
|
222 | (1) |
|
|
|
222 | (3) |
|
Introducing XP to Your Organization: A Tester's Point of View |
|
|
225 | (10) |
|
Test Phases and Practices |
|
|
227 | (1) |
|
Introducing People to the XP Tester Role |
|
|
228 | (1) |
|
Helping XP Testers Succeed |
|
|
228 | (1) |
|
XP Testing with Blended Practices |
|
|
229 | (3) |
|
What If You Don't Have Enough Testers? |
|
|
232 | (1) |
|
|
|
233 | (2) |
|
XP for Projects of Unusual Size |
|
|
235 | (6) |
|
|
|
235 | (1) |
|
Advance Planning Pays Off |
|
|
236 | (1) |
|
|
|
237 | (1) |
|
Satisfying Customer Test Documentation Requirements |
|
|
238 | (1) |
|
Iteration Planning and Execution for Large or Multilocation Projects |
|
|
239 | (1) |
|
|
|
240 | (1) |
|
Extreme Testing without Extreme Programming |
|
|
241 | (8) |
|
|
|
242 | (1) |
|
|
|
243 | (1) |
|
Planning and Defining Tests |
|
|
243 | (1) |
|
|
|
244 | (1) |
|
|
|
245 | (1) |
|
|
|
246 | (1) |
|
|
|
247 | (2) |
|
In Closing: May the Road Rise Up to Meet You |
|
|
249 | (2) |
| Answers to Exercises |
|
251 | (36) |
| Bibliography |
|
287 | (4) |
| Afterword |
|
291 | (2) |
| Index |
|
293 | |