What is BDD?

Behaviour Driven Development or BDD is the process which combines ideas of domain driven design and test-driven development process (TDD).

BDD as a process aims to involve business users and raise their interest for the actual the software development process. This is done through simple, English-like domain specific language. Such language allows non-technical users to describe the expected application functionality and use cases by creating a human readable scenarios.

This domain specific language is also understood by computers. It allows delivery teams to maintain English like functionality description tests cases against the actual software functionality. It capturing the feedback about which parts of the application are implemented.

Business users get a rapid feedback on the application development progress. They can read and understand which desired software functionality is already implemented and which is still pending.

The example of such domain specific language might be the following:

Scenario 1: Purchased items should appear in the shopping cart Given a visitor add the new item to their shopping cart When he goes to shopping cart page Then shopping cart should have purchased item

This page aims to list the most popular BDD frameworks. With the short descriptions for each of them.

Behaviour Driven Development Frameworks

Cucumber is a popular BDD framework with the aim to encourage a closer collaboration between business and technology, minimize team rework and provide simple maintenance of living documentation.

Originating from Ruby community and RSpec, Cucumber has popular implementations in other programming languages, like CucumberJS, Cucumber JVM, Cucumber Lua and others.

Yadda is a relatively new BDD framework but already has gained lots of popularity across JavaScrip community. The aim of this framework is to bring BDD functionality to popular JavaCript frameworks like Jasmine, Mocha, Nodeunit, WebdriverIO, CasperJS and others.

Released in 2007 RSpec became very popular among Rails development teams who are using Ruby. This project has gathered a large community of developers around it and has influenced other BDD frameworks like Cucumber.

RSpec is built implemented with Ruby programming language.

Lettuce is a BDD framework for development teams working on applications built with Python programming language. Lettuce project page has a great tutorial describing how this BDD framework fits into Python application development lifecycle.

Behave is another BDD framework created in Python programming language and is most used by development teams working with Python technology stack. This framework was influenced by JBehave – famous Java BDD project.

JBehave is a popular BDD framework used in Java application development projects. It integrates well with build tools extensively used by Java community, Ant, Maven and others. It also has good integration with Eclipse, major open source IDE used by Java developer community.