SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

6161103 7.2 shear and moment equations and diagrams
6161103 7.2 shear and moment equations and diagrams6161103 7.2 shear and moment equations and diagrams
6161103 7.2 shear and moment equations and diagrams
etcenterrbru
 

Mais procurados (16)

Asynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & PromisesAsynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & Promises
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
6161103 7.2 shear and moment equations and diagrams
6161103 7.2 shear and moment equations and diagrams6161103 7.2 shear and moment equations and diagrams
6161103 7.2 shear and moment equations and diagrams
 
Method of works install stator generator+strand jack + 07 july2015
Method of works install stator generator+strand jack + 07 july2015Method of works install stator generator+strand jack + 07 july2015
Method of works install stator generator+strand jack + 07 july2015
 
Analysis of structures
Analysis of structuresAnalysis of structures
Analysis of structures
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!
 
Lecture-3-Column-Design.pdf
Lecture-3-Column-Design.pdfLecture-3-Column-Design.pdf
Lecture-3-Column-Design.pdf
 
Mockito a simple, intuitive mocking framework
Mockito   a simple, intuitive mocking frameworkMockito   a simple, intuitive mocking framework
Mockito a simple, intuitive mocking framework
 
Strength of materials_by_r_s_khurmi-601-700
Strength of materials_by_r_s_khurmi-601-700Strength of materials_by_r_s_khurmi-601-700
Strength of materials_by_r_s_khurmi-601-700
 
simply supported beams
simply supported beamssimply supported beams
simply supported beams
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
FEM: Beams
FEM: BeamsFEM: Beams
FEM: Beams
 
Capitulo 6 estatica
Capitulo 6 estaticaCapitulo 6 estatica
Capitulo 6 estatica
 
Android JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation ControllerAndroid JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation Controller
 
Demystifying Angular Animations
Demystifying Angular AnimationsDemystifying Angular Animations
Demystifying Angular Animations
 

Semelhante a Behavioral Driven Development

UI Test Cases With CloudStack
UI Test Cases With CloudStackUI Test Cases With CloudStack
UI Test Cases With CloudStack
ShapeBlue
 

Semelhante a 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
 

Mais de 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
 

Mais de Cprime (20)

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
 
The Five Phases of Agile Maturity (Part 3): Phase 5
The Five Phases of Agile Maturity (Part 3): Phase 5The Five Phases of Agile Maturity (Part 3): Phase 5
The Five Phases of Agile Maturity (Part 3): Phase 5
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

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