Monday, 2 November 2015

Behaviour-Driven Development in a Nutshell

What is Behaviour-Driven Development?

Sharing the same vocabulary
   using specifications
   between all members of a project

Like (Unit-)Test-Driven Development, but further up the Waterfall

It uses
   Gherkin syntax
   Behaviour-Driven Development workflow

Specifications should be

Example 1:
Feature: Search feature for users
This feature is very important because it will allow users to filter products
Scenario: When a user searches, without spelling mistake, for a product name present in inventory. All the products with similar name should be displayed
Given User is on the main page of
When User searches for laptops
Then search page should be updated with the lists of laptops
Example 2

Feature: Serve donuts
   In order to:
   As a:
   I want to:

Scenario: Buy last donut
   Given there is a donut on the tray
   And I have paid £0.89
   When I request the donut
   Then I should have a donut given to me

The Feature is a Narrative

The Scenario has
   an initial context
   expected outcomes

The developer has to give an executable meaning to each step
    by writing step definitions


Given /there is|are (\d*) donuts? left on the tray/ do |n|
   @donutTray =


@Giventhere is|are (\d*) donuts? left in the machine")
public void givenThereAreNDonutsLeft(String n)
 { this.donutTray = new DonutTray(Integer.parseInt(n));

The Behaviour-Driven Development workflow is

Write a scenario
Watch it fail
Write code to make the scenario pass (including cycles of TDD - if you need to)
   return to either Watch it fail
                  or Write Specification, as appropriate
Cucumber is
Cucumber has tools to declare a scenario as passed when each step has passed

No comments:

Post a Comment