SlideShare a Scribd company logo
@TheMattBrunt
BEHAVIOUR DRIVEN
DEVELOPMENT
TELLING STORIES THROUGH CODE
@TheMattBrunt
ABOUT THE
AUTHOR…
@TheMattBrunt
Senior Software Engineer at
Viva IT
@TheMattBrunt
@PHPem
@TheMattBrunt
THE PROLOGUE
@TheMattBrunt
BEFORE WE TALK
ABOUT BDD
@TheMattBrunt
LET’S TALK ABOUT
TESTING
@TheMattBrunt
WHO HERE
WRITES TESTS?
@TheMattBrunt
AFTER CODE?
@TheMattBrunt
BEFORE CODE?
@TheMattBrunt
BE HONEST...
@TheMattBrunt
@TheMattBrunt
@TheMattBrunt
TERMINOLOGY
@TheMattBrunt
UNIT TESTS
@TheMattBrunt
INTEGRATION
TESTS
@TheMattBrunt
@TheMattBrunt
FUNCTIONAL
TESTS
@TheMattBrunt
@TheMattBrunt
ACCEPTANCE
TESTS
@TheMattBrunt
@TheMattBrunt
REJECTION TESTS
@TheMattBrunt
TESTING PYRAMID
@TheMattBrunt
COMPONENTS IN ISOLATION
COMPONENTS
WORKING TOGETHER
END-TO-END
TESTS
@TheMattBrunt
UNIT TESTS
INTEGRATION TESTS
UI TESTS
@TheMattBrunt
MORE
TERMINOLOGY
@TheMattBrunt
DUMMIES, STUBS,
FAKES, MOCKS
https://adamcod.es/2014/05/15/test-doubles-mock-vs-stub.html
@TheMattBrunt
CRITERIA,
FIXTURES
@TheMattBrunt
EDGE-CASES,
END-TO-END
@TheMattBrunt
TESTING IS
JARGON-FILLED
@TheMattBrunt
ACCEPTANCE AGILE AUTOMATION BDD
BEHAVIOUR BLACK-BOX BOUNDARIES
CONTEXTS CRITERIA DDD DOUBLES
DUMMIES EDGE-CASES END-TO-END
FACTORIES FAKES FEATURES
FIXTURES FUNCTIONAL INTEGRATION
MOCKS OUTSIDE-IN SCENARIOS
SPECS SPIES STUBS TDD UNITS
@TheMattBrunt
@TheMattBrunt
WHAT DOES IT ALL
MEAN?
@TheMattBrunt
JARGON BLOCKS
ENTRY
@TheMattBrunt
IGNORE JARGON
@TheMattBrunt
TEST TO FEEL
COMFORTABLE
@TheMattBrunt
@TheMattBrunt
THE ORIGIN
STORY
@TheMattBrunt
TDD VS BDD
@TheMattBrunt
BEHAVIOUR DRIVEN
DEVELOPMENT
@TheMattBrunt
HOW DO THEY GET
ALONG?
@TheMattBrunt
BDD IS TDD ‘DONE RIGHT’
IT’S OFTEN SAID THAT…
@TheMattBrunt
BDD IS A SECOND-GENERATION, OUTSIDE-IN, PULL-
BASED, MULTIPLE-STAKEHOLDER, MULTIPLE-
SCALE, HIGH-AUTOMATION, AGILE METHODOLOGY.
DAN NORTH
http://dannorth.net/whats-in-a-story/
@TheMattBrunt
SECOND-GENERATION
BREAK DOWN
@TheMattBrunt
MULTIPLE-STAKEHOLDER
BREAK DOWN
@TheMattBrunt
AGILE METHODOLOGY
BREAK DOWN
@TheMattBrunt
MULTIPLE
STAKEHOLDERS
@TheMattBrunt
UBIQUITOUS LANGUAGE
AN IMPORTANT PART OF BDD IS…
@TheMattBrunt
CONVERSATIONS
ARE KEY
@TheMattBrunt
HAVING
CONVERSATIONS
CAPTURING
CONVERSATIONS>
AUTOMATING
CONVERSATIONS>
@TheMattBrunt
HAVE CONVERSATIONS
BEFORE YOU START
WRITING CODE
@TheMattBrunt
CAPTURE THE CONVERSATIONS
SO YOU CAN USE THEM TO
DRIVE DEVELOPMENT
@TheMattBrunt
BDD IS THE ART OF USING EXAMPLES IN
CONVERSATIONS TO ILLUSTRATE BEHAVIOUR
LIZ KEOGH
@TheMattBrunt
@TheMattBrunt
CONVERSATIONS
ARE KEY
@TheMattBrunt
EXAMPLES ARE
ESSENTIAL
@TheMattBrunt
LET’S MEET THE
CHARACTERS
OF OUR STORY
@TheMattBrunt
JBEHAVE
JAVA HAS
@TheMattBrunt
JDAVE
JAVA HAS
???
J
@TheMattBrunt
SPECFLOW
.NET HAS
@TheMattBrunt
NSPEC
.NET HAS
@TheMattBrunt
BEHAT
PHP HAS
???
@TheMattBrunt
PHPSPEC
PHP HAS
@TheMattBrunt
BEHAVE
PYTHON HAS
@TheMattBrunt
LETTUCE
PYTHON HAS
@TheMattBrunt
CUCUMBER
RUBY HAS
@TheMattBrunt
RSPEC
RUBY HAS
@TheMattBrunt
TYPES OF BDD
@TheMattBrunt
SPEC BDD
@TheMattBrunt
STORY BDD
(SCENARIOS)
@TheMattBrunt
PICK THE RIGHT
TOOL FOR THE JOB
@TheMattBrunt
COMPONENTS IN ISOLATION
COMPONENTS
WORKING TOGETHER
END-TO-END
TESTS
SPEC BDD
@TheMattBrunt
COMPONENTS IN ISOLATION
COMPONENTS
WORKING TOGETHER
END-TO-END
TESTS
SCENARIO
BDD
@TheMattBrunt
WE’LL BE LOOKING
AT SCENARIO BDD
@TheMattBrunt
SO, HOW DO WE
WORK WITH THIS?
@TheMattBrunthttps://github.com/cucumber/cucumber/wiki/Gherkin
GHERKIN DSL
@TheMattBrunt
HUMAN READABLE
GHERKIN IS…
@TheMattBrunt
KEYWORD BASED
GHERKIN IS…
@TheMattBrunt
LINE ORIENTED
GHERKIN IS…
@TheMattBrunt
DOCUMENTATION
GHERKIN IS…
@TheMattBrunt
AUTOMATION
GHERKIN ALLOWS…
@TheMattBrunt
DEVELOPERS
LOVE AUTOMATION
@TheMattBrunt
BE DESCRIPTIVE
@TheMattBrunt
WRITING
STORIES
@TheMattBrunt
FEATURES ARE
STORIES
@TheMattBrunt
SINGLE FEATURE
PER FILE
@TheMattBrunt
Feature:
As a [role]
I want [feature]
So that [benefit]
@TheMattBrunt
SCENARIOS
@TheMattBrunt
SCENARIOS ARE
EXAMPLES
@TheMattBrunt
EXAMPLES ARE
ESSENTIAL
@TheMattBrunt
MULTIPLE SCENARIOS
FEATURES CAN HAVE
@TheMattBrunt
@TheMattBrunt
SORRY…
@TheMattBrunt
STEPS
@TheMattBrunt
MULTIPLE STEPS
SCENARIOS HAVE…
@TheMattBrunt
@TheMattBrunt
IMPORTANT
KEYWORDS
@TheMattBrunt
GIVEN
PUTS THE SYSTEM IN A KNOWN STATE
@TheMattBrunt
WHEN
DESCRIBE A KEY ACTION
@TheMattBrunt
THEN
DESCRIBE AN OBSERVABLE OUTCOME
@TheMattBrunt
Given I have a “Large T-Shirt” product
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
@TheMattBrunt
AND
BUT THERE’S ALSO…
@TheMattBrunt
Given I have a “Large T-Shirt” product that costs £9.99
And I have an empty basket
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
And the basket total should be £9.99
@TheMattBrunt
STORY STRUCTURE:
THE MAKEUP OF A
FEATURE FILE
@TheMattBrunt
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
FEATURE
@TheMattBrunt
SCENARIO
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
@TheMattBrunt
STEP
Feature: As a customer
I want to be able to add products to my basket
So that I can have a gift for my partner
Scenario: I can add a product to the basket
Given I have a "Large T-Shirt" product
When I add a “Large T-Shirt” to my basket
Then I should have a “Large T-Shirt” in my basket
@TheMattBrunt
THIS IS GREAT, BUT HOW
DOES IT RELATE TO CODE?
@TheMattBrunt
STEP DEFINITIONS
@TheMattBrunt
Given I have a “Large T-Shirt” product
When I add that product to my basket
Then I should see that product in my basket
@TheMattBrunt
Given I have a “Large T-Shirt” product
When I add that product to my basket
Then I should see that product in my basket
@TheMattBrunt
Given I have a “Large T-Shirt” product
When I add that product to my basket
Then I should see that product in my basket
@TheMattBrunt
Given I have a “Large T-Shirt” product
When I add that product to my basket
Then I should see that product in my basket
@TheMattBrunt
@TheMattBrunt
ARGUMENTS
@TheMattBrunt
@TheMattBrunt
THAT’S BETTER
@TheMattBrunt
TAGS
@TheMattBrunt
SUITES &
PROFILES
@TheMattBrunt
TEST DIFFERENT (OR THE SAME) FEATURES
WITH DIFFERENT CONFIGURATIONS.
SUITES ALLOW YOU TO…
@TheMattBrunt
YOU CAN HAVE A UI SUITE THAT USES
DIFFERENT STEP DEFINITIONS THAN A
SERVICE LEVEL SUITE
FOR EXAMPLE:
@TheMattBrunt
THEY COULD ALSO USE DIFFERENT,
OR EVEN THE SAME FEATURE FILES
FOR EXAMPLE:
@TheMattBrunt
YOU CAN USE THE SAME FEATURE FILE
TO TEST DIFFERENT IMPLEMENTATIONS
WITH SUITES AND TAGS…
@TheMattBrunt
YOU CAN CHANGE IMPLEMENTATION WITHOUT
CHANGING YOUR DOCUMENTED BUSINESS
RULES
WITH SUITES AND TAGS…
@TheMattBrunt
THIS IS WHERE THE POWER
LIES
FOR ME…
@TheMattBrunt
@TheMattBrunt
IMPLEMENTATION CHANGES
MORE FREQUENTLY THAN
BUSINESS RULES
@TheMattBrunt
WRITING A GOOD
STORY
@TheMattBrunt
Scenario: I can add a product to my basket
Given I am on the “/product/1” page
When I press “Add to basket”
Then I should see “Playstation 4”
And I should see £250
@TheMattBrunt
Scenario: I can add a single product to my basket
Given I have a “Playstation 4” that costs £250
When I add the “Playstation 4” to my basket
Then I should have 1 product in my basket
And the basket total should be £250
@TheMattBrunt
Scenario: I can add a product to my basket
Given I am on the “/product/1” page
When I press “Add to basket”
Then I should see “Playstation 4”
And I should see £250
WHAT HAPPENS WHEN THE UI CHANGES TO SAY “ADD TO CART”?
@TheMattBrunt
DON’T WRITE
IMPLEMENTATION IN
FEATURES
@TheMattBrunt
THE CODA
@TheMattBrunt
@TheMattBrunt
STEP ARGUMENT
TRANSFORMATIONS
@TheMattBrunt
RETURN US AN OBJECT
LOOK FOR THIS
@TheMattBrunt
@TheMattBrunt
HOOKS
@TheMattBrunt
BEFORE & AFTER THE FOLLOWING:
SUITES, FEATURES, SCENARIOS, STEPS
HOOKS
@TheMattBrunt
IN SUMMARY
@TheMattBrunt
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
CONVERSATIONS.
@TheMattBrunt
BEGINNING:
HAVE A CONVERSATION, CAPTURE THAT
CONVERSATION
MIDDLE:
AUTOMATE AND IMPLEMENT THAT CONVERSATION
END:
HAPPY STAKEHOLDERS AND WELL BUILT
SOFTWARE
@TheMattBrunt
STORIES TOLD BY REAL WORLD EXAMPLES.
USER STORIES AS REQUIREMENTS.
INVOLVE MULTIPLE STAKEHOLDERS.
WRITE FEATURES BEFORE CODE.
WRITE FEATURES WITHOUT IMPLEMENTATION.
@TheMattBrunt
LINKS & READING
https://cucumber.io/docs
https://adamcod.es/2014/05/15/test-doubles-mock-vs-stub.html
https://github.com/cucumber/cucumber/wiki/Gherkin
http://dannorth.net/whats-in-a-story/
http://dannorth.net/introducing-bdd/
http://lizkeogh.com/category/bdd/
http://lizkeogh.com/2014/01/22/using-bdd-with-legacy-systems/
http://inviqa.com/insights/bdd-guide
@TheMattBrunt
@TheMattBrunt
@PHPem
matt@mfyu.co.uk
@TheMattBrunt
THANKS
FOR LISTENING

More Related Content

What's hot

BrightonSEO - A Technical Solution To Content Duplication
BrightonSEO - A Technical Solution To Content DuplicationBrightonSEO - A Technical Solution To Content Duplication
BrightonSEO - A Technical Solution To Content Duplication
SophieBrannon
 
Amazon and Google: The State of the Algorithms (2017)
Amazon and Google: The State of the Algorithms (2017)Amazon and Google: The State of the Algorithms (2017)
Amazon and Google: The State of the Algorithms (2017)
Ian Lurie
 
Doing More with Less: Automated, High-Quality Content Generation
Doing More with Less: Automated, High-Quality Content GenerationDoing More with Less: Automated, High-Quality Content Generation
Doing More with Less: Automated, High-Quality Content Generation
Hamlet Batista
 
The Python Cheat Sheet for the Busy Marketer
The Python Cheat Sheet for the Busy MarketerThe Python Cheat Sheet for the Busy Marketer
The Python Cheat Sheet for the Busy Marketer
Hamlet Batista
 
The Search Engine Experience
The Search Engine ExperienceThe Search Engine Experience
The Search Engine ExperienceClark T. Bell
 
The Future of Search - Will Critchlow's presentation at FODM 2013
The Future of Search - Will Critchlow's presentation at FODM 2013The Future of Search - Will Critchlow's presentation at FODM 2013
The Future of Search - Will Critchlow's presentation at FODM 2013
Distilled
 
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's Due
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's DueSearchLove Boston 2013_Annie Cushing_Take Credit where Credit's Due
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's DueDistilled
 
5 Emerging Trends in Search
5 Emerging Trends in Search5 Emerging Trends in Search
5 Emerging Trends in Search
Tom Anthony
 
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawlHow To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
DeepCrawl
 
10 Smart & Easy LinkedIn Background Images
10 Smart & Easy LinkedIn Background Images10 Smart & Easy LinkedIn Background Images
10 Smart & Easy LinkedIn Background Images
Donna Svei, Executive Resume Writer
 
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
UserTesting
 
Building a Content Promotion Strategy | Pubcon Vegas 2015
Building a Content Promotion Strategy | Pubcon Vegas 2015Building a Content Promotion Strategy | Pubcon Vegas 2015
Building a Content Promotion Strategy | Pubcon Vegas 2015
Casie Gillette
 
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
Dawn Anderson MSc DigM
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016
Mike Arnesen
 
Emerging Trends in Online Search
Emerging Trends in Online SearchEmerging Trends in Online Search
Emerging Trends in Online Search
Distilled
 
BrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
BrightonSEO 2018 - Practical Insights into Winning Epic Featured SnippetsBrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
BrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
Izzi Smith
 
Strategies for Mobile Teaching & Learning
Strategies for Mobile Teaching & LearningStrategies for Mobile Teaching & Learning
Strategies for Mobile Teaching & Learning
Michael M Grant
 
Steve barbarich's seo school 101 backlink variation
Steve barbarich's seo school 101   backlink variationSteve barbarich's seo school 101   backlink variation
Steve barbarich's seo school 101 backlink variation
steve barbarich
 
You and Your Stylesheet
You and Your StylesheetYou and Your Stylesheet
You and Your Stylesheet
Virginia DeBolt
 
Duplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For YouDuplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For You
Dawn Anderson MSc DigM
 

What's hot (20)

BrightonSEO - A Technical Solution To Content Duplication
BrightonSEO - A Technical Solution To Content DuplicationBrightonSEO - A Technical Solution To Content Duplication
BrightonSEO - A Technical Solution To Content Duplication
 
Amazon and Google: The State of the Algorithms (2017)
Amazon and Google: The State of the Algorithms (2017)Amazon and Google: The State of the Algorithms (2017)
Amazon and Google: The State of the Algorithms (2017)
 
Doing More with Less: Automated, High-Quality Content Generation
Doing More with Less: Automated, High-Quality Content GenerationDoing More with Less: Automated, High-Quality Content Generation
Doing More with Less: Automated, High-Quality Content Generation
 
The Python Cheat Sheet for the Busy Marketer
The Python Cheat Sheet for the Busy MarketerThe Python Cheat Sheet for the Busy Marketer
The Python Cheat Sheet for the Busy Marketer
 
The Search Engine Experience
The Search Engine ExperienceThe Search Engine Experience
The Search Engine Experience
 
The Future of Search - Will Critchlow's presentation at FODM 2013
The Future of Search - Will Critchlow's presentation at FODM 2013The Future of Search - Will Critchlow's presentation at FODM 2013
The Future of Search - Will Critchlow's presentation at FODM 2013
 
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's Due
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's DueSearchLove Boston 2013_Annie Cushing_Take Credit where Credit's Due
SearchLove Boston 2013_Annie Cushing_Take Credit where Credit's Due
 
5 Emerging Trends in Search
5 Emerging Trends in Search5 Emerging Trends in Search
5 Emerging Trends in Search
 
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawlHow To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
How To Tackle Enterprise Sites - Rachel Costello, Technical SEO, DeepCrawl
 
10 Smart & Easy LinkedIn Background Images
10 Smart & Easy LinkedIn Background Images10 Smart & Easy LinkedIn Background Images
10 Smart & Easy LinkedIn Background Images
 
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
[UserTesting Webinar] Tackling the top 10 mobile commerce design challenges -...
 
Building a Content Promotion Strategy | Pubcon Vegas 2015
Building a Content Promotion Strategy | Pubcon Vegas 2015Building a Content Promotion Strategy | Pubcon Vegas 2015
Building a Content Promotion Strategy | Pubcon Vegas 2015
 
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
MOZCON 2017 WINNING WITH CHOICE & INFORMATION SYSTEMS FOR BOTH CRAWLERS & CON...
 
Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016Understanding & Facilitating Semantic Search - #SearchFest 2016
Understanding & Facilitating Semantic Search - #SearchFest 2016
 
Emerging Trends in Online Search
Emerging Trends in Online SearchEmerging Trends in Online Search
Emerging Trends in Online Search
 
BrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
BrightonSEO 2018 - Practical Insights into Winning Epic Featured SnippetsBrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
BrightonSEO 2018 - Practical Insights into Winning Epic Featured Snippets
 
Strategies for Mobile Teaching & Learning
Strategies for Mobile Teaching & LearningStrategies for Mobile Teaching & Learning
Strategies for Mobile Teaching & Learning
 
Steve barbarich's seo school 101 backlink variation
Steve barbarich's seo school 101   backlink variationSteve barbarich's seo school 101   backlink variation
Steve barbarich's seo school 101 backlink variation
 
You and Your Stylesheet
You and Your StylesheetYou and Your Stylesheet
You and Your Stylesheet
 
Duplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For YouDuplicate Content Myths Types and Ways To Make It Work For You
Duplicate Content Myths Types and Ways To Make It Work For You
 

Viewers also liked

PHPNW16 Matt Brunt - BDD & Behat
PHPNW16 Matt Brunt - BDD & BehatPHPNW16 Matt Brunt - BDD & Behat
PHPNW16 Matt Brunt - BDD & Behat
Matt Brunt
 
Content Security Policies: Let's Break Stuff
Content Security Policies: Let's Break StuffContent Security Policies: Let's Break Stuff
Content Security Policies: Let's Break Stuff
Matt Brunt
 
BDD & Behat for Srijan Technologies
BDD & Behat for Srijan TechnologiesBDD & Behat for Srijan Technologies
BDD & Behat for Srijan Technologies
Matt Brunt
 
CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16
Matt Brunt
 
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
 

Viewers also liked (6)

PHPNW16 Matt Brunt - BDD & Behat
PHPNW16 Matt Brunt - BDD & BehatPHPNW16 Matt Brunt - BDD & Behat
PHPNW16 Matt Brunt - BDD & Behat
 
Content Security Policies: Let's Break Stuff
Content Security Policies: Let's Break StuffContent Security Policies: Let's Break Stuff
Content Security Policies: Let's Break Stuff
 
BDD & Behat for Srijan Technologies
BDD & Behat for Srijan TechnologiesBDD & Behat for Srijan Technologies
BDD & Behat for Srijan Technologies
 
CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16CSP - What? Why? How? PHPNW16
CSP - What? Why? How? PHPNW16
 
Intro to Gulp
Intro to GulpIntro to Gulp
Intro to Gulp
 
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
 

Similar to BDD: Telling stories through code [For TechNotts]

BDD & Behat for PHPUK
BDD & Behat for PHPUKBDD & Behat for PHPUK
BDD & Behat for PHPUK
Matt Brunt
 
BDD & Behat for PHPNE
BDD & Behat for PHPNEBDD & Behat for PHPNE
BDD & Behat for PHPNE
Matt Brunt
 
Question the Status Quo - Martin Eriksson at How to Web
Question the Status Quo - Martin Eriksson at How to WebQuestion the Status Quo - Martin Eriksson at How to Web
Question the Status Quo - Martin Eriksson at How to Web
Mind the Product
 
GraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer LoveGraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer Love
Roy Derks
 
How Many Wheels You Have to Reinvent
How Many Wheels You Have to ReinventHow Many Wheels You Have to Reinvent
How Many Wheels You Have to Reinvent
Matt Harasymczuk
 
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechniciansAgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
Jason Tice
 
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring SmartlyA Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
Hanapin Marketing
 
Why Constraints are Good? A Case Study of an Enterprise Agile Transformation
Why Constraints are Good? A Case Study of an Enterprise Agile TransformationWhy Constraints are Good? A Case Study of an Enterprise Agile Transformation
Why Constraints are Good? A Case Study of an Enterprise Agile Transformation
Matt Harasymczuk
 
Barry Adams - Search in a screenless world - Nottingham Digital Summit
Barry Adams - Search in a screenless world - Nottingham Digital SummitBarry Adams - Search in a screenless world - Nottingham Digital Summit
Barry Adams - Search in a screenless world - Nottingham Digital Summit
Hallam
 
How to be amazon (and beat Google at search)
How to be amazon (and beat Google at search)How to be amazon (and beat Google at search)
How to be amazon (and beat Google at search)
Branded3
 
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your CareerBecoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
Andrea Goulet
 
Charlotte's top analytics tips!
Charlotte's top analytics tips!Charlotte's top analytics tips!
Charlotte's top analytics tips!
Kate Waite
 
EVOLUTION not Revolution - Matt Harasymczuk @ Agile Management 2014 Poland
EVOLUTION not Revolution - Matt Harasymczuk  @ Agile Management 2014 PolandEVOLUTION not Revolution - Matt Harasymczuk  @ Agile Management 2014 Poland
EVOLUTION not Revolution - Matt Harasymczuk @ Agile Management 2014 Poland
Fundacja Governica
 
Evolution Not Revolution. A Case Study of an Enterprise Agile Transformation
Evolution Not Revolution. A Case Study of an Enterprise Agile TransformationEvolution Not Revolution. A Case Study of an Enterprise Agile Transformation
Evolution Not Revolution. A Case Study of an Enterprise Agile Transformation
Matt Harasymczuk
 
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
Turing Fest
 
DBW Social Amplification in Publishing Webinar v1.3
DBW Social Amplification in Publishing Webinar v1.3DBW Social Amplification in Publishing Webinar v1.3
DBW Social Amplification in Publishing Webinar v1.3Murray Izenwasser
 
DIGITAL MARKETING 2015 -VISION
DIGITAL MARKETING 2015 -VISIONDIGITAL MARKETING 2015 -VISION
DIGITAL MARKETING 2015 -VISION
ARPUTHA SELVARAJ A
 
How to Make Wordpress Social
How to Make Wordpress SocialHow to Make Wordpress Social
How to Make Wordpress Social
James Gentes
 
Scaling automated quality text generation for enterprise sites
Scaling automated quality text generation for enterprise sitesScaling automated quality text generation for enterprise sites
Scaling automated quality text generation for enterprise sites
Hamlet Batista
 
Widgets Tools Keynote
Widgets Tools KeynoteWidgets Tools Keynote
Widgets Tools Keynote
Michael Mahemoff
 

Similar to BDD: Telling stories through code [For TechNotts] (20)

BDD & Behat for PHPUK
BDD & Behat for PHPUKBDD & Behat for PHPUK
BDD & Behat for PHPUK
 
BDD & Behat for PHPNE
BDD & Behat for PHPNEBDD & Behat for PHPNE
BDD & Behat for PHPNE
 
Question the Status Quo - Martin Eriksson at How to Web
Question the Status Quo - Martin Eriksson at How to WebQuestion the Status Quo - Martin Eriksson at How to Web
Question the Status Quo - Martin Eriksson at How to Web
 
GraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer LoveGraphQL Without a Database | Frontend Developer Love
GraphQL Without a Database | Frontend Developer Love
 
How Many Wheels You Have to Reinvent
How Many Wheels You Have to ReinventHow Many Wheels You Have to Reinvent
How Many Wheels You Have to Reinvent
 
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechniciansAgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
AgileMidwest2018-Goulet-KeynoteCommunicationCodeStrategistsTechnicians
 
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring SmartlyA Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
A Beginner's Guide to Shopping Ads: From Take-Off to Soaring Smartly
 
Why Constraints are Good? A Case Study of an Enterprise Agile Transformation
Why Constraints are Good? A Case Study of an Enterprise Agile TransformationWhy Constraints are Good? A Case Study of an Enterprise Agile Transformation
Why Constraints are Good? A Case Study of an Enterprise Agile Transformation
 
Barry Adams - Search in a screenless world - Nottingham Digital Summit
Barry Adams - Search in a screenless world - Nottingham Digital SummitBarry Adams - Search in a screenless world - Nottingham Digital Summit
Barry Adams - Search in a screenless world - Nottingham Digital Summit
 
How to be amazon (and beat Google at search)
How to be amazon (and beat Google at search)How to be amazon (and beat Google at search)
How to be amazon (and beat Google at search)
 
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your CareerBecoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
Becoming Technical: Overcome Your Fear of Coding and Supercharge Your Career
 
Charlotte's top analytics tips!
Charlotte's top analytics tips!Charlotte's top analytics tips!
Charlotte's top analytics tips!
 
EVOLUTION not Revolution - Matt Harasymczuk @ Agile Management 2014 Poland
EVOLUTION not Revolution - Matt Harasymczuk  @ Agile Management 2014 PolandEVOLUTION not Revolution - Matt Harasymczuk  @ Agile Management 2014 Poland
EVOLUTION not Revolution - Matt Harasymczuk @ Agile Management 2014 Poland
 
Evolution Not Revolution. A Case Study of an Enterprise Agile Transformation
Evolution Not Revolution. A Case Study of an Enterprise Agile TransformationEvolution Not Revolution. A Case Study of an Enterprise Agile Transformation
Evolution Not Revolution. A Case Study of an Enterprise Agile Transformation
 
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
Martin Eriksson — You Are All Product Managers (Turing Fest 2018)
 
DBW Social Amplification in Publishing Webinar v1.3
DBW Social Amplification in Publishing Webinar v1.3DBW Social Amplification in Publishing Webinar v1.3
DBW Social Amplification in Publishing Webinar v1.3
 
DIGITAL MARKETING 2015 -VISION
DIGITAL MARKETING 2015 -VISIONDIGITAL MARKETING 2015 -VISION
DIGITAL MARKETING 2015 -VISION
 
How to Make Wordpress Social
How to Make Wordpress SocialHow to Make Wordpress Social
How to Make Wordpress Social
 
Scaling automated quality text generation for enterprise sites
Scaling automated quality text generation for enterprise sitesScaling automated quality text generation for enterprise sites
Scaling automated quality text generation for enterprise sites
 
Widgets Tools Keynote
Widgets Tools KeynoteWidgets Tools Keynote
Widgets Tools Keynote
 

More from Matt Brunt

Content Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp LondonContent Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp London
Matt Brunt
 
CSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP BeneluxCSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP Benelux
Matt Brunt
 
Content Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHPContent Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHP
Matt Brunt
 
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath DigitalContent Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Matt Brunt
 
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Matt Brunt
 
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Matt Brunt
 

More from Matt Brunt (6)

Content Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp LondonContent Security Policies: Let's Break Stuff for WordCamp London
Content Security Policies: Let's Break Stuff for WordCamp London
 
CSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP BeneluxCSPs: Let's Break Stuff for PHP Benelux
CSPs: Let's Break Stuff for PHP Benelux
 
Content Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHPContent Security Policies: Let's Break Stuff @ Scotland PHP
Content Security Policies: Let's Break Stuff @ Scotland PHP
 
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath DigitalContent Security Policies: Let's Break Stuff for PHPSW at Bath Digital
Content Security Policies: Let's Break Stuff for PHPSW at Bath Digital
 
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
Content Security Policies: Let's Break Stuff @ PHP London, Sept 2017
 
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
Content Security Policies: Let's Break Stuff @ PHP South Coast 2017
 

Recently uploaded

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 

Recently uploaded (20)

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 

BDD: Telling stories through code [For TechNotts]