by Lisa Crispin & Trip House (2003)
I grabbed this hoping that it might be the authoritative reference that its position in the 'Xtreme Programming' series suggests, and it does provides a descriptive overview of the testing responsibilities of both developers and more conventional testers on an Extreme Programming project. It touches all the bases, and even gets its hands dirty with significant demonstration coding for JUnit, the venerable Java testing framework. But beyond being a competent summary of the field, the book seems to fall a little between two stools, and not necessarily through any failing on the part of the authors.
If you're looking for more pragmatic guidance for test-driven development in your own project's technical environment, then obviously there's very little that would provide a better reward-to-investment ratio than consulting the XUnit documentation for your own particular language and platform, and implementing a test-driven project with it.
On the other hand, if you're looking for some more advanced topics, a deeper exploration of the philosophies behind test-driven development, of the nuanced differences between acceptance and unit tests, of how to know when tests should be duplicating the semantics of your code and when they should simply import directly from the tested code, or of the more hare-brained ideas that test-driven development seems to lead naturally into, such as genetic algorithms, then this book doesn't provide it, and arguably never could have, since a lot of these things, at the time of its writing, and arguably still, are still being thrashed out by the development community.
In short, there was nothing in here that we aren't already doing at Resolver. Boy am I grateful to be working with these guys. :)
Rating: 9/10 if you don't know how to do test-driven development. 3/10 if you're already doing it.