This is an unusual entry for me, because I usually do not review books that are “not done”. When books are made available in a “beta format”, through sites like Pragmatic Publishing and others, I typically hold back on reviewing the book until it’s finished. I consider this a fairness thing, since most titles are not going to be available in other places until they reach their production milestone and are printed as hardcover or paperback and shipped to book stores. What to do when a title is intended to be received at first beta, and with the idea that updates are to be announced and the development of the book is iterative and ongoing?
That’s the deal when someone puts out a LeanPub book. It’s made available to all, with the proviso that the book is in beta format at first, and it’s being corrected and updated and added to. With that understanding, is it fair to review a book that is in progress? If the book in question is “Cucumber and Cheese” written by Jeff Morgan, I think the answer is yes. There’s another reason for this. I want to encourage people to get this book, and FAST!!!
With that shout out, you may already think this is going to be a favorable review, and you would be correct. For those interested in learning about and practicing ATDD techniques, and doing so in a step by step workshop format, with lots of examples on an actual site with iterative changes and updates, this is the book for you. Is it a little rough around the edges? Of course it is, it’s a beta version after all. What’s cool, though, is the speed in which Jeff has been listening to and fixing the areas that have been pointed out. That’s the really cool thing about the LeanPub model. Report a fix, get word it’s been taken care of, download a new version of the book, et voila, there’s the changes. It’s a thing of beauty.
What’s also a thing of beauty is the way that Jeff goes through the first six chapters (at this point in time, that’s all there is). Don’t let that discourage you, though, as there’s a lot of meat to consume in those first six chapters. By walking through the process of using watir-webdriver for browser automation, the tester gets a feel for a tool and how to extend it into an ATDD style harness using Cucumber, RSpec and native Ruby. Additionally, they get to understand and try out setting up multiple environments and watching those environments run (there are specific instructions for setting up Ruby and supporting gems on Windows, OSX and Ubuntu). 
Jeff walks the user through installing gems needed to make the test cases and development environment work, and each gem is introduced as it is needed, rather than just loading the tester up with a bunch of gems and diving in without proper context. Starting with a simple example for adopting puppies, the tester gets to expand on static lines used to enact the automation steps, and walk through the process of removing as much duplication as possible. If you have ever found yourself looking at step definitions and thinking “OK, what am I looking at here?!”, the 3rd and 4th Chapters alone will be extremely helpful.
More than just explain some basics of watir-webdriver, Cucumber and some simple RSpec step definitions, Jeff walks you through the entire stack you would be expected to know if you were to actively test a Rails server. This doesn’t just stop with the controls on a browser. The tester is involved in all aspects of the site, from making classes to interacting with Page Objects, accessing a database to make changes on the fly, and running a rails server native to their machine, just like when developers at companies develop real apps. 
The server you access is real. The underlying methods to access items on the server are real. This means you have an authentic problem to play with. This is another strength of the book; you are not playing around with a trivial application that doesn’t have any real meat to it. While it’s not a complex site, it’s complex enough so that you can actually practice and work with enough controls and commands to get a genuine familiarity with what watir-webdriver can do, and then Jeff walks you through realistic programming examples to make a system that is extensible and expressive, without being overwhelming or brittle.
Bottom Line: If you are waiting for Cucumber and Cheese to be finished before diving in, don’t. There is more than enough in here to keep both junior and mid level testers and ATDD enthusiasts plenty busy.  Oh, and word has it there will be some more added to the book this weekend. That’s the beauty of a LeanPub book. It grows without you even being aware of it. If you have a tolerance for material growing as you read it, and like the idea of contributing to an even more solid end product, then this is a great opportunity to get ATDD’d and Cucumber’d up… and don’t forget the Cheese ;).