IT teams today are under constant pressure to deliver more value sooner, and Behaviour Driven Development (BDD) is one of the more effective ways to help teams deliver the high quality software that their business needs. When they adopt BDD, many teams look to tools like Cucumber to help them. But BDD isn’t simply about picking up a new tool.
In fact, there is a lot more to BDD than Given/When/Then and tools like Cucumber, and both can be misused. In this talk, we will take a step back and look at the bigger picture, and learn why using Gherkin at the wrong time, or for the wrong purpose, may be holding you back.
2. @wakaleojohnfergusonsmart.com
“You do BDD? Cool, I love test automation!”
“We couldn’t do BDD this sprint because
we didn’t have any UI stories”
“Yes, we do BDD here, the tester
uses Cucumber for all his tests”
“We're dev complete so let's write
some Bee-Dee-Dees”
“The Jira story is not complete until the BA
defines their given-when-thens”
7. @wakaleojohnfergusonsmart.com
Business
BA
Developers
Testers
As a corporate frequent flyer
I want to earn points on my business flights
So that I can get discounts on my holiday flights
Examples
Rules
Acceptance Criteria
SHARED
UNDERSTANDING
Executable
Specifications
Scenario: First class earns double points
Given I fly from London to Paris
When I am in First Class
Then I should earn twice as many points
Scenario: First class earns double points
Given I fly from London to Paris
When I am in First Class
Then I should earn twice as many points
Development and
exploratory testing
Software that
matters
10. @wakaleojohnfergusonsmart.com
Scenario: Applying for a joint credit card with insufficient combined income
The combined income must be over £10,000
Given Susan has an income of £3000
And Jim has an income of £2500
When Susan and Jim apply for a joint credit card online
Then the application should be refused
What rule are we illustrating
Preconditions
Action
Expected outcome
Gherkin: a simple but flexible format
11. @wakaleojohnfergusonsmart.com
Feature: Credit card financial checks
In order to avoid bad debts
As a financial institution
I want to ensure that a customer’s credit limit is in line with the their earnings
Scenario Outline: The maximum credit card limit depends on the customer's salary
A customer needs a salary of at least £10,000. There are two types of card,
one with a limit of £2500, and another with a limit of £5000
Given an individual customer with an annual salary of <Salary>
When the customer applies for a credit card
Then the credit card application should be <Approved or Refused>
And if approved, the maximum credit limit should be <Max Limit>
Examples:
| Salary | Approved or Refused | Max Limit | Notes |
| £5000 | Refused | 0 | must be over £10,000 |
| £15,000 | Approved | £2500 | Up to £15,000 |
| £25,000 | Approved | £5000 | Over £15,000 |
| £100,000 | Approved | £5000 | Max limit £5000 |
Gherkin: a simple but flexible format
Why
What
How
Examples
13. @wakaleojohnfergusonsmart.com
Feature: Display customer details
As a user
I want to view the customer's personal profile
In order to access the personal information on the customer
Scenario: Customer Profile field 'Gender'
Given I am logged into the application
And I have displayed the customer
When I view the customer profile on the summary screen
Then I should see the Gender field (field type: Dropdown - read only information)
Scenario: Customer Profile ‘DOB/Age' field
Given I am logged into the application
And I have displayed the customer
When I view the Personal Profile on the Summary screen
Then I should see the DOB/Age field (DOB field type: Date, format: dd mmm yyyy - read only)
(Age field type:read only - numeric) under Personal Profile
And it should be blank if no value returned
Scenario: Customer Profile 'Marital Status' field
Scenario: Customer Profile 'Dependents' field
The Gherkin notation is not a guarantee of quality
16. @wakaleojohnfergusonsmart.com
Scenario Outline: User tries to log on to application with invalid credentials
Given I am a registered user
When I login as <username> with password <password>
Then I should not be allowed to logon
And I should see the error message <error-message>
Examples:
| username | password | message |
| scott | | Please enter a password |
| | tiger | Please enter a username |
| scott | wrong | Invalid username or password |
Sure, but what else?
17. @wakaleojohnfergusonsmart.com
And sometimes G/W/T happens too late
“Yes, we do BDD here, the tester
uses Cucumber for all his tests”
“We're dev complete so let's write
some Bee-Dee-Dees”
“You do BDD? Cool, I love test automation!”
30. @wakaleojohnfergusonsmart.com
Rich guy Joe
successfully
orders a card
Applies for
card
His credit
rating is OK
His salary is
sufficient
An account is
created
The credit
card is posted
✓Feature Mapping
Scenario Steps Outcomes
His credit
rating sucks
Explore flows
31. @wakaleojohnfergusonsmart.com
Rich guy Joe
successfully
orders a card
Applies for
card
His credit
rating is OK
His salary is
sufficient
An account is
created
The credit
card is posted
✓Feature Mapping
Scenario Steps Outcomes
Explore variations
Student Billy
can’t order a
card
Applies for
card
His credit
rating is OK
His salary is
not sufficient
His application
is rejected
36. @wakaleojohnfergusonsmart.com
Write executable specifications
Feature: Credit card financial checks
In order to avoid bad debts
As a financial institution
I want to ensure that a customer’s credit limit is in line with the their earnings
Scenario Outline: The maximum credit card limit depends on the customer's salary
A customer needs a salary of at least £10,000. There are two types of card,
one with a limit of £2500, and another with a limit of £5000
Given an individual customer with an annual salary of <Salary>
When the customer applies for a credit card
Then the credit card application should be <Approved or Refused>
And if approved, the maximum credit limit should be <Max Limit>
Examples:
| Salary | Approved or Refused | Max Limit | Notes |
| £5000 | Refused | 0 | must be over £10,000 |
| £15,000 | Approved | £2500 | Up to £15,000 |
| £25,000 | Approved | £5000 | Over £15,000 |
| £100,000 | Approved | £5000 | Max limit £5000 |
38. @wakaleojohnfergusonsmart.com
Automate
Feature: Credit card financial checks
In order to avoid bad debts
As a financial institution
I want to ensure that a customer’s credit limit is in line with the their earnings
Scenario Outline: The maximum credit card limit depends on the customer's salary
A customer needs a salary of at least £10,000. There are two types of card,
one with a limit of £2500, and another with a limit of £5000
Given an individual customer with an annual salary of <Salary>
When the customer applies for a credit card
Then the credit card application should be <Approved or Refused>
And if approved, the maximum credit limit should be <Max Limit>
Examples:
| Salary | Approved or Refused | Max Limit | Notes |
| £5000 | Refused | 0 | must be over £10,000 |
| £15,000 | Approved | £2500 | Up to £15,000 |
| £25,000 | Approved | £5000 | Over £15,000 |
| £100,000 | Approved | £5000 | Max limit £5000 |