This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
<pre>Author/s : Rick Mugridge, Ward Cunningham Publisher : Addison-Wesley Category :Project management, Process and Best Practices Review by : Lasse Koskela Rating : 9 horseshoes</pre> Even though Ward and Rick's book on Fit is the first book available on Fit -- perhaps the most popular acceptance testing tool among the whole agile community -- and one might be tempted to think it's selling well because of that alone, I'm saying this book is a hit on its own merits.
I read the beta drafts of the book like many others at the time and was instantly gratified as I read through the table of contents. Ward and Rick didn't make the mistake of writing a pure tool book. They wrote a book that focuses not just on the tool itself but also on using the tool. I ordered a hardcopy as soon as it was released. I devoured it, loved it, and am still using it as a reference today on projects using Fit.
The first part is all about expressing tests with Fit's tables in a way that communicates well. The built-in fixtures are introduced one by one from the perspective of a test engineer wanting to test different kinds of aspects of a system. The first time the authors actually show how to run the tests is in chapter 7. This approached proved to be an excellent choice, as far as I'm concerned. The focus really stays on creating tests without digressions into technical implementation.
After a brief tour through FitNesse, a display of Fitlibrary's power and flexibility, and some miscellaneous topics, Part 2 takes the reader to another level -- the process of turning requirements into Fit tables and the strenghts and benefits of using a tool like Fit in developing software. This is delivered using an imaginary software project as a vehicle in illustrating the communication between people while they're honing their acceptance tests.
Part 3 turns the table and puts the developer hat on. In an action-packed 70 pages, the authors show how to write the Java code backing up all those different kinds of fixture tables we saw in Parts 1 and 2. The discussion is concise and to the point, covering the fixtures rather well. Having said that, I was left with some open questions regarding extending the built-in (and Fitlibrary) fixtures, mostly regarding Fit's internal API. That, however, has been a problem with me and Fit since day one so it's probably just my wiring that's incompatible. Besides, there's more on the internals in the last part of the book.
Part 4 is two-fold. First, we see how the fixtures created in Part 2 look like in Java. There's not too much explanation involved but I didn't feel like that was an issue. The rest of Part 4 is a mixture of topics such as mocking certain aspects of a system, making the system's architecture more testing-friendly, and such. I have to say I was a bit disappointed by the mocking section, having hoped for a more elaborate example rather than sticking to faking system time.
Part 5 starts with a very brief description of Fit's internal API (introducing concepts of Parse object, "more", and so forth, if you've already taken a peek at Fit's source code) and how to develop custom fixtures. Personally, I would've liked to have a lot more material on this exact topic but even the brief overview helped solidify some of the things I had picked up here and there while reading the Fit source code, trying to figure out how to write custom fixtures.
Trying to summarize all that, I'd claim that "Fit for Developing Software" is a must read for anyone involved in using Fit. It's a tremendous resource, especially considering how little documentation on Fit is available online. The book does have its deficiencies as well, though. Whereas the (arguably most important) aspect of creating tests is covered extremely well, the poor fixture developer still has to figure out a lot of stuff out on her own as the custom development topic is not covered as thoroughly. Still, a great book and a warm recommendation from me.