test driven development: a practical guide
test driven development: a practical guide is a well known book on test driven development (TDD) by David Astels, that won the SD West 2004 Jolt Award. It can be considered a complement to Kent Becks test driven development by example, since there isn't much overlap.
This book is a little shorter on the philosophy of TDD, and spends some more pages on testing the GUI and using mock objects. It does not do this with theoretical stuff, but with examples of how it is done with actual code and screenshots. It discusses JUnit, its extensions, and other applications, both open source and commercial, such as Jester, NoUnit, Clover, Eclipse and IDEA.
The examples are in Java with JUnit, but C++, C#, Ruby, VB and Python are also discussed. All of the code can be downloaded, but it actually is more instructive to type the code yourself and follow what the author does, because that is the only way to learn TDD.
The book starts with the principles of TDD, refactoring, programming by intention, mock objects and coverage metrics. The bulk of the book (over 230 pages) shows the development of a small application with Swing, to categorize and rate movies. This part demonstrates testing of the GUI, using the AWT robot, JFCUnit and Jemmy. There are few books who talk about the complex task of testing the GUI. Of course, this makes the book Java-centric, even more so since Java is one of the few languages that can unit test the GUI well, although many languages have unit testing frameworks.
The book also has appendices on Agile Modelling and Extreme Programming, which favor TDD, and a list of online resources to the material covered by the book.
Order test driven development: a practical guide by David Astels on Amazon.