SlideShare uma empresa Scribd logo
1 de 16
BDD
Behaviour Driven Development
Why we should use it
Project restarts
One of the major causes of both cost and time
overruns is restarts.
For every 100 projects that start, there are 94
restarts. This does not mean that 94 of 100 will
have one restart, some projects can have
several restarts.
src: http://www.projectsmart.co.uk/docs/chaos-report.pdf
What is BDD?
Behavior Driven Development (BDD) is a
software engineering practice designed to help
teams build and deliver more valuable, higher
quality software faster.
It is not about programming, testing or
management.
It's about building together.
Building together
To do this, we need a way to
describe the requirement such
that everyone
● the business folks (customer)
● the product owner
● the development team
have a common understanding
of the scope of the work.
source: http://dannorth.net/whats-in-a-story/
Actionable
Common understanding
Business
value
Low
hanging
fruit
Product
requirements Delivery
Impact
analyses
Acceptance
criteria
JavaScript
Performance
tweakers.ne
t
Trafficker Advertisements Video Views
We all have our jargon….
Use case
It would be great if we could connect multiple advertisement
agents worldwide. Then visitors can see local advertisements.
Feature: Local advertisements for visitors
In order to see local advertisements,
As a Visitor I want the website to detect my country settings,
So that the right Advertising agent will serve my advertisements
Present the story to the dev team
The Visitor doesn't benefit from this feature, but the Advertising
traffickers. They will have full control over country based
advertisements. How about control on channels?
Feature: Country Based Advertisement Serving on portals
In order to be able to serve advertisements by different agents
As a Advertising trafficker
I want define the agent based on the country and channel
Making the boss happy
I love you guys. This will bring in even more $ money $.
While you're on it please add support for pages as well....
Feature: Country Based Advertisement Serving on portals
In order to be able to serve advertisements by different agents
As a Advertising trafficker
I want define the agent based on the country, channel and page
Writing the story
Feature: Country Based Advertisement Serving on portals
In order to be able to serve advertisements by different agents
As a Advertising trafficker
I want define the agent based on the country, portal and page
Refining the story
Feature: Country Based Advertisement Serving on portals
In order to be able to serve advertisements by different agents
As a Advertising trafficker
I want define the agent based on the country, portal and page
Scenario Outline: Visitors on certain channel pages
Given the visitor is from "<country>"
When the visitor is on the "<page>" page
And the visitor is on the "<channel>" channel
Then advertisements should be served by <agent>
Examples:
#######################################################
| country | page | channel | agent |
#######################################################
| default | default | default | Google |
| The Netherlands | home | default | Google |
| America | game | Family | AdTech |
| America | home | Teens | StarMedia |
| America | home | Girls | Google |
Behat + Mink + Selenium2 = YEAH!
Generated snippet
<?php
use BehatBehatTesterExceptionPendingException;
use BehatMinkExtensionContextMinkContext;
use BehatBehatContextSnippetAcceptingContext;
class WebContext extends MinkContext implements SnippetAcceptingContext
{
/**
* @Given the visitor is from :arg1
*/
public function theVisitorIsFrom($arg1)
{
throw new PendingException();
}
/**
* @When the visitor is on the :arg1 page
*/
public function theVisitorIsOnThePage($arg1)
{
throw new PendingException();
}
/**
* @When the visitor is on the :arg1 channel
*/
public function theVisitorIsOnTheChannel($arg1)
{
throw new PendingException();
}
/**
* @Then advertisements should be served by :provider
*/
public function advertisementsShouldBeServedBy($provider)
{
throw new PendingException();
}
}
Enter some logic
<?php
use BehatBehatTesterExceptionPendingException;
use BehatMinkExtensionContextMinkContext;
use BehatBehatContextSnippetAcceptingContext;
class WebContext extends MinkContext implements SnippetAcceptingContext
{
private $pages = array(
'default' => '/',
'home' => '/',
'game' => '/spel/donuts-saras-kookcursus'
);
private $channels = array(
'Teens' => 'http://www.agame.com',
'Girls' => 'http://www.girlsgogames.com',
'Family' => 'http://spel.nl'
);
/**
* @Given the visitor is from :country
*/
public function theVisitorIsFrom($country)
{
$this->getSession()->setCookie('country', $country);
}
/**
* @When the visitor is on the :page page
*/
public function theVisitorIsOnThePage($page)
{
$this->visitPath($this->pages[$page]);
}
/**
* @When the visitor is on the :arg1 channel
*/
public function theVisitorIsOnTheChannel($channel)
{
$this->setMinkParameter('base_url', $this->channels[$channel]);
}
/**
* @Then advertisements should be served by :provider
*/
public function advertisementsShouldBeServedBy($provider)
{
// provider check...
}
}
Run!
Run!
Run!
Tested 5 scenarios in 10 seconds.
Questions?

Mais conteúdo relacionado

Mais procurados

Behavior driven development - cucumber, Junit and java
Behavior driven development - cucumber, Junit and javaBehavior driven development - cucumber, Junit and java
Behavior driven development - cucumber, Junit and javaNaveen Kumar Singh
 
Introduction to Behavior Driven Development
Introduction to Behavior Driven Development Introduction to Behavior Driven Development
Introduction to Behavior Driven Development Robin O'Brien
 
Bdd – with cucumber and gherkin
Bdd – with cucumber and gherkinBdd – with cucumber and gherkin
Bdd – with cucumber and gherkinArati Joshi
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsIosif Itkin
 
The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)Tze Yang Ng
 
TDD with BDD in PHP and Symfony
TDD with BDD in PHP and SymfonyTDD with BDD in PHP and Symfony
TDD with BDD in PHP and SymfonyKamil Adryjanek
 
PHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersPHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersAdam Englander
 
BDD testing with cucumber
BDD testing with cucumberBDD testing with cucumber
BDD testing with cucumberDaniel Kummer
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMSagar Sane
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftAspire Systems
 
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 AnywayAll Things Open
 
DevQA: make your testers happier with Groovy, Spock and Geb
DevQA: make your testers happier with Groovy, Spock and GebDevQA: make your testers happier with Groovy, Spock and Geb
DevQA: make your testers happier with Groovy, Spock and GebAlvaro Sanchez-Mariscal
 
Cucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph BealeCucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph BealeQA or the Highway
 
BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32OpenEBS
 
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctorindeedeng
 
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 AnywayPOSSCON
 
vodQA(Pune) 2018 - Consumer driven contract testing using pact
vodQA(Pune) 2018 - Consumer driven contract testing using pactvodQA(Pune) 2018 - Consumer driven contract testing using pact
vodQA(Pune) 2018 - Consumer driven contract testing using pactvodQA
 

Mais procurados (20)

Behavior driven development - cucumber, Junit and java
Behavior driven development - cucumber, Junit and javaBehavior driven development - cucumber, Junit and java
Behavior driven development - cucumber, Junit and java
 
BDD in PHP - Behat
BDD in PHP - BehatBDD in PHP - Behat
BDD in PHP - Behat
 
Introduction to Behavior Driven Development
Introduction to Behavior Driven Development Introduction to Behavior Driven Development
Introduction to Behavior Driven Development
 
Bdd – with cucumber and gherkin
Bdd – with cucumber and gherkinBdd – with cucumber and gherkin
Bdd – with cucumber and gherkin
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
BDD and Behave
BDD and BehaveBDD and Behave
BDD and Behave
 
The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)The LAZY Developer's Guide to BDD (with Cucumber)
The LAZY Developer's Guide to BDD (with Cucumber)
 
Behavior Driven GUI Testing
Behavior Driven GUI TestingBehavior Driven GUI Testing
Behavior Driven GUI Testing
 
TDD with BDD in PHP and Symfony
TDD with BDD in PHP and SymfonyTDD with BDD in PHP and Symfony
TDD with BDD in PHP and Symfony
 
PHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersPHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for Beginners
 
BDD testing with cucumber
BDD testing with cucumberBDD testing with cucumber
BDD testing with cucumber
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEM
 
Behavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shiftBehavior Driven Testing - A paradigm shift
Behavior Driven Testing - A paradigm shift
 
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
 
DevQA: make your testers happier with Groovy, Spock and Geb
DevQA: make your testers happier with Groovy, Spock and GebDevQA: make your testers happier with Groovy, Spock and Geb
DevQA: make your testers happier with Groovy, Spock and Geb
 
Cucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph BealeCucumber From the Ground Up - Joseph Beale
Cucumber From the Ground Up - Joseph Beale
 
BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32
 
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
 
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
 
vodQA(Pune) 2018 - Consumer driven contract testing using pact
vodQA(Pune) 2018 - Consumer driven contract testing using pactvodQA(Pune) 2018 - Consumer driven contract testing using pact
vodQA(Pune) 2018 - Consumer driven contract testing using pact
 

Destaque

BDD presentation
BDD presentationBDD presentation
BDD presentationtemebele
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberKMS Technology
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentLiz Keogh
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with CucumberBrandon Keepers
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Consextentconf Tsoy
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboNaveen Kumar Singh
 
Behaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowBehaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowPascal Laurin
 
Behavior driven development for Mobile apps
Behavior driven development for Mobile appsBehavior driven development for Mobile apps
Behavior driven development for Mobile appsGeert van der Cruijsen
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by ExampleNalin Goonawardana
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQASymphony
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecBen Mabey
 
Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)Naresh Jain
 
functional testing
functional testing functional testing
functional testing bharathanche
 
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 applicationJohn Ferguson Smart Limited
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testingdversaci
 
Behaviour-Driven Development, Ruby Style
Behaviour-Driven Development, Ruby StyleBehaviour-Driven Development, Ruby Style
Behaviour-Driven Development, Ruby StyleOpenFest team
 

Destaque (17)

BDD presentation
BDD presentationBDD presentation
BDD presentation
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
 
Introduction to TDD and BDD
Introduction to TDD and BDDIntroduction to TDD and BDD
Introduction to TDD and BDD
 
Behaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlowBehaviour Driven Development with SpecFlow
Behaviour Driven Development with SpecFlow
 
Behavior driven development for Mobile apps
Behavior driven development for Mobile appsBehavior driven development for Mobile apps
Behavior driven development for Mobile apps
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the Enterprise
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 
Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)Outside In - Behaviour Driven Development (BDD)
Outside In - Behaviour Driven Development (BDD)
 
functional testing
functional testing functional testing
functional testing
 
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
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 
Behaviour-Driven Development, Ruby Style
Behaviour-Driven Development, Ruby StyleBehaviour-Driven Development, Ruby Style
Behaviour-Driven Development, Ruby Style
 

Semelhante a Behaviour Driven Development

Kalpesh_Jogi_Resume
Kalpesh_Jogi_ResumeKalpesh_Jogi_Resume
Kalpesh_Jogi_ResumeKalpesh Jogi
 
Travel portal development
Travel portal developmentTravel portal development
Travel portal developmentmarikaypaul
 
2020 06-03 cukenfest-bdd-and-sl_os
2020 06-03 cukenfest-bdd-and-sl_os2020 06-03 cukenfest-bdd-and-sl_os
2020 06-03 cukenfest-bdd-and-sl_osAbigail Bangser
 
resume_2016_low_rez
resume_2016_low_rezresume_2016_low_rez
resume_2016_low_rezJames Gray
 
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issuesMaximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issuesPlatypus
 
Sample Website Needs analysis
Sample Website Needs analysisSample Website Needs analysis
Sample Website Needs analysisConrad Sear
 
Moving away from legacy code with BDD
Moving away from legacy code with BDDMoving away from legacy code with BDD
Moving away from legacy code with BDDKonstantin Kudryashov
 
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...David Simpson
 
Criteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) MeetupCriteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) MeetupIbrahim Abubakari
 
Lean UX + DevOps
Lean UX + DevOpsLean UX + DevOps
Lean UX + DevOpsSynerzip
 
chetan_ahire_resume
chetan_ahire_resumechetan_ahire_resume
chetan_ahire_resumeClover00
 
The Web Platform - State of the Union '17
The Web Platform - State of the Union '17The Web Platform - State of the Union '17
The Web Platform - State of the Union '17Abdelrahman Omran
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBen Limmer
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulRobert Nyman
 
Vinod kumar maurya (1)
Vinod kumar maurya (1)Vinod kumar maurya (1)
Vinod kumar maurya (1)vinodmaurya
 
International SEO Strategy Webinar
International SEO Strategy WebinarInternational SEO Strategy Webinar
International SEO Strategy WebinarBrightEdge
 
Project Proposal PowerPoint Presentation Slides
Project Proposal PowerPoint Presentation Slides Project Proposal PowerPoint Presentation Slides
Project Proposal PowerPoint Presentation Slides SlideTeam
 
Project Proposal Powerpoint Presentation Slides
Project Proposal Powerpoint Presentation SlidesProject Proposal Powerpoint Presentation Slides
Project Proposal Powerpoint Presentation SlidesSlideTeam
 

Semelhante a Behaviour Driven Development (20)

Kalpesh_Jogi_Resume
Kalpesh_Jogi_ResumeKalpesh_Jogi_Resume
Kalpesh_Jogi_Resume
 
Travel portal development
Travel portal developmentTravel portal development
Travel portal development
 
2020 06-03 cukenfest-bdd-and-sl_os
2020 06-03 cukenfest-bdd-and-sl_os2020 06-03 cukenfest-bdd-and-sl_os
2020 06-03 cukenfest-bdd-and-sl_os
 
resume_2016_low_rez
resume_2016_low_rezresume_2016_low_rez
resume_2016_low_rez
 
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issuesMaximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
 
Sample Website Needs analysis
Sample Website Needs analysisSample Website Needs analysis
Sample Website Needs analysis
 
Progressive Web Apps - deep dive
Progressive Web Apps - deep diveProgressive Web Apps - deep dive
Progressive Web Apps - deep dive
 
Moving away from legacy code with BDD
Moving away from legacy code with BDDMoving away from legacy code with BDD
Moving away from legacy code with BDD
 
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
 
Criteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) MeetupCriteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) Meetup
 
Lean UX + DevOps
Lean UX + DevOpsLean UX + DevOps
Lean UX + DevOps
 
chetan_ahire_resume
chetan_ahire_resumechetan_ahire_resume
chetan_ahire_resume
 
Dubizzle Classified
Dubizzle Classified Dubizzle Classified
Dubizzle Classified
 
The Web Platform - State of the Union '17
The Web Platform - State of the Union '17The Web Platform - State of the Union '17
The Web Platform - State of the Union '17
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
 
Vinod kumar maurya (1)
Vinod kumar maurya (1)Vinod kumar maurya (1)
Vinod kumar maurya (1)
 
International SEO Strategy Webinar
International SEO Strategy WebinarInternational SEO Strategy Webinar
International SEO Strategy Webinar
 
Project Proposal PowerPoint Presentation Slides
Project Proposal PowerPoint Presentation Slides Project Proposal PowerPoint Presentation Slides
Project Proposal PowerPoint Presentation Slides
 
Project Proposal Powerpoint Presentation Slides
Project Proposal Powerpoint Presentation SlidesProject Proposal Powerpoint Presentation Slides
Project Proposal Powerpoint Presentation Slides
 

Último

MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxalwaysnagaraju26
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyAnusha Are
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Behaviour Driven Development

  • 2. Project restarts One of the major causes of both cost and time overruns is restarts. For every 100 projects that start, there are 94 restarts. This does not mean that 94 of 100 will have one restart, some projects can have several restarts. src: http://www.projectsmart.co.uk/docs/chaos-report.pdf
  • 3. What is BDD? Behavior Driven Development (BDD) is a software engineering practice designed to help teams build and deliver more valuable, higher quality software faster. It is not about programming, testing or management. It's about building together.
  • 4. Building together To do this, we need a way to describe the requirement such that everyone ● the business folks (customer) ● the product owner ● the development team have a common understanding of the scope of the work. source: http://dannorth.net/whats-in-a-story/
  • 6. Use case It would be great if we could connect multiple advertisement agents worldwide. Then visitors can see local advertisements. Feature: Local advertisements for visitors In order to see local advertisements, As a Visitor I want the website to detect my country settings, So that the right Advertising agent will serve my advertisements
  • 7. Present the story to the dev team The Visitor doesn't benefit from this feature, but the Advertising traffickers. They will have full control over country based advertisements. How about control on channels? Feature: Country Based Advertisement Serving on portals In order to be able to serve advertisements by different agents As a Advertising trafficker I want define the agent based on the country and channel
  • 8. Making the boss happy I love you guys. This will bring in even more $ money $. While you're on it please add support for pages as well.... Feature: Country Based Advertisement Serving on portals In order to be able to serve advertisements by different agents As a Advertising trafficker I want define the agent based on the country, channel and page
  • 9. Writing the story Feature: Country Based Advertisement Serving on portals In order to be able to serve advertisements by different agents As a Advertising trafficker I want define the agent based on the country, portal and page
  • 10. Refining the story Feature: Country Based Advertisement Serving on portals In order to be able to serve advertisements by different agents As a Advertising trafficker I want define the agent based on the country, portal and page Scenario Outline: Visitors on certain channel pages Given the visitor is from "<country>" When the visitor is on the "<page>" page And the visitor is on the "<channel>" channel Then advertisements should be served by <agent> Examples: ####################################################### | country | page | channel | agent | ####################################################### | default | default | default | Google | | The Netherlands | home | default | Google | | America | game | Family | AdTech | | America | home | Teens | StarMedia | | America | home | Girls | Google |
  • 11. Behat + Mink + Selenium2 = YEAH!
  • 12. Generated snippet <?php use BehatBehatTesterExceptionPendingException; use BehatMinkExtensionContextMinkContext; use BehatBehatContextSnippetAcceptingContext; class WebContext extends MinkContext implements SnippetAcceptingContext { /** * @Given the visitor is from :arg1 */ public function theVisitorIsFrom($arg1) { throw new PendingException(); } /** * @When the visitor is on the :arg1 page */ public function theVisitorIsOnThePage($arg1) { throw new PendingException(); } /** * @When the visitor is on the :arg1 channel */ public function theVisitorIsOnTheChannel($arg1) { throw new PendingException(); } /** * @Then advertisements should be served by :provider */ public function advertisementsShouldBeServedBy($provider) { throw new PendingException(); } }
  • 13. Enter some logic <?php use BehatBehatTesterExceptionPendingException; use BehatMinkExtensionContextMinkContext; use BehatBehatContextSnippetAcceptingContext; class WebContext extends MinkContext implements SnippetAcceptingContext { private $pages = array( 'default' => '/', 'home' => '/', 'game' => '/spel/donuts-saras-kookcursus' ); private $channels = array( 'Teens' => 'http://www.agame.com', 'Girls' => 'http://www.girlsgogames.com', 'Family' => 'http://spel.nl' ); /** * @Given the visitor is from :country */ public function theVisitorIsFrom($country) { $this->getSession()->setCookie('country', $country); } /** * @When the visitor is on the :page page */ public function theVisitorIsOnThePage($page) { $this->visitPath($this->pages[$page]); } /** * @When the visitor is on the :arg1 channel */ public function theVisitorIsOnTheChannel($channel) { $this->setMinkParameter('base_url', $this->channels[$channel]); } /** * @Then advertisements should be served by :provider */ public function advertisementsShouldBeServedBy($provider) { // provider check... } }
  • 15. Tested 5 scenarios in 10 seconds.