Behaviour Driven Development is a well-accepted and current methodology in Agile projects. Behavior Driven Testing (BDT) is a lesser known companion of Behaviour Driven Development (BDD). BDT can be used without BDD.
It involves getting stakeholders and delivery team with different perspectives onto the same page and ensuring that all have the same expectations. BDD starts with a business goal and goal that translates to features and stories.
The goal of BDT is a business readable and domain specific language that allows you to describe a system’s behavior without detailing how that behavior is implemented.
In BDT, Tests in the form of plain text features descriptions with scenarios are typically written before anything else and verified by the non technical stakeholders.
The most important advantages of using Behavior Driven Development is that it allows the product owner to write acceptance criteria in the form of features. The developer can then work towards developing step definitions to test the features the product owner has defined. The step definitions correlate with the acceptance criteria/features with the intention of leaving no discrepancies between what the product owner wants from their product and what the programmer develops.
Cucumber for BDD
Cucumber is optimized for BDD, by its support for particular set of interactions between team members and stakeholders.
Cucumber can execute plain-text functional (feature) specifications as automated tests. The language that Cucumber understands is called Gherkin.
Cucumber supports writing specifications in about 30 spoken languages, making it easy for teams outside of English-speaking territories or those working on internationally targeted software to deliver better.
Other salient features include:
- Defining executable specifications in different ways like lists, prose and tabular data
- The plain text files can be stored in any version control system
- Cucumber works with Ruby, Java, .NET, Flex or web applications written in any language
- Can be integrated with all the most popular web testing libraries
- Cucumber is both BDD in the form of feature descriptions and scenarios and TDD in the form of step definitions
- Provides a layer of abstraction between the required behavior and the app implementation
The other tools that supports BDD are FitNesse, JBehave (the original BDD tool) and Concordion.