SlideShare une entreprise Scribd logo
1  sur  44
BEHAVIOUR DRIVEN DEVELOPMENT AKA BDD
SOFTWARE THAT MATTERS
BDD
WHY ?
WHEN ?
HOW ?
WHO BRING BDD ?
He is a technology and organizational consultant who helps business leaders, managers and software teams
deliver quickly, successfully and sustainably.
Dan’s background in software delivery, Lean operations, coaching and organizational change.
DISCONNECTS IN LAUNCHING OF A PROJECT
the business being truly able to define the desired outcomes
the developer’s understanding of what needs to be built, and
the business’ understanding of the technical challenges their requirements may present.
BDD HELPS TO CONNECT THEM
the business being truly able to define the desired outcomes
the developer’s understanding of what needs to be built, and
the business’ understanding of the technical challenges their requirements
may present.
WHAT ?
 BDD is a process designed to aid the management and
the delivery of software development projects by
improving communication between engineers and
business professionals. In so doing, BDD ensures all
development projects remain focused on delivering
what the business actually needs while meeting all
requirements of the user.
KEY BENEFITS
All development work can be traced back directly to business objectives.
Software development meets user need. Satisfied users = good business.
Efficient prioritisation - business-critical features are delivered first.
All parties have a shared understanding of the project and can be involved in the communication.
A shared language ensures everyone (technical or not) has thorough visibility into the project’s progression.
Resulting software design that matches existing and supports upcoming business needs.
Improved quality code reducing costs of maintenance and minimizing project risk.
BDD APPROACHES
Practice of using examples
written in ubiquitous language
to illustrate behaviors (how users
will interact with the product).
Practice of using those examples
as the basis of automated tests.
As well as checking functionality
for the user, this ensures the
system works as defined by the
business throughout the
project lifetime.
CO-ORDINATES OF BDD
19.0760° N, 72.8777°
E
CO-ORDINATES OF BDD
Starting with a
Goal
Impact
Mapping
Value and
Complexity
Analysis
Planning In
Examples
Usage
Centred
Design
Ubiquitous
Language
3 Amigos
Development
Through
Examples
The BDD
Loops
STARTING WITH A GOAL
Every Behaviour Change
should help the Business to
achieve its goals
Projects should delivered in
sets of Capabilities aka
Working Features.
Understand exactly what you
want the software to achieve
from a business perspective.
S.M.A.R.T GOAL
Specific
Measura
ble
Attainabl
e
Relevant
Time-
bound
S.M.A.R.T GOAL
“We are going to generate more
revenue
by making more sales”
“We are planning to achieve a 15%
increase
in revenue through our online channels
in
6 months”
Not S.M.A.R.T
S.M.A.R.T
Having a SMART goal not only helps to focus the project, but allows the impact of the
to be measured.
IMPACT MAPPING
Now we have sets our goal its time for Impact
IMPACT MAPPING
 Don’t add features to applications just for sake of more features.
 Its not always a case that to achieve a goal you have to add a new feature.
 It is important to understand that not all of these features need the same level
of attention, care, or even development practice, and it can be easy to spread
the development team’s attention too thinly across an entire backlog.
IMPACT MAPPING
 Impact Mapping is a technique that helps you to outline
all the alternative ways to reach your decided goal by
analyzing users’ behavior. We assume that software
cannot achieve business goals on its own. The only way
software can get us closer to the goal is by supporting
particular human behaviors.
LEVELS OF IMPACT MAP
One or More Ways To Support or Prevent These Impacts
One or More Impacts
One or More Actors
Business Goal
LEVELS OF IMPACT MAP
Customer or Team that could help or hinder the project from achieving the
goal.
Actors
LEVELS OF IMPACT MAP
Each actor could have multiple ways to help or hinder achieving the goal, we
call
these impacts..
Impacts
LEVELS OF IMPACT MAP
What the project or delivery team can do in order to support or prevent
particular impacts from happening.
Support or Prevent Impacts
VALUE AND COMPLEXITY ANALYSIS
Value analysis helps us to quickly identify low-cost,
high-value features in the backlog.
Complexity analysis helps us to choose the right
development and collaboration approach to the
project as a whole, as well as each individual feature.
PLANNING IN EXAMPLES
Imagine we have been given a task to add an ‘include VAT and delivery cost to the total price of the
customer basket’ feature to an existing ecommerce project with following set of business rules:
VAT is 20%
Delivery cost for small
basket (less than $20)
is $3
Delivery cost for
medium basket (more
than $20) is $2
PLANNING IN EXAMPLES
Big ?
 Rules do not specify whether to add VAT before delivery cost to
the basket total or after.
 How should you handle a situation where the basket delivery cost
is exactly $20?
 What happens if there are multiple products in the basket?
PLANNING IN EXAMPLES
 Given a product is priced at $15, when I add it to
the basket, then the total basket price should be
$21
 Given a product is priced at $25, when I add it to
the basket, then the total basket price should be
$32
 Given a product is priced at $20, when I add it to
the basket, then the total basket price should be
$26
UBIQUITOUS LANGUAGE
 Almost impossible, to form a two-way communication between
groups of people that operate in different business spheres.
 They can stumble upon situations where both sides use the same
language and even words, but imply a different meaning.
UBIQUITOUS LANGUAGE
Share
UBIQUITOUS LANGUAGE
 BDD attempts to eliminate the cost of translation by reducing the size of
feedback loops and using the example-based conversation about each
feature before they are built.
 But just asking for examples is not enough, because different sides will use
different language to produce examples, eventually causing discrepancies.
 The solution for this problem is the concept the BDD community borrowed
from DDD (Domain Driven Design): ubiquitous language.
INTRODUCING THE 3 AMIGOS
One of the core ideas behind BDD is that no single person
has the full answer to the problem.
INTRODUCING THE 3 AMIGOS
3 Amigos
Business
Roles
Developer Tester
INTRODUCING THE 3 AMIGOS
Business Roles – Product Owner or Analyst
• Business value and risk evaluation domain.
• Their insight and input is extremely important if you want to
INTRODUCING THE 3 AMIGOS
Developers
• In the most part, remain in the so-called ‘solution’ space.
• Input will give you an invaluable context into how much detail the
INTRODUCING THE 3 AMIGOS
Testers
• Usually represent the ‘problem’ space.
• They see flaws happening in the system even before development
commences.
• Plays crucial role while analysing negative impact in application.
• Identifies blanks in requirements.
3 AMIGOS
 The core premise of BDD is not to replace these different
expertise, but to move them all in one room and have a
meaningful discussion about each feature before
development starts. This process is called the Three
Amigos or an Example Workshop and must be
conducted before the team or a developer commits to
deliver the feature in question.
DEVELOPMENT THROUGH EXAMPLES
Feed an example to an
automation tool (such as
Behat, Cucumber or
SpecFlow).
• Feature
Files
Will transform it into the
automated specification.
• Step
Definitions
Can then use this automated
specification to drive the
application development.
• Developm
nt
GHERKIN FORMAT & SYNTAX
 Gherkin files are plain-text and have the extension .feature
 Keywords:
 Feature • And
 Background • But
 Scenario • *
 Given • Scenario Outline
 When
 Then
FEATURE
 The feature keyword is used to group a set of tests (scenarios)
 The text on the same line as the keyword is considered the name of the
feature
 All text between the initial line and a line that starts with Scenario,
Background, or Scenario Outline is considered part of a feature’s
description.
 It is conventional to name a .feature file by taking the name of the feature,
converting to lowercase and replacing spaces with underlines
 feedback_when_entering_invalid_credit_card_details.feature
COMING UP WITH FEATURES: THINK OF YOUR USERS
 In order to identify features in your system, you can use what the
authors describe as a “feature injection template”
 In order to <meet some goal> as a <type of user> I want <a feature>
 This is good advice
 The functional requirements of a system are determined by asking the
question
 for each type of user
 what goals are they trying to achieve?
 what tasks must they perform to achieve those goals?
 how does our system support those tasks?
SCENARIOS
 Scenarios follow a pattern
 Configure the system
 Have it perform a specific action
 Verify that the new state of the system is what we expected
 We start with a context, describe an action, and check the outcome
SCENARIOS
 Gherkin provides three keywords to describe contexts, actions, and
outcomes
 Given: establish context
 When: perform action
 Then: check outcome
 Example
 Scenario: Withdraw money from account
 Given I have $100 in my account
 When I request $20
 Then $20 should be dispensed
SCENARIOS
 Additional steps to the context, action, and outcome sections using the
keywords and and but
 They allow you to specify scenarios in more detail
 Scenario: Attempt withdrawal using stolen card
 Given I have $100 in my account
 But my card is invalid
 When I request $50
 Then my card should not be returned
 And I should be told to contact the bank
 These keywords help increase the expressiveness of the scenario
SCENARIOS
 In creating scenarios, a key design goal (indeed requirement) is
that they must be stateless; as the book says
 “Each scenario must make sense and be able to be executed
independently of any other scenario”
 You can’t have the success condition of one scenario depend on
the fact that some other scenario executed before it
 Each scenario creates its particular context, executes one thing, and
tests the result
SCENARIOS
 Having stateless scenarios provides multiple benefits
 Tests are simpler and easier to understand
 You can run just a subset of your scenarios and you don’t have to
worry about your test set breaking
 Depending on your system, you might be able to run tests in parallel
reducing the amount of time it takes to execute all of your tests
SCENARIOS
 Having stateless scenarios provides multiple benefits
 Tests are simpler and easier to understand
 You can run just a subset of your scenarios and you don’t have to
worry about your test set breaking
 Depending on your system, you might be able to run tests in parallel
reducing the amount of time it takes to execute all of your tests
To Be Continued . . .

Contenu connexe

Tendances

BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumLiraz Shay
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberKMS Technology
 
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 Testingdversaci
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction SheetvodQA
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Gáspár Nagy
 
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of AutomationvodQA
 
Selenium Design Patterns
Selenium Design PatternsSelenium Design Patterns
Selenium Design PatternsLiraz Shay
 
Intro to Service Worker API and its use cases
Intro to Service Worker API and its use casesIntro to Service Worker API and its use cases
Intro to Service Worker API and its use casessatejsahu
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternSQALab
 
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 UXJohn Patterson
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Mindfire Solutions
 
Brace yourself from automation death trap
Brace yourself from automation death trapBrace yourself from automation death trap
Brace yourself from automation death trapPrasad Kalgutkar
 
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIOJumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIOJosh Cypher
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choicetoddbr
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object PatternAnand Bagmar
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with CucumberAsheesh Mehdiratta
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1Qualitest
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftAspire Systems
 
From Good to Great: Functional and Acceptance Testing in WordPress.
From Good to Great: Functional and Acceptance Testing in WordPress.From Good to Great: Functional and Acceptance Testing in WordPress.
From Good to Great: Functional and Acceptance Testing in WordPress.David Aguilera
 

Tendances (20)

BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 
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
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction Sheet
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
 
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of Automation
 
Selenium Design Patterns
Selenium Design PatternsSelenium Design Patterns
Selenium Design Patterns
 
Intro to Service Worker API and its use cases
Intro to Service Worker API and its use casesIntro to Service Worker API and its use cases
Intro to Service Worker API and its use cases
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
 
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
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)
 
Brace yourself from automation death trap
Brace yourself from automation death trapBrace yourself from automation death trap
Brace yourself from automation death trap
 
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIOJumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
Jumpstarting Testing In Your Organization with Selenium, Cucumber, & WebdriverIO
 
Cucumber & gherkin language
Cucumber & gherkin languageCucumber & gherkin language
Cucumber & gherkin language
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object Pattern
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shift
 
From Good to Great: Functional and Acceptance Testing in WordPress.
From Good to Great: Functional and Acceptance Testing in WordPress.From Good to Great: Functional and Acceptance Testing in WordPress.
From Good to Great: Functional and Acceptance Testing in WordPress.
 

En vedette

BDD - beyond: Given, When and Then
BDD - beyond: Given, When and ThenBDD - beyond: Given, When and Then
BDD - beyond: Given, When and ThenRiverGlide
 
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...Scrum Bangalore
 
Gherkin - crash course
Gherkin - crash courseGherkin - crash course
Gherkin - crash courseMichele Costa
 
A New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story SplittingA New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story SplittingDr. Alexander Schwartz
 
Making the Move to Behavior Driven Development
Making the Move to Behavior Driven DevelopmentMaking the Move to Behavior Driven Development
Making the Move to Behavior Driven DevelopmentQASymphony
 
Introduction to bdd
Introduction to bddIntroduction to bdd
Introduction to bddantannatna
 
Tutorial: Implementing Specification-By-Example with Gherkin
Tutorial: Implementing Specification-By-Example with GherkinTutorial: Implementing Specification-By-Example with Gherkin
Tutorial: Implementing Specification-By-Example with GherkinChristian Hassa
 
Specification by example and agile acceptance testing
Specification by example and agile acceptance testingSpecification by example and agile acceptance testing
Specification by example and agile acceptance testinggojkoadzic
 
Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Vishal Biyani
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with GherkinChristian Hassa
 
Introduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaIntroduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaSeb Rose
 

En vedette (12)

BDD - beyond: Given, When and Then
BDD - beyond: Given, When and ThenBDD - beyond: Given, When and Then
BDD - beyond: Given, When and Then
 
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...
Scrum Bangalore 13th meet up 13 june 2015 - behaviour driven development - vi...
 
Phpunit testing
Phpunit testingPhpunit testing
Phpunit testing
 
Gherkin - crash course
Gherkin - crash courseGherkin - crash course
Gherkin - crash course
 
A New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story SplittingA New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story Splitting
 
Making the Move to Behavior Driven Development
Making the Move to Behavior Driven DevelopmentMaking the Move to Behavior Driven Development
Making the Move to Behavior Driven Development
 
Introduction to bdd
Introduction to bddIntroduction to bdd
Introduction to bdd
 
Tutorial: Implementing Specification-By-Example with Gherkin
Tutorial: Implementing Specification-By-Example with GherkinTutorial: Implementing Specification-By-Example with Gherkin
Tutorial: Implementing Specification-By-Example with Gherkin
 
Specification by example and agile acceptance testing
Specification by example and agile acceptance testingSpecification by example and agile acceptance testing
Specification by example and agile acceptance testing
 
Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
 
Introduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for JavaIntroduction to BDD with Cucumber for Java
Introduction to BDD with Cucumber for Java
 

Similaire à BDD Basics for Better Business-Dev Communication

Product management class rookie to pro
Product management class rookie to proProduct management class rookie to pro
Product management class rookie to proBim Akinfenwa
 
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 bddEduardo Riol
 
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 RiolatSistemas
 
Software product development tips to develop a quality software in 2021
Software product development  tips to develop a quality software in 2021Software product development  tips to develop a quality software in 2021
Software product development tips to develop a quality software in 2021SnehaDas60
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introductionwojtek_s
 
Define and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerDefine and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerAlan Kan
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
Benefits of Agile Software Development for Senior Management
Benefits of Agile Software Development for Senior ManagementBenefits of Agile Software Development for Senior Management
Benefits of Agile Software Development for Senior ManagementDavid Updike
 
Scaling Software Delivery.pdf
Scaling Software Delivery.pdfScaling Software Delivery.pdf
Scaling Software Delivery.pdfTiffany Jachja
 
Software engineering fundamentals
Software engineering fundamentalsSoftware engineering fundamentals
Software engineering fundamentalsJigyasaAgrawal7
 
Using feature teams to deliver high business value
Using feature teams to deliver high business valueUsing feature teams to deliver high business value
Using feature teams to deliver high business valueThoughtworks
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingNewton Day Uploads
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
How Custom is your Org? CEER at Dreamforce 2019
How Custom is your Org?  CEER at Dreamforce 2019How Custom is your Org?  CEER at Dreamforce 2019
How Custom is your Org? CEER at Dreamforce 2019Steven Herod
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanQA or the Highway
 
How much does it cost to build an app
How much does it cost to build an appHow much does it cost to build an app
How much does it cost to build an appCiara Hautau
 

Similaire à BDD Basics for Better Business-Dev Communication (20)

Product management class rookie to pro
Product management class rookie to proProduct management class rookie to pro
Product management class rookie to pro
 
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
 
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
 
Software product development tips to develop a quality software in 2021
Software product development  tips to develop a quality software in 2021Software product development  tips to develop a quality software in 2021
Software product development tips to develop a quality software in 2021
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
What is jad_session
What is jad_sessionWhat is jad_session
What is jad_session
 
Define and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements ComposerDefine and Manage Requirements with IBM Rational Requirements Composer
Define and Manage Requirements with IBM Rational Requirements Composer
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
SE-Lecture-4.pptx
SE-Lecture-4.pptxSE-Lecture-4.pptx
SE-Lecture-4.pptx
 
Benefits of Agile Software Development for Senior Management
Benefits of Agile Software Development for Senior ManagementBenefits of Agile Software Development for Senior Management
Benefits of Agile Software Development for Senior Management
 
Scaling Software Delivery.pdf
Scaling Software Delivery.pdfScaling Software Delivery.pdf
Scaling Software Delivery.pdf
 
Software engineering fundamentals
Software engineering fundamentalsSoftware engineering fundamentals
Software engineering fundamentals
 
Using feature teams to deliver high business value
Using feature teams to deliver high business valueUsing feature teams to deliver high business value
Using feature teams to deliver high business value
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without coding
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Scrum it up!
Scrum it up!Scrum it up!
Scrum it up!
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
 
How Custom is your Org? CEER at Dreamforce 2019
How Custom is your Org?  CEER at Dreamforce 2019How Custom is your Org?  CEER at Dreamforce 2019
How Custom is your Org? CEER at Dreamforce 2019
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
How much does it cost to build an app
How much does it cost to build an appHow much does it cost to build an app
How much does it cost to build an app
 

Dernier

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Dernier (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

BDD Basics for Better Business-Dev Communication

  • 1. BEHAVIOUR DRIVEN DEVELOPMENT AKA BDD SOFTWARE THAT MATTERS
  • 3. WHO BRING BDD ? He is a technology and organizational consultant who helps business leaders, managers and software teams deliver quickly, successfully and sustainably. Dan’s background in software delivery, Lean operations, coaching and organizational change.
  • 4. DISCONNECTS IN LAUNCHING OF A PROJECT the business being truly able to define the desired outcomes the developer’s understanding of what needs to be built, and the business’ understanding of the technical challenges their requirements may present.
  • 5. BDD HELPS TO CONNECT THEM the business being truly able to define the desired outcomes the developer’s understanding of what needs to be built, and the business’ understanding of the technical challenges their requirements may present.
  • 6. WHAT ?  BDD is a process designed to aid the management and the delivery of software development projects by improving communication between engineers and business professionals. In so doing, BDD ensures all development projects remain focused on delivering what the business actually needs while meeting all requirements of the user.
  • 7. KEY BENEFITS All development work can be traced back directly to business objectives. Software development meets user need. Satisfied users = good business. Efficient prioritisation - business-critical features are delivered first. All parties have a shared understanding of the project and can be involved in the communication. A shared language ensures everyone (technical or not) has thorough visibility into the project’s progression. Resulting software design that matches existing and supports upcoming business needs. Improved quality code reducing costs of maintenance and minimizing project risk.
  • 8. BDD APPROACHES Practice of using examples written in ubiquitous language to illustrate behaviors (how users will interact with the product). Practice of using those examples as the basis of automated tests. As well as checking functionality for the user, this ensures the system works as defined by the business throughout the project lifetime.
  • 10. CO-ORDINATES OF BDD Starting with a Goal Impact Mapping Value and Complexity Analysis Planning In Examples Usage Centred Design Ubiquitous Language 3 Amigos Development Through Examples The BDD Loops
  • 11. STARTING WITH A GOAL Every Behaviour Change should help the Business to achieve its goals Projects should delivered in sets of Capabilities aka Working Features. Understand exactly what you want the software to achieve from a business perspective.
  • 13. S.M.A.R.T GOAL “We are going to generate more revenue by making more sales” “We are planning to achieve a 15% increase in revenue through our online channels in 6 months” Not S.M.A.R.T S.M.A.R.T Having a SMART goal not only helps to focus the project, but allows the impact of the to be measured.
  • 14. IMPACT MAPPING Now we have sets our goal its time for Impact
  • 15. IMPACT MAPPING  Don’t add features to applications just for sake of more features.  Its not always a case that to achieve a goal you have to add a new feature.  It is important to understand that not all of these features need the same level of attention, care, or even development practice, and it can be easy to spread the development team’s attention too thinly across an entire backlog.
  • 16. IMPACT MAPPING  Impact Mapping is a technique that helps you to outline all the alternative ways to reach your decided goal by analyzing users’ behavior. We assume that software cannot achieve business goals on its own. The only way software can get us closer to the goal is by supporting particular human behaviors.
  • 17. LEVELS OF IMPACT MAP One or More Ways To Support or Prevent These Impacts One or More Impacts One or More Actors Business Goal
  • 18. LEVELS OF IMPACT MAP Customer or Team that could help or hinder the project from achieving the goal. Actors
  • 19. LEVELS OF IMPACT MAP Each actor could have multiple ways to help or hinder achieving the goal, we call these impacts.. Impacts
  • 20. LEVELS OF IMPACT MAP What the project or delivery team can do in order to support or prevent particular impacts from happening. Support or Prevent Impacts
  • 21. VALUE AND COMPLEXITY ANALYSIS Value analysis helps us to quickly identify low-cost, high-value features in the backlog. Complexity analysis helps us to choose the right development and collaboration approach to the project as a whole, as well as each individual feature.
  • 22. PLANNING IN EXAMPLES Imagine we have been given a task to add an ‘include VAT and delivery cost to the total price of the customer basket’ feature to an existing ecommerce project with following set of business rules: VAT is 20% Delivery cost for small basket (less than $20) is $3 Delivery cost for medium basket (more than $20) is $2
  • 23. PLANNING IN EXAMPLES Big ?  Rules do not specify whether to add VAT before delivery cost to the basket total or after.  How should you handle a situation where the basket delivery cost is exactly $20?  What happens if there are multiple products in the basket?
  • 24. PLANNING IN EXAMPLES  Given a product is priced at $15, when I add it to the basket, then the total basket price should be $21  Given a product is priced at $25, when I add it to the basket, then the total basket price should be $32  Given a product is priced at $20, when I add it to the basket, then the total basket price should be $26
  • 25. UBIQUITOUS LANGUAGE  Almost impossible, to form a two-way communication between groups of people that operate in different business spheres.  They can stumble upon situations where both sides use the same language and even words, but imply a different meaning.
  • 27. UBIQUITOUS LANGUAGE  BDD attempts to eliminate the cost of translation by reducing the size of feedback loops and using the example-based conversation about each feature before they are built.  But just asking for examples is not enough, because different sides will use different language to produce examples, eventually causing discrepancies.  The solution for this problem is the concept the BDD community borrowed from DDD (Domain Driven Design): ubiquitous language.
  • 28. INTRODUCING THE 3 AMIGOS One of the core ideas behind BDD is that no single person has the full answer to the problem.
  • 29. INTRODUCING THE 3 AMIGOS 3 Amigos Business Roles Developer Tester
  • 30. INTRODUCING THE 3 AMIGOS Business Roles – Product Owner or Analyst • Business value and risk evaluation domain. • Their insight and input is extremely important if you want to
  • 31. INTRODUCING THE 3 AMIGOS Developers • In the most part, remain in the so-called ‘solution’ space. • Input will give you an invaluable context into how much detail the
  • 32. INTRODUCING THE 3 AMIGOS Testers • Usually represent the ‘problem’ space. • They see flaws happening in the system even before development commences. • Plays crucial role while analysing negative impact in application. • Identifies blanks in requirements.
  • 33. 3 AMIGOS  The core premise of BDD is not to replace these different expertise, but to move them all in one room and have a meaningful discussion about each feature before development starts. This process is called the Three Amigos or an Example Workshop and must be conducted before the team or a developer commits to deliver the feature in question.
  • 34. DEVELOPMENT THROUGH EXAMPLES Feed an example to an automation tool (such as Behat, Cucumber or SpecFlow). • Feature Files Will transform it into the automated specification. • Step Definitions Can then use this automated specification to drive the application development. • Developm nt
  • 35. GHERKIN FORMAT & SYNTAX  Gherkin files are plain-text and have the extension .feature  Keywords:  Feature • And  Background • But  Scenario • *  Given • Scenario Outline  When  Then
  • 36. FEATURE  The feature keyword is used to group a set of tests (scenarios)  The text on the same line as the keyword is considered the name of the feature  All text between the initial line and a line that starts with Scenario, Background, or Scenario Outline is considered part of a feature’s description.  It is conventional to name a .feature file by taking the name of the feature, converting to lowercase and replacing spaces with underlines  feedback_when_entering_invalid_credit_card_details.feature
  • 37. COMING UP WITH FEATURES: THINK OF YOUR USERS  In order to identify features in your system, you can use what the authors describe as a “feature injection template”  In order to <meet some goal> as a <type of user> I want <a feature>  This is good advice  The functional requirements of a system are determined by asking the question  for each type of user  what goals are they trying to achieve?  what tasks must they perform to achieve those goals?  how does our system support those tasks?
  • 38. SCENARIOS  Scenarios follow a pattern  Configure the system  Have it perform a specific action  Verify that the new state of the system is what we expected  We start with a context, describe an action, and check the outcome
  • 39. SCENARIOS  Gherkin provides three keywords to describe contexts, actions, and outcomes  Given: establish context  When: perform action  Then: check outcome  Example  Scenario: Withdraw money from account  Given I have $100 in my account  When I request $20  Then $20 should be dispensed
  • 40. SCENARIOS  Additional steps to the context, action, and outcome sections using the keywords and and but  They allow you to specify scenarios in more detail  Scenario: Attempt withdrawal using stolen card  Given I have $100 in my account  But my card is invalid  When I request $50  Then my card should not be returned  And I should be told to contact the bank  These keywords help increase the expressiveness of the scenario
  • 41. SCENARIOS  In creating scenarios, a key design goal (indeed requirement) is that they must be stateless; as the book says  “Each scenario must make sense and be able to be executed independently of any other scenario”  You can’t have the success condition of one scenario depend on the fact that some other scenario executed before it  Each scenario creates its particular context, executes one thing, and tests the result
  • 42. SCENARIOS  Having stateless scenarios provides multiple benefits  Tests are simpler and easier to understand  You can run just a subset of your scenarios and you don’t have to worry about your test set breaking  Depending on your system, you might be able to run tests in parallel reducing the amount of time it takes to execute all of your tests
  • 43. SCENARIOS  Having stateless scenarios provides multiple benefits  Tests are simpler and easier to understand  You can run just a subset of your scenarios and you don’t have to worry about your test set breaking  Depending on your system, you might be able to run tests in parallel reducing the amount of time it takes to execute all of your tests