SlideShare a Scribd company logo
1 of 84
Download to read offline
Collaborate like
you mean it!
BDD in the world
of Agile 2.0
John
Ferguson
Smart
Introductions
“I help teams of smart people 

learn to work together more efficiently, 

to deliver better software faster”
Do you aim to build features that
delight the customer?
How long does it take a feature to
go from an idea to into the hands
of the users?
We can’t afford to wait for long dev cycles
Today’s market moves fast
Our delivery strategies
need to move just as fast
Agile helps us meet
these challenges
But are classic agile practices
enough?
The essence of BDD
Collaborate to
discover
requirements and
identify
uncertainty
Using examples at
multiple levels
And a common
language to build
a shared
understanding
To deliver
software that
matters
The essence of BDD
Collaborate to
discover
requirements and
identify
uncertainty
Using examples at
multiple levels
And a common
language to build
a shared
understanding
To deliver
software that
matters
The essence of BDD
Collaborate to
discover
requirements and
identify
uncertainty
Using examples at
multiple levels
And a common
language to build
a shared
understanding
To deliver
software that
matters
The essence of BDD
Collaborate to
discover
requirements and
identify
uncertainty
Using examples at
multiple levels
And a common
language to build
a shared
understanding
To deliver
software that
matters
The essence of BDD
Collaborate to
discover
requirements and
identify
uncertainty
Using examples at
multiple levels
And a common
language to build
a shared
understanding
To deliver
software that
matters
The traditional way
BA
Developer
Tester
The traditional way
Story
BA
Developer
Tester
The traditional way
Story
Working
code
BA
Developer
Tester
The traditional way
Story
Working
code
boring
manual
testing
BA
Developer
Tester
The traditional way
Story
bug reports
Working
code
boring
manual
testing
BA
Developer
Tester
The traditional way
Story
bug reports
Working
code
boring
manual
testing
WASTE
BA
Developer
Tester
The BDD way
Story
The BDD way
Story
The BDD way
Story
The BDD way
Story
The BDD way
Story
Examples
The BDD way
Story
Examples
Automated
acceptance
criteria
The BDD way
Shared
understanding
Story
Examples
Automated
acceptance
criteria
The BDD way
Working code
and
Working Automated
Acceptance Tests
Shared
understanding
Story
Examples
Automated
acceptance
criteria
The BDD way
Working code
and
Working Automated
Acceptance Tests
Exploratory
testing, usability
testing...
Shared
understanding
Story
Examples
Automated
acceptance
criteria
The BDD way
BA and/or product owner
Tester Developer Automatable
Acceptance
Criteria
Shared
understanding
The BDD way
Frequent Flyer Application

Goal: Encourage travellers to fly with Flying High airlines more often by
allowing them to cumulate Frequent Flyer points that they can spend on
cheaper flights.
Goals
The BDD way
Frequent Flyer Application

Goal: Encourage travellers to fly with Flying High airlines more often by
allowing them to cumulate Frequent Flyer points that they can spend on
cheaper flights.
Goals
Earning points
from flights
Capabilities
Earning points
from spending
with partners
Viewing points
earned
Spending
points on
bookings
The BDD way
Frequent Flyer Application

Goal: Encourage travellers to fly with Flying High airlines more often by
allowing them to cumulate Frequent Flyer points that they can spend on
cheaper flights.
Goals
Earning points
from flights
Capabilities
Earning points
from spending
with partners
Viewing points
earned
Spending
points on
bookings
FeaturesViewing current points balance
View points needed to
achieve the next status level
Calculating points needed
for a given destination
The BDD way
The BDD way
The BDD way
The BDD way
The BDD way
The BDD way
The BDD way
The BDD way
Collaborate like you mean it!
Show me the value!
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Scenario: Login via LinkedIn
Scenario: Login via Twitter
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Scenario: Login via LinkedIn
Scenario: Login via Twitter
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Scenario: Login via LinkedIn
Scenario: Login via Twitter
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Scenario: Login via LinkedIn
Scenario: Login via Twitter
Scenario: Login via Facebook
“Don’t take my word for it”
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Feature: Authenticate using social media

In order to access the application more easily

As a new user
I want to authenticate using social media instead of having to provide
a username and password
Scenario: Login via LinkedIn
Scenario: Login via Twitter
Scenario: Login via Facebook
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
Feature: Locate a customer

In order to propose more relevant services to my customers

As a financial adviser

I want to view a customer's profile details
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
Feature: Locate a customer

In order to propose more relevant services to my customers

As a financial adviser

I want to view a customer's profile details
In order to propose more relevant services to my customers
What is the real
business goal?
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
Feature: Locate a customer

In order to propose more relevant services to my customers

As a financial adviser

I want to view a customer's profile details
As a financial adviser

What is the real
business goal?
What is the context of the
user who needs this feature?
“Why are we building this anyway?”
Feature: Display customer details

As a user
I want to view the customer's profile details

So that I can see the personal information on the customer
Feature: Locate a customer

In order to propose more relevant services to my customers

As a financial adviser

I want to view a customer's profile details
What is the real
business goal?
What is the context of the
user who needs this feature?
“Having the conversation
is more important than
recording the conversation
is more important than
automating the conversation”
- Liz Keogh
“No shit, Sherlock!”
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 |
“No shit, Sherlock!”
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 |
OK, but what else?
Get everyone involved early
Create a Dynamic Tension
“How would you test this?”
Scenario: Find a customer by various criteria

Given I am logged into the application

When I click Search

Then I will see search criteria options to search for the customer
by customer name, date of birth, and account number
“How would you test this?”
Scenario: Find a customer by various criteria

Given I am logged into the application

When I click Search

Then I will see search criteria options to search for the customer
by customer name, date of birth, and account number
“How would you test this?”
Scenario: Find a customer by various criteria

Given I am logged into the application

When I click Search

Then I will see search criteria options to search for the customer
by customer name, date of birth, and account number
Scenario: Find a customer by name

Given the following customers exist:

| id | first name | last name |

| 100 | Sarah-Jane | Smith |

| 101 | Sarah | Smith |

When I search for a customer using the following search criteria:

| name | Sarah-Jane Smith |

Then I should display the following customer:
| id | first name | last name |

| 100 | Sarah-Jane | Smith |
“How would you test this?”
Scenario: Find a customer by various criteria

Given I am logged into the application

When I click Search

Then I will see search criteria options to search for the customer
by customer name, date of birth, and account number
Scenario: Find a customer by name

Given the following customers exist:

| id | first name | last name |

| 100 | Sarah-Jane | Smith |

| 101 | Sarah | Smith |

When I search for a customer using the following search criteria:

| name | Sarah-Jane Smith |

Then I should display the following customer:
| id | first name | last name |

| 100 | Sarah-Jane | Smith |
Well-defined inputs
“How would you test this?”
Scenario: Find a customer by various criteria

Given I am logged into the application

When I click Search

Then I will see search criteria options to search for the customer
by customer name, date of birth, and account number
Scenario: Find a customer by name

Given the following customers exist:

| id | first name | last name |

| 100 | Sarah-Jane | Smith |

| 101 | Sarah | Smith |

When I search for a customer using the following search criteria:

| name | Sarah-Jane Smith |

Then I should display the following customer:
| id | first name | last name |

| 100 | Sarah-Jane | Smith |
Well-defined inputs
Well-defined outcomes
Get up close and personal
Everyone is responsible for quality!
Communication is essential
Embrace Living Documentation
Embrace Living Documentation
Embrace Living Documentation
Embrace Living Documentation
Embrace Living Documentation
Embrace Living Documentation
Embrace Living Documentation
So why do BDD?
Delight your
customers
Reduce Waste
Deliver faster and
more reliably
Improve Visibility
So why do BDD?
Delight your
customers
Reduce Waste
Deliver faster and
more reliably
Improve Visibility
So why do BDD?
Delight your
customers
Reduce Waste
Deliver faster and
more reliably
Improve Visibility
So why do BDD?
Delight your
customers
Reduce Waste
Deliver faster and
more reliably
Improve Visibility
So why do BDD?
Delight your
customers
Reduce Waste
Deliver faster and
more reliably
Improve Visibility
Questions?

More Related Content

What's hot

Authentication in Node.js
Authentication in Node.jsAuthentication in Node.js
Authentication in Node.js
Jason Pearson
 
Deliver double the value in half the time
Deliver double the value in half the timeDeliver double the value in half the time
Deliver double the value in half the time
David Hawks
 

What's hot (13)

Render v Rank SEO for JavaScript - SEMPDX EngagePDX 2019
Render v Rank  SEO for JavaScript - SEMPDX EngagePDX 2019Render v Rank  SEO for JavaScript - SEMPDX EngagePDX 2019
Render v Rank SEO for JavaScript - SEMPDX EngagePDX 2019
 
BDD - Keep love alive
BDD - Keep love aliveBDD - Keep love alive
BDD - Keep love alive
 
Authentication in Node.js
Authentication in Node.jsAuthentication in Node.js
Authentication in Node.js
 
The Inbounder London - Jono Alderson
The Inbounder London - Jono AldersonThe Inbounder London - Jono Alderson
The Inbounder London - Jono Alderson
 
GTM Clowns, fun and hacks - Search Elite - May 2017 Gerry White
GTM Clowns, fun and hacks - Search Elite - May 2017 Gerry WhiteGTM Clowns, fun and hacks - Search Elite - May 2017 Gerry White
GTM Clowns, fun and hacks - Search Elite - May 2017 Gerry White
 
Architectng UX
Architectng UXArchitectng UX
Architectng UX
 
User Story Slicing - easy way to split user stories
User Story Slicing - easy way to split user stories  User Story Slicing - easy way to split user stories
User Story Slicing - easy way to split user stories
 
Overcome the 6 Traps of Agile
Overcome the 6 Traps of AgileOvercome the 6 Traps of Agile
Overcome the 6 Traps of Agile
 
Myths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentMyths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven Development
 
Angularjs
AngularjsAngularjs
Angularjs
 
Angularjs
AngularjsAngularjs
Angularjs
 
Angular js book
Angular js bookAngular js book
Angular js book
 
Deliver double the value in half the time
Deliver double the value in half the timeDeliver double the value in half the time
Deliver double the value in half the time
 

Viewers also liked

BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
John Ferguson Smart Limited
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
dversaci
 

Viewers also liked (20)

BDD in Action: Building Software Right and Building the Right Software
BDD in Action: Building Software Right and Building the Right SoftwareBDD in Action: Building Software Right and Building the Right Software
BDD in Action: Building Software Right and Building the Right Software
 
Serenity and the Journey Pattern
Serenity and the Journey PatternSerenity and the Journey Pattern
Serenity and the Journey Pattern
 
All the world's a stage – the next step in automated testing practices
All the world's a stage – the next step in automated testing practicesAll the world's a stage – the next step in automated testing practices
All the world's a stage – the next step in automated testing practices
 
BDD in Action - building software that matters
BDD in Action - building software that mattersBDD in Action - building software that matters
BDD in Action - building software that matters
 
BDD in Action - Devoxx 2014
BDD in Action - Devoxx 2014BDD in Action - Devoxx 2014
BDD in Action - Devoxx 2014
 
Getting Comfortable with BDD
Getting Comfortable with BDDGetting Comfortable with BDD
Getting Comfortable with BDD
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 
BDD Anti-patterns
BDD Anti-patternsBDD Anti-patterns
BDD Anti-patterns
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 
BDD-Driven Microservices
BDD-Driven MicroservicesBDD-Driven Microservices
BDD-Driven Microservices
 
BDD: There's more to it than you think
BDD: There's more to it than you thinkBDD: There's more to it than you think
BDD: There's more to it than you think
 
BDD: What's in it for me?
BDD: What's in it for me?BDD: What's in it for me?
BDD: What's in it for me?
 
Bdd and Scrum Team Dynamics
Bdd and Scrum Team DynamicsBdd and Scrum Team Dynamics
Bdd and Scrum Team Dynamics
 
TDD & BDD
TDD & BDDTDD & BDD
TDD & BDD
 
TDD, BDD and mocks
TDD, BDD and mocksTDD, BDD and mocks
TDD, BDD and mocks
 
Building a Secure App with Google Polymer and Java / Spring
Building a Secure App with Google Polymer and Java / SpringBuilding a Secure App with Google Polymer and Java / Spring
Building a Secure App with Google Polymer and Java / Spring
 
Be Ready, Be Done: The Art of Slicing Stories
Be Ready, Be Done: The Art of Slicing StoriesBe Ready, Be Done: The Art of Slicing Stories
Be Ready, Be Done: The Art of Slicing Stories
 
Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)
 
Help! My Legacy Application is Unmaintainable!
Help! My Legacy Application is Unmaintainable!Help! My Legacy Application is Unmaintainable!
Help! My Legacy Application is Unmaintainable!
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 

Similar to BDD - Collaborate like you mean it!

Cadbury - Product Experience Ideas
Cadbury  - Product Experience IdeasCadbury  - Product Experience Ideas
Cadbury - Product Experience Ideas
Sahil Nagpal
 
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
Nate Otto
 
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer ComRainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
Andy Collyer
 

Similar to BDD - Collaborate like you mean it! (20)

27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
 
Landing pages Gilles.pptx
Landing pages Gilles.pptxLanding pages Gilles.pptx
Landing pages Gilles.pptx
 
Cadbury - Product Experience Ideas
Cadbury  - Product Experience IdeasCadbury  - Product Experience Ideas
Cadbury - Product Experience Ideas
 
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UXBehaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
Behaviour Driven Development (BDD) - Closing the Loop on a Great Fiori UX
 
Expo qa from user stories to automated acceptance tests with bdd
Expo qa   from user stories to automated acceptance tests with bddExpo qa   from user stories to automated acceptance tests with bdd
Expo qa from user stories to automated acceptance tests with bdd
 
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
An API of One's Own: Individual Identities as First-Class Citizens in the Ope...
 
An API of One’s Own
An API of One’s OwnAn API of One’s Own
An API of One’s Own
 
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolWebinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
 
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer ComRainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
Rainmaking Part 1 By Wearecloudberry Com For Andycollyer Com
 
Rainmaking Part 1 By Wearecloudberry Com
Rainmaking Part 1 By Wearecloudberry ComRainmaking Part 1 By Wearecloudberry Com
Rainmaking Part 1 By Wearecloudberry Com
 
Content personalization in AEM
Content personalization in AEMContent personalization in AEM
Content personalization in AEM
 
HookModel.pdf
HookModel.pdfHookModel.pdf
HookModel.pdf
 
HOOKMODEL.pdf
HOOKMODEL.pdfHOOKMODEL.pdf
HOOKMODEL.pdf
 
EIA2019Italy - Landing Pages - Gilles De Clerck
EIA2019Italy - Landing Pages - Gilles De ClerckEIA2019Italy - Landing Pages - Gilles De Clerck
EIA2019Italy - Landing Pages - Gilles De Clerck
 
Vozura Presentation : Light Color Version
Vozura Presentation : Light Color VersionVozura Presentation : Light Color Version
Vozura Presentation : Light Color Version
 
Vozura Presentation : Dark Color Version
Vozura Presentation : Dark Color VersionVozura Presentation : Dark Color Version
Vozura Presentation : Dark Color Version
 
Content-Driven Link Building: What Does Good Look Like?
Content-Driven Link Building: What Does Good Look Like?Content-Driven Link Building: What Does Good Look Like?
Content-Driven Link Building: What Does Good Look Like?
 
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
 
Journey to Testable Requirements
Journey to Testable RequirementsJourney to Testable Requirements
Journey to Testable Requirements
 
DSR Ghostwriting - Thought Leadership Writing Service Offering
DSR Ghostwriting - Thought Leadership Writing Service OfferingDSR Ghostwriting - Thought Leadership Writing Service Offering
DSR Ghostwriting - Thought Leadership Writing Service Offering
 

More from John Ferguson Smart Limited

More from John Ferguson Smart Limited (14)

Artisti e Condotierri - How can your team become artists of the 21st century ...
Artisti e Condotierri - How can your team become artists of the 21st century ...Artisti e Condotierri - How can your team become artists of the 21st century ...
Artisti e Condotierri - How can your team become artists of the 21st century ...
 
Engage! Bringing teams together to deliver software that makes a difference
Engage! Bringing teams together to deliver software that makes a differenceEngage! Bringing teams together to deliver software that makes a difference
Engage! Bringing teams together to deliver software that makes a difference
 
BE A POD OF DOLPHINS, NOT A DANCING ELEPHANT
BE A POD OF DOLPHINS, NOT A DANCING ELEPHANTBE A POD OF DOLPHINS, NOT A DANCING ELEPHANT
BE A POD OF DOLPHINS, NOT A DANCING ELEPHANT
 
Sustainable Test Automation with Serenity BDD and Screenplay
Sustainable Test Automation with Serenity BDD and ScreenplaySustainable Test Automation with Serenity BDD and Screenplay
Sustainable Test Automation with Serenity BDD and Screenplay
 
Feature Mapping Workshop
Feature Mapping WorkshopFeature Mapping Workshop
Feature Mapping Workshop
 
Engage! Bringing teams together to deliver software that makes a difference
Engage! Bringing teams together to deliver software that makes a differenceEngage! Bringing teams together to deliver software that makes a difference
Engage! Bringing teams together to deliver software that makes a difference
 
Beyond Given/When/Then - why diving into Cucumber is the wrong approach to ad...
Beyond Given/When/Then - why diving into Cucumber is the wrong approach to ad...Beyond Given/When/Then - why diving into Cucumber is the wrong approach to ad...
Beyond Given/When/Then - why diving into Cucumber is the wrong approach to ad...
 
Shift left-devoxx-pl
Shift left-devoxx-plShift left-devoxx-pl
Shift left-devoxx-pl
 
Screenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testingScreenplay - Next generation automated acceptance testing
Screenplay - Next generation automated acceptance testing
 
Cucumber and Spock Primer
Cucumber and Spock PrimerCucumber and Spock Primer
Cucumber and Spock Primer
 
BDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and SerenityBDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and Serenity
 
Its testing-jim-but-not-as-we-know-it-devoxx
Its testing-jim-but-not-as-we-know-it-devoxxIts testing-jim-but-not-as-we-know-it-devoxx
Its testing-jim-but-not-as-we-know-it-devoxx
 
TDD and BDD in Java 8 - what's in it for me?
TDD and BDD in Java 8 - what's in it for me?TDD and BDD in Java 8 - what's in it for me?
TDD and BDD in Java 8 - what's in it for me?
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 

Recently uploaded

Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
drm1699
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Marc Lester
 

Recently uploaded (20)

Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with Links
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
What is a Recruitment Management Software?
What is a Recruitment Management Software?What is a Recruitment Management Software?
What is a Recruitment Management Software?
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
 

BDD - Collaborate like you mean it!

  • 1. Collaborate like you mean it! BDD in the world of Agile 2.0
  • 2. John Ferguson Smart Introductions “I help teams of smart people 
 learn to work together more efficiently, 
 to deliver better software faster”
  • 3. Do you aim to build features that delight the customer?
  • 4. How long does it take a feature to go from an idea to into the hands of the users?
  • 5. We can’t afford to wait for long dev cycles
  • 6.
  • 7. Today’s market moves fast Our delivery strategies need to move just as fast
  • 8. Agile helps us meet these challenges
  • 9. But are classic agile practices enough?
  • 10. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  • 11. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  • 12. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  • 13. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  • 14. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  • 19. The traditional way Story bug reports Working code boring manual testing BA Developer Tester
  • 20. The traditional way Story bug reports Working code boring manual testing WASTE BA Developer Tester
  • 28. The BDD way Working code and Working Automated Acceptance Tests Shared understanding Story Examples Automated acceptance criteria
  • 29. The BDD way Working code and Working Automated Acceptance Tests Exploratory testing, usability testing... Shared understanding Story Examples Automated acceptance criteria
  • 30. The BDD way BA and/or product owner Tester Developer Automatable Acceptance Criteria Shared understanding
  • 32. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals The BDD way
  • 33. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals Earning points from flights Capabilities Earning points from spending with partners Viewing points earned Spending points on bookings The BDD way
  • 34. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals Earning points from flights Capabilities Earning points from spending with partners Viewing points earned Spending points on bookings FeaturesViewing current points balance View points needed to achieve the next status level Calculating points needed for a given destination The BDD way
  • 40.
  • 41.
  • 42.
  • 46. Show me the value!
  • 47. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password
  • 48. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  • 49. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  • 50. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  • 51. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter Scenario: Login via Facebook
  • 52. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter Scenario: Login via Facebook
  • 53. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer
  • 54. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer
  • 55. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details
  • 56. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details In order to propose more relevant services to my customers What is the real business goal?
  • 57. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details As a financial adviser
 What is the real business goal? What is the context of the user who needs this feature?
  • 58. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details What is the real business goal? What is the context of the user who needs this feature?
  • 59. “Having the conversation is more important than recording the conversation is more important than automating the conversation” - Liz Keogh
  • 60. “No shit, Sherlock!” 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 |
  • 61. “No shit, Sherlock!” 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 | OK, but what else?
  • 63. Create a Dynamic Tension
  • 64. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number
  • 65. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number
  • 66. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
  • 67. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith | Well-defined inputs
  • 68. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith | Well-defined inputs Well-defined outcomes
  • 69. Get up close and personal
  • 70. Everyone is responsible for quality!
  • 79. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  • 80. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  • 81. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  • 82. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  • 83. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility