Developing software with testable requirements is the theme of this book. A
testable requirement is one with an acceptance test. Acceptance tests drive the
development of the software. As many development groups have experienced,
creating acceptance tests prior to implementing requirements decreases defects
and improves productivity. (See the Epilogue for examples.) A triad—the customer/
business analyst, developer, and tester—collaborates on producing these
tests to clarify what is to be done. In creating a high-quality product, ATDD is
as much about this clarification as it is about the actual testing.
As an example, do you have criteria in mind as to whether this book will meet
your needs? If you finish this book, how will you know whether it has met those
criteria? This book represents an implementation of something that should meet
your needs. Because you are reading this book after its completion, you don’t
have an opportunity to influence the acceptance criteria. But let me list the criteria
here and see if this is what you are after.
Within the framework of Acceptance Test-Driven-Development (ATDD), customers, developers, and testers collaborate to create acceptance tests that thoroughly describe how software should work from the customer’s viewpoint. By tightening the links between customers and agile teams, ATDD can significantly improve both software quality and developer productivity.
This is the first start-to-finish, real-world guide to ATDD for every agile project participant. Leading agile consultant Ken Pugh begins with a dialogue among a customer, developer, and tester, explaining the “what, why, where, when, and how” of ATDD and illuminating the experience of participating in it.
Next, Pugh presents a practical, complete reference to each facet of ATDD, from creating simple tests to evaluating their results. He concludes with five diverse case studies, each identifying a realistic set of problems and challenges with proven solutions.
Coverage includes
• How to develop software with fully testable requirements
• How to simplify and componentize tests and use them to identify missing logic
• How to test user interfaces, service implementations, and other tricky elements of a software system
• How to identify requirements that are best handled outside software
• How to present test results, evaluate them, and use them to assess a project’s overall progress
• How to build acceptance tests that are mutually beneficial for development organizations and customers
• How to scale ATDD to large projects