Book Review: BDD in Action

Book Review: BDD in Action: Behaviour-Driven Development for the whole software lifecycle by John Smart. Published Sep 2014.

“John Smart has taken on a large, fast-moving space and produced a book that is everything I would want it to be. He has managed to capture the essence of what I was driving at with BDD while acknowledging the many others who have been part of the journey. As well as a solid theoretical foundation, BDD in Action delivers a thorough treatment of the current state of BDD tools, along with general structural and automation guidance that will most likely outlive many of them.”

I thought I might as well start the review by including this quote from the Foreword to BDD in Action, by Dan North (the original creator of Behaviour-Driven Development), because it sums up exactly what I agree John Smart has succeeded in doing. In an environment where there are still lots of new ideas being thrown around, often just in blogs or conference talks and the like, Smart has managed to consolidate the heart of BDD into one comprehensive book. In particular, whereas many books on BDD focus on one tool with with a bit of theory, Smart manages to provide more than sufficient instruction in a range of tools (including JBehave, Cucumber-JVM, SpecFlow, Cucumber-JS, Spock, Thucydides), and yet still undergird that with a “solid theoretical foundation”.

BDD is a very hot topic in software development today. It is an approach based on the seemingly simple premise of focusing on developing software that directly meets business goals. The increasing widespread adoption of agile methodologies has provided a stage for the necessary collaboration and fast feedback loops that make BDD viable and many organisations are seeing the benefits of adopting some, if not all, of the practices associated with BDD (whether they call it BDD or Acceptance Test-Driven Development or Specification by example or call it no special name at all). BDD in Action addresses all of the principle BDD activities, i.e. deriving features from business goals, illustrating features with examples, creating executable specifications to guide development, automating specifications and producing living documentation. In the process, other key contributions to BDD techniques (by the likes of Gojko Adzic, Chris Matts, et al.) are explained in just enough detail to enable the beginner to get started, while providing a handy reference for the BDD practitioner with some experience.

Working systematically through the BDD activities, Smart provides excellent signposting, examples and illustrations to keep the reader on track. In particular, A BDD approach is traced, from business goals to living documentation, on the fictitious ‘Flying High Airlines’ business, which is a tremendous help in providing concrete examples of how the theory works out.The repeated use of a diagram describing the principles activities, as they evolve through each chapter, is also very instructive.

The decision to deal with a variety of tools, rather than focus on just one or two, really increases the value of the book. Often the same exercise is demonstrated in different tools and for those who haven’t already committed to tools, it is a concise comparative guide to the features of different tools. For those who have already got a preference on tools, it will be a great benefit that the book cover’s the main tools more than adequately (avoiding having to try to translate Smart’s excellently structured content to another tool themselves).

BDD in Action is a very practical, hands-on manual for BDD practitioners. I see it as a great introduction for those embarking on this path and the kind of handbook that will be left out by development teams to refer to regularly. It doesn’t try to sell BDD, so other literature on case studies et al. may be better for that, but it is no doubt destined to become the definitive BDD manual for the foreseeable future.