Behavior Driven Development Frameworks
What is BDD?
Behavior 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 product owners and raise their interest in validating the actual outcome the software development.
This is done through a simple, English-like domain specific language. Such language allows less technical users to describe the expected application functionality and use cases by creating a human readable test scenarios.
This domain specific language is also understood by computers.
It allows software delivery teams to maintain English like functionality descriptions for tests cases against the actual software.
They provide instant feedback about which parts of the application are implemented and which are outstanding.
Product owners get a rapid feedback on the application development progress.
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 lists the most popular BDD frameworks, references and use-cases.
Behavior 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 JavaScript frameworks like Jasmine, Mocha, Nodeunit, WebdriverIO, CasperJS and others.
RSpec - 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.
If you would like to recommend BDD framework to be added to above list - let us know.