It is not a secret that software development often involves using a lot of code written by others. Testing is no different. 

If you are interested in applying BDD – behavior-driven development, you’ve probably come across various frameworks that promise process simplification. However, finding the best option is sometimes a challenge.

The goal of this post is to introduce and briefly describe the BDD framework options for different programming languages. You will also find some details about the most popular BDD tools. Let’s figure them out!

What is BDD?

BDD (Behavioral Driven Development) is a software development approach that evolved from the concept of TDD (Test Driven Development). 

The distinguishing feature of this approach is that it is written in a shared language that enhances communication between tech and non-tech parties. According to the BDD approach, tests are more user-focused and based on the system’s behavior.

The BDD framework can be divided into two parts:

  • Deliberate discovery – a conversation that involves a product owner, programmers, business analysts, users, testers, and other people who give specific examples that can be converted into specifications.
  • Test-driven development – natural language tests. They are often written in Gherkin, which helps to spell out the desired outcomes of specific examples without ambiguity.

 

Behavioral Driven Development

 

Why do we use the BDD framework?

Before the Behavioral Driven Development framework, people were using TDD. Test Driven Development performs fine in software development and provides stakeholders with the framework being used (and they have enough tech knowledge). However, this does not always happen.

The framework provides a path similar to a bridge aimed to overcome the gap between the technical and the non-tech teams as the test cases are commonly written in simple text. The key benefit of BDD is the low jargon as well as a clearer and easier to understand approach.

What are the vivid benefits of using BDD?

If you are thinking about the BDD implementation, here are some useful points that will inspire you and benefit your team:

  • You will get advanced communication between product owners, developers, and testers.
  • You are no longer defining ‘test’, but defining ‘behavior’.
  • The learning curve will be much shorter just because the BDD framework is explained using simple language.
  • The framework can reach a wider audience as it has non-technical nature.
  • The behavioral approach determines acceptance criteria prior to development.

Are there disadvantages in using the BDD framework?

BDD as any other development approach may have pitfalls and drawbacks. Here are some of them:

  • You will need prior experience of TDD in order to work in BDD.
  • BDD may not be effective if the requirements are not properly specified.
  • Testers who apply BDD need to have technical skills.
  • The framework is incompatible with the Waterfall method.

 

What is Behavioral Driven Development

 

Popular BDD Tools

Remember that behavior-driven development is a development approach rather than a tool framework. However, as in the case of other development approaches, there are some handy tools for BDD as well. Here is the list of some BDD tools are for different platforms and programming languages:

  • Cucumber (Ruby framework)
  • SpecFlow (.NET framework)
  • Behave (Python framework)
  • Lettuce (Python framework)
  • Concordion (Java framework)
  • JBehave (Java framework)
  • Kahlan (PHP framework)
  • Behat (PHP framework)
  • DaSpec (JavaScript framework)
  • Jasmine (JavaScript framework)
  • Spock (Groovy framework)
  • Yadda (JavaScript framework)

Let’s describe some of them in detail.

Cucumber

Cucumber is a free popular test framework that supports BDD. It allows describing how software should behave in plain and simple text written in a business-readable, domain-specific language.

In fact, it serves as documentation, automated tests, and development-aid. This framework developed by Ruby can work across different technologies and you can use over forty different spoken languages from English to Chinese.

What are the core features of Cucumber?

  • You may use it for executable specifications, test automation, and living documentation.
  • The framework works with Ruby, Java, NET, Flex, etc.
  • It supports more succinct tests in tables (similar to what FIT does).
  • Cucumber has revolutionized the Software Development Life Cycle as it combined requirements, automated testing, and documentation into a cohesive one.

SpecFlow

Another BDD tool is Specflow. It evolved from the Cucumber framework using Ruby on Rails and now it is used mainly for .Net projects. This is an open-source project and the source code is hosted on GitHub. For features, SpecFlow uses Gherkin Syntax format (that was introduced by Cucumber and is also used by other tools).

JBehave

JBehave looks rather similar to Cucumber. It is characterized by scenarios that are still written in the given/when/then format. They are also easily understandable by the entire team. This tool supports Gherkin and also has its own JBehave syntax.

JBehave is famous for more configuration options than Cucumber. This is a powerful tool, but because it can be more customized, it is not quite as easy to get started with.

Concordion

The next open-source tool is utilized for automating Specification by Example for Java Framework. Its features are simple. It allows adding functionality, such as using Excel spreadsheets as specifications, displaying logging information, adding screenshots to the output, and so on.

With the help of Concordion, you may write specifications in normal language using paragraphs, tables, and proper punctuation. The framework has been ported to other languages such as Python, C#, and Ruby.

Wrapping up

Behavior-driven development will assist you to improve the quality of your software projects helping you deliver them on budget and on time. Most of the BDD frameworks follow the same principles and skillsets.

It is rather important to ensure that both business and technical teams throughout development remain on the same page.

What do you think about the BDD framework? Have you got experience in dealing with it?