@sebrose http://cucumber.io
Seb Rose
Can we reduce the stress
of maintaining a high
quality product?
@sebrose http://cucumber.io
How Projects Really Work (version 1.5) Create your own cartoon at www.projectcartoon.com
How the customer
explained it
How the project leader
understood it
How the analyst
designed it
How the programmer
wrote it
What the beta testers
received
How the business
consultant described it
How the project was
documented
What operations
installed
How the customer was
billed
How it was supported What marketing
advertised
What the customer
really needed
www.projectcartoon.com
@sebrose http://cucumber.io
Business needs
are not well
understood by
the people who
want the
software
@sebrose http://cucumber.io
Business needs
are not well
understood by
the people who
want the
software
@sebrose http://cucumber.io
Business needs
are not well
understood by
the people who
will deliver and
test the software
@sebrose http://cucumber.io
Business needs
are not well
understood by
the people who
will deliver and
test the software
@sebrose http://cucumber.io
Business needs
are not well
understood by
the people who
will deliver and
test the software
@sebrose http://cucumber.io
The software is
low quality with
lots of bugs
@sebrose http://cucumber.io
The cost of
change over time
increases rapidly
CostofChange
Time
@sebrose http://cucumber.io
Successful Projects
@sebrose http://cucumber.io
Successful Projects
Shared
understanding
@sebrose http://cucumber.io
Successful Projects
Shared
understanding
Know when youare done
@sebrose http://cucumber.io
Successful Projects
Shared
understanding
Know when youare done
Know what to
do next
@sebrose http://cucumber.io
Successful Projects
Shared
understanding
Know when youare done
Know what to
do next
The codebase
supports the
inevitable
changes as theproject evolves
@sebrose http://cucumber.io
Successful Projects
Shared
understanding
Know when youare done
Know what to
do next
The codebase
supports the
inevitable
changes as theproject evolves
Know quickly
when new
changes break
existing
behaviour
@sebrose http://cucumber.io
Three practices
@sebrose http://cucumber.io
Discovery
Create a shared understanding of the requirements through
collaboration, typically achieved through a structured
conversation centred on rules and examples
Three practices
@sebrose http://cucumber.io
Discovery
Create a shared understanding of the requirements through
collaboration, typically achieved through a structured
conversation centred on rules and examples
Formulation
Examples of system behaviour are documented using
business terminology
Three practices
@sebrose http://cucumber.io
Discovery
Create a shared understanding of the requirements through
collaboration, typically achieved through a structured
conversation centred on rules and examples
Formulation
Examples of system behaviour are documented using
business terminology
Automation
The documentation is automated, creating living
documentation that verifies the system’s behaviour
Three practices
@sebrose http://cucumber.io
Discovery
Create a shared understanding of the requirements through
collaboration, typically achieved through a structured
conversation centred on rules and examples
Formulation
Examples of system behaviour are documented using
business terminology
Automation
The documentation is automated, creating living
documentation that verifies the system’s behaviour
Three practices
@sebrose http://cucumber.io
Discovery
https://cucumber.io/blog/2015/12/08/example-mapping-introduction
https://www.youtube.com/watch?v=VwvrGfWmG_U
Example Mapping
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Feature: Team Scoring
Teams start with zero score.
Correct answer gets points depending on 

how difficult it is.
Scenario: Score starts at 0
Given I register a team
Then my score is 0
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score is 10
Scenario: Correct hard answer scores 50
Given I register a team
When I submit a correct hard answer
Then my score is 50
Formulation
@sebrose http://cucumber.io
Automation
@sebrose http://cucumber.io
Features
Automation
@sebrose http://cucumber.io
Features
-Scenarios
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Each scenario is an example
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
Each scenario is an example
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
-Step definitions
Each scenario is an example
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
-Step definitions
-Java / C#
Each scenario is an example
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
-Step definitions
-Java / C#
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
-Step definitions
-Java / C#
Automation
@sebrose http://cucumber.io
Features
-Scenarios
-Steps
-Gherkin
Glue code
-Step definitions
-Java / C#
Application
Automation
@sebrose http://cucumber.io
Pulling it all together
@sebrose http://cucumber.io
http://bddbooks.com
Seb Rose


Twitter: @sebrose
Blog: http:/cucumber.io/blog
E-mail: seb@cucumber.io

Introduction to BDD - shortened