Controversy! After writing the Customer Tests section of The Art of Agile Development, I had a change of heart. I used to be a major advocate for customer testing--what people are now calling "Acceptance Test-Driven Development," or ATDD. In fact, I was the project coordinator for Ward Cunningham's Fit, the first major customer testing tool. But I no longer use or recommend it.
Why not? I explain the details in my Problems With Acceptance Testing blog entry, but the short-short version is that automated customer tests just don't work well over the long term. In the short term they're great. In the long-term, the tests become a major maintenance burden, and the tools tend to get in the way of customer collaboration rather than enhance it.
Luckily, I'm not a complete idiot. (Or Shane isn't. Hmm.) What we wrote in the book is still accurate, even though we wrote it before my change of heart. Shane and I actually highlight the problems in the "Contraindications" subsection. If I could do it over again, though, I'd call this practice "Customer Examples" rather than "Customer Tests." I'd focus on communication even more. I'd come up with some better examples. And I'd leave out the "Automating the Examples" subsection. But what we have in the book, other than the automation subsection, is still good advice.
Next week, I'm planning to post Is XP Right For Us? from Chapter 3. All of the practices we recommend so confidently in the rest of the book rely on an important set of assumptions that are described in that section. I figured it would be useful to put those assumptions online now that so much of the rest of the book is up. If you'd prefer something else, make your case in the comments, as usual.
See you next week!