This book is a noteworthy contribution to the literature on test-driven development (TDD). As Kent Beck states in the foreword, “It is written by practitioners who code--and teach others to code--well.” There are a variety of TDD styles, and this book focuses on a proven approach that is coherent, consistent, and scalable. Its 27 chapters, each with a specific focus, are smoothly organized into five parts: “Introduction,” “The Process of Test-Driven Development,” “A Worked Example,” “Sustainable Test-Driven Development,” and “Advanced Topics.”
In the title, the term “growing” refers to incremental development, and “guided” refers to making progress and raising quality by applying the results of the tests. The authors use Java for example code, with JUnit and jMock as supporting tools. The two appendices cover jMock and how to write a Hamcrest matcher, and there is even an afterword on the history of mock objects. Parts 1 and 2 build the foundation for a basic understanding of TDD, and Part 3 presents a very effective running example that demonstrates TDD in an object-oriented application “that watches online auctions and automatically bids slightly higher whenever the price changes.” This is really the heart of the book, and the functionality of the application is built up over 11 chapters in an easy-to-follow process that presents TDD, incremental development, and the evolution of an application from a concept to a fully thought-out system. Part 4 addresses system maintainability, and Part 5 looks at the challenges of complex test data, persistence, and concurrency.
As extreme programming (XP) and agile development mature, TDD is ready to take its rightful place in the pantheon of proven software development methodologies. This well-written book is intended for software developers who are open to the advantages that TDD can provide. The TDD community may also want to take a good look to see the maturing of their field as it is happening.