SlideShare a Scribd company logo
BEHAVORIAL DRIVEN DEVELOPMENT
Shared Understanding Goes A Long Way!
Chris Riley
WHO IS CPRIME?
It takes more than talent and technology to deliver
performance worth celebrating. It takes the concerted
effort of those willing to wrestle with complexity…
and overcome complacency.
At Cprime, our performer-first approach to consulting
drives harmonious transformations across the enterprise,
while our best-in-class managed services ensure business
doesn’t miss a beat.
CPRIME:
DELIVER PERF ORMAN CE
WHO IS CPRIME
Some Thoughts
• Why am I here? - QUALITY is everyone’s job
• How do we make quality inherent? – WE define it with our customer
• What are we trying to deliver? – WORKING Software
Personal Experiences
• Measuring a derelict house – simplicity, standards
• Learning to row on a collegiate crew team – practice…practice … practice
• Pearson Student Registration System – trust, empathy, grit
= Shared Understanding
Shared Understanding: Example Mapping
https://cucumber.io/blog/example-mapping-introduction/
Rule = Acceptance Criteria
Example = Exercise the Rule
Question = Unknown Outcomes
Behavioral Driven Development
• Deliberate Discovery (e.g. Example Mapping)
• Test Driven Development
Test first, software second
• TDD and BDD focus on creating the test first
• Software is then constructed to make the test pass
• Refactoring can then occur on the software using the test to validate
BDD Lifecycle
CAPTURE BEHAVIOR
Create Gherkin to support
Stories and Scenarios
TEST AUTOMATION
Leverage Cucumber
Framework to Generate Test
Stubs, Add Logic and Include
in Continuous Integration
TEAM DEFINES
Product, UX, QA, Business,
Development, Architecture
obtain consensus on
expected behavior(s)
Gherkin Example
Story: As a user I would like to login to the Customer App
#features/example1.feature
Feature: As a Customer App user I want to login
Scenario: Valid User
Given I go to "http://localhost:8090/CustomerApp/login"
When I enter the user ”criley"
And the password "111111111"
And click the button Sign In
Then I should see the CustomerApp Home Page
Cucumber Example
module.exports = function() {
this.Given(/^I go to "([^"]*)"$/, function (arg1,callback) {
// Write code here that turns the phrase above into concrete actions
callback(null, 'pending');
});
this.When(/^I enter the user "([^"]*)"$/, function (arg1, callback) {
// Write code here that turns the phrase above into concrete actions
callback(null, 'pending');
});
this.When(/^the password "([^"]*)"$/, function (arg1, callback) {
// Write code here that turns the phrase above into concrete actions
callback(null, 'pending');
});
…
this.Then(/^I should see the Fedline Home Page$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback(null, 'pending');
});
};
Cucumber Completed Example
module.exports = function() {
this.Given(/^I go to "([^"]*)"$/, function (site) {
browser.get(site);
});
this.When(/^I enter the user "([^"]*)"$/, function (arg1) {
element(by.id('loginId')).sendKeys(arg1);
});
…
Cucumber Completed Example
ChristophersMBP:Example1 criley$ protractor protractor.conf.js
[10:12:14] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub
[10:12:14] I/launcher - Running 1 instances of WebDriver
Feature: As a CustomerApp user I want to login
cucumber event handlers attached via registerHandler are now passed the
associated object instead of an event
getPayloadItem will be removed in the next major release
Scenario: Valid User
✓ Given I go to "http://localhost:8090/CustomerApp/login"
✓ When I enter the user ”criley"
✓ And the password "111111111"
✓ And click the button Sign In
✓ Then I should see the CustomerApp Home Page
1 scenario (1 passed)
5 steps (5 passed)
0m00.006s
[10:12:15] I/launcher - 0 instance(s) of WebDriver still running
[10:12:15] I/launcher - chrome #01 passed
Team Benefit
IN ACTION
“We keep going until the
group is satisfied that the
scope of the story is clear, or
we run out of time.”
Development Benefit
The test is the acceptance criteria
verbatim and BDD allows me to
validate my code with the business
requirements.
“
“
Summary
• Why am I here? - QUALITY is everyone’s job
• How do we make quality inherent? – WE define it with our customer
• What are we trying to deliver? – WORKING Software
THANK YOU

More Related Content

Similar to Behavioral Driven Development

UI Test Cases With CloudStack
UI Test Cases With CloudStackUI Test Cases With CloudStack
UI Test Cases With CloudStack
ShapeBlue
 
Cucumber_Training_ForQA
Cucumber_Training_ForQACucumber_Training_ForQA
Cucumber_Training_ForQA
Meenakshi Singhal
 
BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User Stories
Sauce Labs
 
Serverless in production, an experience report (JeffConf)
Serverless in production, an experience report (JeffConf)Serverless in production, an experience report (JeffConf)
Serverless in production, an experience report (JeffConf)
Yan Cui
 
Introduce cucumber
Introduce cucumberIntroduce cucumber
Introduce cucumber
Bachue Zhou
 
Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)
Yan Cui
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
TechWell
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
All Things Open
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
Atish Narlawar
 
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar SinghWorkshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
Agile ME
 
Presentation
PresentationPresentation
Presentation
Testled
 
Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)
Julien SIMON
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
POSSCON
 
Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)
Yan Cui
 
Scrum and BDD for Developers with Naveen Kumar
Scrum and BDD for Developers with Naveen Kumar Scrum and BDD for Developers with Naveen Kumar
Scrum and BDD for Developers with Naveen Kumar
Agile ME
 
Serverless in-action
Serverless in-actionServerless in-action
Serverless in-action
Assaf Gannon
 
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
 
Automate test, tools, advantages, and disadvantages
Automate test, tools, advantages,  and disadvantagesAutomate test, tools, advantages,  and disadvantages
Automate test, tools, advantages, and disadvantages
Majid Hosseini
 
Why Startups Are Still On AWS
Why Startups Are Still On AWSWhy Startups Are Still On AWS
Why Startups Are Still On AWS
Amazon Web Services
 

Similar to Behavioral Driven Development (20)

UI Test Cases With CloudStack
UI Test Cases With CloudStackUI Test Cases With CloudStack
UI Test Cases With CloudStack
 
Cucumber_Training_ForQA
Cucumber_Training_ForQACucumber_Training_ForQA
Cucumber_Training_ForQA
 
BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User Stories
 
Serverless in production, an experience report (JeffConf)
Serverless in production, an experience report (JeffConf)Serverless in production, an experience report (JeffConf)
Serverless in production, an experience report (JeffConf)
 
Introduce cucumber
Introduce cucumberIntroduce cucumber
Introduce cucumber
 
Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)Serverless in production, an experience report (linuxing in london)
Serverless in production, an experience report (linuxing in london)
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
 
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar SinghWorkshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
Workshop: Behavior Driven Development - Deliver value by Naveen Kumar Singh
 
Presentation
PresentationPresentation
Presentation
 
Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)Serverless in production, an experience report (Going Serverless)
Serverless in production, an experience report (Going Serverless)
 
Scrum and BDD for Developers with Naveen Kumar
Scrum and BDD for Developers with Naveen Kumar Scrum and BDD for Developers with Naveen Kumar
Scrum and BDD for Developers with Naveen Kumar
 
Serverless in-action
Serverless in-actionServerless in-action
Serverless in-action
 
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.
 
Automate test, tools, advantages, and disadvantages
Automate test, tools, advantages,  and disadvantagesAutomate test, tools, advantages,  and disadvantages
Automate test, tools, advantages, and disadvantages
 
Why Startups Are Still On AWS
Why Startups Are Still On AWSWhy Startups Are Still On AWS
Why Startups Are Still On AWS
 

More from Cprime

Achieving Sustainable Growth in the Digital Age
Achieving Sustainable Growth in the Digital AgeAchieving Sustainable Growth in the Digital Age
Achieving Sustainable Growth in the Digital Age
Cprime
 
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
Cprime
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Cprime
 
Harnessing Atlassian's Power Through Cloud Transformation and Adoption
Harnessing Atlassian's Power Through Cloud Transformation and AdoptionHarnessing Atlassian's Power Through Cloud Transformation and Adoption
Harnessing Atlassian's Power Through Cloud Transformation and Adoption
Cprime
 
AI-powered Service Management: Streamlining Incident Management in JSM using ...
AI-powered Service Management: Streamlining Incident Management in JSM using ...AI-powered Service Management: Streamlining Incident Management in JSM using ...
AI-powered Service Management: Streamlining Incident Management in JSM using ...
Cprime
 
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
Cprime
 
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPTAI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
Cprime
 
From Project to Product - The Need for Speed
From Project to Product - The Need for SpeedFrom Project to Product - The Need for Speed
From Project to Product - The Need for Speed
Cprime
 
We Need a Hero — How to Find and Support Your Next Superstar Product Owner
We Need a Hero — How to Find and Support Your Next Superstar Product OwnerWe Need a Hero — How to Find and Support Your Next Superstar Product Owner
We Need a Hero — How to Find and Support Your Next Superstar Product Owner
Cprime
 
How to Unlock Productivity and Innovation with Generative AI and ChatGPT
How to Unlock Productivity and Innovation with Generative AI and ChatGPTHow to Unlock Productivity and Innovation with Generative AI and ChatGPT
How to Unlock Productivity and Innovation with Generative AI and ChatGPT
Cprime
 
Modern Learning for Enterprises: How to Empower Your Teams
Modern Learning for Enterprises: How to Empower Your TeamsModern Learning for Enterprises: How to Empower Your Teams
Modern Learning for Enterprises: How to Empower Your Teams
Cprime
 
Enterprise Service Management for Finance, HR, and Marketing
Enterprise Service Management for Finance, HR, and MarketingEnterprise Service Management for Finance, HR, and Marketing
Enterprise Service Management for Finance, HR, and Marketing
Cprime
 
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
Cprime
 
Perfecting Customer Management Using Jira Service Management
Perfecting Customer Management Using Jira Service ManagementPerfecting Customer Management Using Jira Service Management
Perfecting Customer Management Using Jira Service Management
Cprime
 
From Project to Product: Leaders, Here's What It Means to You
From Project to Product: Leaders, Here's What It Means to YouFrom Project to Product: Leaders, Here's What It Means to You
From Project to Product: Leaders, Here's What It Means to You
Cprime
 
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
Cprime
 
6 Common Challenges RTEs Face & How to Solve Them
6 Common Challenges RTEs Face & How to Solve Them6 Common Challenges RTEs Face & How to Solve Them
6 Common Challenges RTEs Face & How to Solve Them
Cprime
 
Enterprise Service Management Webinar Series Part 1
Enterprise Service Management Webinar Series Part 1Enterprise Service Management Webinar Series Part 1
Enterprise Service Management Webinar Series Part 1
Cprime
 
How to Enable Change Management with Jira Service Management
How to Enable Change Management with Jira Service ManagementHow to Enable Change Management with Jira Service Management
How to Enable Change Management with Jira Service Management
Cprime
 

More from Cprime (20)

Achieving Sustainable Growth in the Digital Age
Achieving Sustainable Growth in the Digital AgeAchieving Sustainable Growth in the Digital Age
Achieving Sustainable Growth in the Digital Age
 
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
Mastering an Integrated Atlassian Tooling Ecosystem: Strategies, Success Stor...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
 
Harnessing Atlassian's Power Through Cloud Transformation and Adoption
Harnessing Atlassian's Power Through Cloud Transformation and AdoptionHarnessing Atlassian's Power Through Cloud Transformation and Adoption
Harnessing Atlassian's Power Through Cloud Transformation and Adoption
 
AI-powered Service Management: Streamlining Incident Management in JSM using ...
AI-powered Service Management: Streamlining Incident Management in JSM using ...AI-powered Service Management: Streamlining Incident Management in JSM using ...
AI-powered Service Management: Streamlining Incident Management in JSM using ...
 
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
Enterprise Migration from Data Center to Atlassian Cloud: Start with an Asses...
 
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPTAI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
AI for Everyone: Demystifying Large Language Models (LLMs) Like ChatGPT
 
From Project to Product - The Need for Speed
From Project to Product - The Need for SpeedFrom Project to Product - The Need for Speed
From Project to Product - The Need for Speed
 
We Need a Hero — How to Find and Support Your Next Superstar Product Owner
We Need a Hero — How to Find and Support Your Next Superstar Product OwnerWe Need a Hero — How to Find and Support Your Next Superstar Product Owner
We Need a Hero — How to Find and Support Your Next Superstar Product Owner
 
How to Unlock Productivity and Innovation with Generative AI and ChatGPT
How to Unlock Productivity and Innovation with Generative AI and ChatGPTHow to Unlock Productivity and Innovation with Generative AI and ChatGPT
How to Unlock Productivity and Innovation with Generative AI and ChatGPT
 
Modern Learning for Enterprises: How to Empower Your Teams
Modern Learning for Enterprises: How to Empower Your TeamsModern Learning for Enterprises: How to Empower Your Teams
Modern Learning for Enterprises: How to Empower Your Teams
 
Enterprise Service Management for Finance, HR, and Marketing
Enterprise Service Management for Finance, HR, and MarketingEnterprise Service Management for Finance, HR, and Marketing
Enterprise Service Management for Finance, HR, and Marketing
 
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
ESM Webinar Series Part 2 | The Keys to Optimal ESM are Automation and Integr...
 
Perfecting Customer Management Using Jira Service Management
Perfecting Customer Management Using Jira Service ManagementPerfecting Customer Management Using Jira Service Management
Perfecting Customer Management Using Jira Service Management
 
From Project to Product: Leaders, Here's What It Means to You
From Project to Product: Leaders, Here's What It Means to YouFrom Project to Product: Leaders, Here's What It Means to You
From Project to Product: Leaders, Here's What It Means to You
 
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
Using a Service Catalog and CMDB to Standardize Change Management in Jira Ser...
 
6 Common Challenges RTEs Face & How to Solve Them
6 Common Challenges RTEs Face & How to Solve Them6 Common Challenges RTEs Face & How to Solve Them
6 Common Challenges RTEs Face & How to Solve Them
 
Enterprise Service Management Webinar Series Part 1
Enterprise Service Management Webinar Series Part 1Enterprise Service Management Webinar Series Part 1
Enterprise Service Management Webinar Series Part 1
 
How to Enable Change Management with Jira Service Management
How to Enable Change Management with Jira Service ManagementHow to Enable Change Management with Jira Service Management
How to Enable Change Management with Jira Service Management
 

Recently uploaded

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's TipsGetting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
ScyllaDB
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
ScyllaDB
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
leebarnesutopia
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 

Recently uploaded (20)

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's TipsGetting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
Getting the Most Out of ScyllaDB Monitoring: ShareChat's Tips
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 

Behavioral Driven Development

  • 1.
  • 2. BEHAVORIAL DRIVEN DEVELOPMENT Shared Understanding Goes A Long Way! Chris Riley
  • 4. It takes more than talent and technology to deliver performance worth celebrating. It takes the concerted effort of those willing to wrestle with complexity… and overcome complacency. At Cprime, our performer-first approach to consulting drives harmonious transformations across the enterprise, while our best-in-class managed services ensure business doesn’t miss a beat. CPRIME: DELIVER PERF ORMAN CE WHO IS CPRIME
  • 5. Some Thoughts • Why am I here? - QUALITY is everyone’s job • How do we make quality inherent? – WE define it with our customer • What are we trying to deliver? – WORKING Software
  • 6. Personal Experiences • Measuring a derelict house – simplicity, standards • Learning to row on a collegiate crew team – practice…practice … practice • Pearson Student Registration System – trust, empathy, grit = Shared Understanding
  • 7. Shared Understanding: Example Mapping https://cucumber.io/blog/example-mapping-introduction/ Rule = Acceptance Criteria Example = Exercise the Rule Question = Unknown Outcomes
  • 8. Behavioral Driven Development • Deliberate Discovery (e.g. Example Mapping) • Test Driven Development
  • 9. Test first, software second • TDD and BDD focus on creating the test first • Software is then constructed to make the test pass • Refactoring can then occur on the software using the test to validate
  • 10. BDD Lifecycle CAPTURE BEHAVIOR Create Gherkin to support Stories and Scenarios TEST AUTOMATION Leverage Cucumber Framework to Generate Test Stubs, Add Logic and Include in Continuous Integration TEAM DEFINES Product, UX, QA, Business, Development, Architecture obtain consensus on expected behavior(s)
  • 11. Gherkin Example Story: As a user I would like to login to the Customer App #features/example1.feature Feature: As a Customer App user I want to login Scenario: Valid User Given I go to "http://localhost:8090/CustomerApp/login" When I enter the user ”criley" And the password "111111111" And click the button Sign In Then I should see the CustomerApp Home Page
  • 12. Cucumber Example module.exports = function() { this.Given(/^I go to "([^"]*)"$/, function (arg1,callback) { // Write code here that turns the phrase above into concrete actions callback(null, 'pending'); }); this.When(/^I enter the user "([^"]*)"$/, function (arg1, callback) { // Write code here that turns the phrase above into concrete actions callback(null, 'pending'); }); this.When(/^the password "([^"]*)"$/, function (arg1, callback) { // Write code here that turns the phrase above into concrete actions callback(null, 'pending'); }); … this.Then(/^I should see the Fedline Home Page$/, function (callback) { // Write code here that turns the phrase above into concrete actions callback(null, 'pending'); }); };
  • 13. Cucumber Completed Example module.exports = function() { this.Given(/^I go to "([^"]*)"$/, function (site) { browser.get(site); }); this.When(/^I enter the user "([^"]*)"$/, function (arg1) { element(by.id('loginId')).sendKeys(arg1); }); …
  • 14. Cucumber Completed Example ChristophersMBP:Example1 criley$ protractor protractor.conf.js [10:12:14] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub [10:12:14] I/launcher - Running 1 instances of WebDriver Feature: As a CustomerApp user I want to login cucumber event handlers attached via registerHandler are now passed the associated object instead of an event getPayloadItem will be removed in the next major release Scenario: Valid User ✓ Given I go to "http://localhost:8090/CustomerApp/login" ✓ When I enter the user ”criley" ✓ And the password "111111111" ✓ And click the button Sign In ✓ Then I should see the CustomerApp Home Page 1 scenario (1 passed) 5 steps (5 passed) 0m00.006s [10:12:15] I/launcher - 0 instance(s) of WebDriver still running [10:12:15] I/launcher - chrome #01 passed
  • 15. Team Benefit IN ACTION “We keep going until the group is satisfied that the scope of the story is clear, or we run out of time.”
  • 16. Development Benefit The test is the acceptance criteria verbatim and BDD allows me to validate my code with the business requirements. “ “
  • 17. Summary • Why am I here? - QUALITY is everyone’s job • How do we make quality inherent? – WE define it with our customer • What are we trying to deliver? – WORKING Software