Summary BDD in Action teaches you the Behavior-Driven Development model and shows you how to integrate it into your existing development process. First you'll learn how to apply BDD to requirements analysis to define features that focus your development efforts on underlying business goals. Then, you'll discover how to automate acceptance criteria and use tests to guide and report on the development process. Along the way, you'll apply BDD principles at the coding level to write more maintainable and better documented code. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology You can't write good software if you don't understand what it's supposed to do. Behavior-Driven Development (BDD) encourages teams to use conversation and concrete examples to build up a shared understanding of how an application should work and which features really matter. With an emerging body of best practices and sophisticated new tools that assist in requirement analysis and test automation, BDD has become a hot, mainstream practice. About the Book BDD in Action teaches you BDD principles and practices and shows you how to integrate them into your existing development process, no matter what language you use. First, you'll apply BDD to requirements analysis so you can focus your development efforts on underlying business goals. Then, you'll discover how to automate acceptance criteria and use tests to guide and report on the development process. Along the way, you'll apply BDD principles at the coding level to write more maintainable and better documented code. No prior experience with BDD is required. What's Inside About the Author John Ferguson Smart is a specialist in BDD, automated testing, and software lifecycle development optimization. Table of Contents
BDD In Action kicks off with an in-depth explanation of what BDD is and why it is important before a good end-to-end example. One of the highlights of the book for me was chapter 3 which has some good coverage of different techniques for requirements analysis. Whilst it could be argued that these are not really BDD, they are included as good examples on how to ensure you are working on requirements that are adding business value. The approaches include Feature Injection, Impact Mapping and the Purpose-Based Alignment Model as well as Real Options and Deliberate Discovery.
John has always extended how I define the core roles on the development team (the three amigos) and this is described within the book as well. The second section of the book explains requirements gathering, through to specifications and then basic automation of a DSL at the scenario level. It seems to imply that the tester should be able to write the executable specification and the base automation, although this does not match my experience of most testers in the field.
Section three of the book covers the coding aspects of BDD, including the automation of tests at the UI level as well as the unit testing level. It goes into a fair amount of detail on how different tools work in different languages as well as a fairly comprehensive overview of TDD. The final section of the book introduces living documentation, mainly using tools like Thucyidides as well as how BDD fits into the continuous delivery world.
The book is full of diagrams as well as comprehensive code examples that are well explained and relevant. One of the main advantages of this book is that is not aimed at any tool – in fact it covers a number of tools and languages in a reasonable amount of detail. The other standout books on the subject have either covered the process in great detail (Specfication By Example) or a tool in detail (The Cucumber Book). This does a very reasonable job of both. This advantage is also its disadvantage – I would hope testers and business analysts would read this book but may be discouraged by the amoutn of code examples which start from very early in the book. On the flipside, there is a good coverage of requirements tools at the beginning of the book that may discourage some developers. I hope that in this world of cross functional teams that this is not the case.
Overall this is a very well written book that covers the full spectrum of BDD (and TDD, ATDD and SBE). It is also good to see a book that has Australian examples in it for a change, including the Sydney train system and the Queensland Health payroll project.
I had no prior knowledge of Behavior Driven Development, but when I got this book as a complementary copy from the publisher, I read this book and liked it. It was fantastic. The book gives real life examples and is recommended read for any developer or project manager. The examples are well explained and anyone would appreciate this book. I recommend it as a classroom book as well as professional.
This is not a bad book. If you're looking for a source of knowledge about both process and implementation parts of BDD then it might be a good shot.
What I liked: - The examples. The problem domain that an example project tried to solve was really interesting. I had a feeling that BDD approach was definitely worth applying there. - The big role of low-level unit tests in the BDD technique. The author have tried to emphasize a huge importance of looking in a different way on your tests. If you want to apply BDD you need to be functional and behavioral in all of the layers. A couple of interesing tricks were provided (nice naming technique for unit tests that don't use explicitly Gherkin standard). I love it!
What I didn't like: - Well, it's a book from 2014. We have 2022 now (time goes by so fast!). The book contains a lot of code and technical examples. As IT and software development is making a progress all the time, some parts of the "BDD in Action" are not aging well. The screens from old IDE version, old version s of BDD libraries, chapters about CI and live documentation - all of these doesn't look well already :( - I think that the author's goal was to provide a knowledge that can be utilized by all of the members of the development team - business analysist, QA engineer, software developer etc. The thing is - it's a hecky hard goal to achieve. Once you start leaning towards less technical language and explaining some basic concepts you're dilluting the message. In the end, the book is uneven and harsh. It consists of nice and concrete chapters but also of blury ones. An example. There is a chapter where the same trivial test usecase is written using BDD framework in all of the following languages: Java, JavaScript, Ruby, C# and Pyhon. It takes about 20 or 30 pages to do that. After all, in my opinion, zero value is provided. I've simply skipped the next repetitions...
Behavior-Driven Development (BDD) is a set of software engineering practices designed to help teams build and deliver more valuable, higher quality software faster. It draws on Agile and lean practices including, in particular, Test-Driven Development (TDD) and Domain-Driven Design (DDD). But most importantly, BDD provides a com- mon language based on simple, structured sentences expressed in English (or in the native language of the stakeholders) that facilitate communication between project team members and business stakeholders.
BDD was originally invented by Dan North9 in the early to mid-2000s as an easier way to teach and practice Test-Driven Development (TDD)
You can also use the BDD-style “Given ... When ... Then” structure in your unit tests.
A capability enables some business goal, regardless of implementation. A feature is a piece of deliverable software functionality that provides users with a capability. A feature can be described by one or more user stories A feature is not a user story
library: JBehave
BDD reports don’t simply provide a list of test outcomes, in terms of passing or fail- ing tests. First and foremost, BDD reports document and describe what the applica- tion is expected to do, and they report whether or not the application actually performs these operations correctly.
I used this book as my introduction to BDD, automated acceptance testing, Cucumber, Serenity, and data-driven executable specifications. Being new to all these things, this book was a great help. It is detailed and peppered with useful practical tips.
Since I already had an idea of which tools I wanted to focus on, I was able to skip half of the book that discussed JBehave, JUnit, JavaScript, and others. It was a bit of a drag to be caught up in comparative discussions between feature differences between competing tools. Such information is bound to become dated quickly.
I wish the book had also presented the Screenplay pattern. That's the only significant topic I needed to learn outside of this book to become comfortable writing maintainable UI automation tests.
This book is definitely not timeless, but it was my one-stop reference and it was a big help. I hope there's a newer edition after a while.
This book gives a great overview of the importance of conversations when practicing BDD and several useful requirement gathering techniques (such as using examples).
The book also gives a great overview into good automated testing and CI practices, which I maybe didn't expect, but was a nice surprise. It dives into the technical capabilities of automation tools.
Would recommend this to anyone wanting to get started with BDD, but also those who want a technical introduction to any of the BDD automation tools such as Cucumber or Behave.
It's a pretty nice into to BDD, I especially like the parts where general principles were discussed with some anti-patterns shown.
I did not like focus on precise technologies, where the subject was analyzed for different programming languages. And it felt like some interesting topics were lacking depth.
In my opinion it is good starter for this whole topic and makes it easy to actually start. Although I have done my share of BDD before I got many new ideas from this book, especially about tagging and also to really give JBehave.
Noteworthy is that Thucydides has been renamed to SerenityBDD, but that is probably fixed in a newer version of it.
It gives you a broad spectrum from theory till implementation approaches. A must read for everyone starting out with the idea to do BDD but keep your mind open and embrace conversations.
This is a great book to get a comprehensive idea about BDD. It is narrated in a traditional and yet effective way: from the basics till practical examples so that anyone interested will find something useful.
Disclaimer: I am a volunteer reviewer for Manning Publications and was given a free eBook of BDD in Action for my review. Before reading this title I was quite unaware about BDD concepts. This book represents a great introduction to Behavior Driven Development. It allows a better understanding of BDD principles and how to apply them to real scenarios. Moreover it faces most of difficulties, communication problems and misunderstandings that can take place during software development process. It is important the emphasis given to the concepts of automation and continuous integration in each step of programming since it is vital to have tested, reproducible and reliable software. What I could get from this book is that BDD is not easy to be introduced in developing teams and correctly applied by them, since you have to stick to an ascetic discipline, but following the recipes it contains will help you to enhance your code quality and also the developing process. Finally say: an engaging book recommended to learn a new perspective to face everyday software development challenges.
This is a great book on BDD. It presents the theory correctly and has some clear real life examples. The first two parts are focused on recommended technics in identifying the capabilities, features, user stories, scenarios, examples. The third part is focused on how you switch from business analyses to coding and tools in various technologies. The last part is pretty useful, covering the BDD in the build process. All in all is a great resource on BDD for both analysts and developers!
The same amount information can be easily explained with less amount of pages, in few times, I suppose. So, the book is not focused well, it covers a lot besides BDD, there are huge amount of examples, but most of the are equal, so the book definitely covers the topic, but at the same time it is wasting reader's time and efforts for something not related to the main topic or/and it just repeats an infromation from prevoius pages.
Nie podobała mi się ta książka. Początek tłumaczący podstawowe pojęcia był naprawdę fajny, ale im idzie się dalej, tym nabiera się wrażenia, że książka została napisane trochę bez pomysłu.
I did not like this book. The beginning with an explanation of the fundamental concepts was nice but the rest of the book made it seem like it was written without any concept or any deeper thoughts.
I didn't particularly enjoy slogging through vast stretches of this book, and certain parts merit skim reading. But when it comes down to it, it does a pretty good job of explaining BDD and showing various tools that help get the job done.
Manning delivers again! Excellent overview of whole BDD process with many not so obvious details. JS and Ruby examples among others make it great for a web developer.