SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Behavior
Driven
Development

Manodnya Lele
Ben Maynard
About Litle & Co.

• Litle & Co. is a leading financial technology company
• One of the largest, private, non-bank proprietary
   processing platforms serving the Card-not-Present
   marketplace
• Specific expertise in Card-not-Present transactions,
   deep knowledge of Best Practices, Card Association
   Regulations, PCI and Data Security requirements
• Litle Vault is the 2011 Stevie Award Winner in New
   Product & Services (Web/IVR) category
Outline

•   What is BDD?
•   History
•   Why not TDD?
•   The Story
•   Tools: Compare and Contrast
•   Comments and Questions
What is BDD?




BDD can turn an idea for a requirement into
  implemented, tested, production-ready code simply
  and effectively, as long as the requirement is specific
  enough that everyone knows what’s going on.
                                     -Dan North
What is BDD?




BDD can turn an idea for a requirement into
  implemented, tested, production-ready code simply
  and effectively, as long as the requirement is specific
  enough that everyone knows what’s going on.
                                     -Dan North
What is BDD?




BDD can turn an idea for a requirement into
  implemented, tested, production-ready code simply
  and effectively, as long as the requirement is specific
  enough that everyone knows what’s going on.
                                     -Dan North
What is BDD?




BDD can turn an idea for a requirement into
  implemented, tested, production-ready code simply
  and effectively, as long as the requirement is specific
  enough that everyone knows what’s going on.
                                     -Dan North
History



1999
   Test First
   Development
                 2003
                    Behavior Driven
                    Development
History



1999
   Test First
   Development
                 2003
                    Behavior Driven
                    Development
    Kent Beck
History




Kent Beck   Dan North
Why not TDD?




BAs / Program Managers   Techies
Why not TDD?




BAs / Program Managers    Techies
• Requirements docs not
  technical enough
Why not TDD?




BAs / Program Managers    Techies
• Requirements docs not   • Test cases and unit tests
  technical enough           too technical
Why not TDD?
Why not TDD?




     BDD
Given… When… Then…
Why not TDD?



TDD


      BDD
Why not TDD?



TDD
Building the thing right


                   BDD
Why not TDD?



TDD
Building the thing right


                   BDD
                   Building the right thing
BDD:
The Story
BDD: The Story
• A way to describe the requirement such that everyone
           the business folks,
           the analyst,
           the developer,
           the tester,
           and others
   has a common understanding of the scope of the work.

• A description of a requirement and its business benefit, and a set of
  criteria by which we all agree that it is “done”.

• Remember:                              Given… When… Then…
BDD: The Story

• The title should describe an activity
     Describes actual behavior by a user of the system.

• The narrative should include a role, a feature and a benefit
     “As a [role] I want [feature] so that [benefit]“

• The scenario should be described in terms of givens, events
  and outcomes

                                     Given… When… Then…
BDD: The Story

Title
        Easier user experience with online site

Narrative
     As a(n) active, participating member of my company
     I want a better online website
     So that users can easily use and purchase on our website

 Scenario 1: Smooth Checkout Process             Scenario 2: Better Site Uptime
      Given our world class web sales app             Given that a potential buyer
        And items in my shopping cart                 When a user enters our URL into a browser
      When a user clicks “checkout”                   Then the site will be available over 99.97%
      Then the user will move through checkout              of the time
          with a maximum of two page clicks
        And maintain an https session with our site
BDD Tool Overview
Motivating Example

FizzBuzz

• Simple program that outputs a number and expects
  the player to guess which word applies:
   – Divisible by 3: “Fizz”
   – Divisible by 5: “Buzz”
   – Divisible by 3 and 5: “FizzBuzz”
jbehave
http://jbehave.org
How to write a BDD test in jbehave

• Write the story in a file with a <story_name>.story
  name
• Create the implementation in Java in a class named
  <StoryName>Steps.java
• Create an Runner, extending JUnitStory to link the
  story to the implementation
• Runner also can specify other details such as output
  formats
jbehave Story

• Story: Play fizz-buzz                      • Examples:
    As a math game player                       |value|display|
    I would like to play fizz-buzz              |1|1|
    So that I can learn how to calculate
                                                |2|2|
        multiples
                                                |3|fizz|
    Scenario: When to fizz                      |4|4|
       Given a fizz-buzz player                 |5|buzz|
       When I ask to fizz-buzz for 3            |6|fizz|
       Then I should get a fizz                 |7|7|
                                                |8|8|
    Scenario: When to fizz-buzz
                                                |9|fizz|
       Given a fizz-buzz player
                                                |10|buzz|
       When I ask to fizz-buzz for <value>
       Then I should get a <display>
                                                |15|fizz-buzz|
                                                |30|fizz-buzz|
jbehave Test Code

public class PlayFizzBuzzSteps            @Then("I should get a <display>")
{                                         @Alias("I should get a $display")
  private FizzBuzzer fb;                  public void isBuzz(@Named("display") final
  private String answer;                      String display)
                                          {
@Given("a fizz-buzz player")                assertThat(answer, is(display));
public void givenAFizzBuzzPlayer()        }
{ fb = new FizzBuzzer(3, 5);
}
@When("I ask to fizz-buzz for <value>")
@Alias("I ask to fizz-buzz for $value")
public void answer(@Named("value")
  final int value)
{ answer = fb.answer(value);
 }
jbehave Runner

public class PlayFizzBuzz extends JUnitStory {

    public PlayFizzBuzz()
    {
      addSteps(new InstanceStepsFactory(configuration(), new PlayFizzBuzzSteps())
       .createCandidateSteps());
    }
    @Override
    public Configuration configuration()
    {
      return super.configuration()
       .useStoryReporterBuilder(new StoryReporterBuilder().withFormats(Format.CONSOLE,
                                         Format.TXT,
                                         Format.HTML));
    }
}
easyb
http://easyb.org
FizzBuzz with easyb

narrative "while playing fizz-buzz", {
    as_a "fizz-buzz player"
    i_want "to automate my responses"
    so_that "i always win"
}
 scenario "fizzing", {
    given "a fizz-buzz player", {
      fb = new sf.projects.fizzbuzz.FizzBuzzer(3, 5)
    }
    when "3", {
      display = fb.answer(3);
    }
    then "should fizz", { display.shouldBe "fizz" }
}
Cucumber
http://cukes.info
Cucumber Feature

Feature: Play Fizz Buzz
  As a math game player
  I would like to play fizz-buzz
  So that I can learn how to calculate multiples

Scenario: When to fizz
  Given a fizz-buzz player
  When I ask to fizz-buzz for 3
  Then I should get a fizz
Cucumber Test Code

Given /a fizz-buzz player/ do |n|
  @fb = FizzerBuzzer.new
end

When /I ask to fizz-buzz for 3/ do |op|
 @result = @fb.answer op
end

Then /I should get a fizz/ do |result|
 @result.should == result.to_f
end
Compare and Contrast

Criteria            jbehave           easyb             Cucumber
Language written    Java              Groovy            Ruby
in
Languages           Any language on   Any language on   Ruby or (with
supported           the JVM           the JVM           Cuke4Duke) Java

Writing the story   Separate files    Single file       Separate files
and test



Running tests       Commandline, Ant, Commandline, Ant, Commandline or
                    Maven, IDEs like  Maven, IDEs like  (with Cuke4Duke)
                    Eclipse, JUnit    Eclipse, JUnit    Ant, Maven, IDEs
                                                        like Eclipse
Criteria            jbehave            easyb                Cucumber
Pending tests       Supported          Supported            Supported
feature
Running multiple    Supported          Supported            Supported
tests
Assertion feature   Can use Hamcrest   Uses ‘ensure’        Uses Ruby
                    matchers for       syntax, similar to   framework
                    assertion          assert
Installation        Easy               Easy                 Fair
Documentation       Good               Extremely good       No documentation
support                                                     but good
                                                            community
                                                            support
Year of inception   2003               2009                 2008
Author              Dan North          Andy Glover          Aslak Hellesøy
Summary

Given that you have heard this presentation
 And discovered that BDD is really fun
When you are thinking about testing strategies
Then you should give BDD a chance!

• Questions /Comments are welcome….

• Contacts
   – Ben Maynard: bmaynard@litle.com
   – Manodnya Lele: mlele@litle.com
Materials

Ready-made BDD project (Sualeh Fatehi)
   http://code.google.com/p/test-fizzbuzz/

Más contenido relacionado

Similar a Behavior Driven Development: An Overview

Similar a Behavior Driven Development: An Overview (20)

BDD testing with cucumber
BDD testing with cucumberBDD testing with cucumber
BDD testing with cucumber
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Effective Testing using Behavior-Driven Development
Effective Testing using Behavior-Driven DevelopmentEffective Testing using Behavior-Driven Development
Effective Testing using Behavior-Driven Development
 
BDD - Keep love alive
BDD - Keep love aliveBDD - Keep love alive
BDD - Keep love alive
 
ITB2017 - Intro to Behavior Driven Development
ITB2017 - Intro to Behavior Driven DevelopmentITB2017 - Intro to Behavior Driven Development
ITB2017 - Intro to Behavior Driven Development
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
German Testing Day 2015 - How behavior-driven development fuses developers an...
German Testing Day 2015 - How behavior-driven development fuses developers an...German Testing Day 2015 - How behavior-driven development fuses developers an...
German Testing Day 2015 - How behavior-driven development fuses developers an...
 
Is Your API Misbehaving (workshop)
Is Your API Misbehaving (workshop)Is Your API Misbehaving (workshop)
Is Your API Misbehaving (workshop)
 
Automation in Drupal
Automation in DrupalAutomation in Drupal
Automation in Drupal
 
Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...
 
Myths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentMyths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven Development
 
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
 
BDD, Behat & Drupal
BDD, Behat & DrupalBDD, Behat & Drupal
BDD, Behat & Drupal
 
Behavior-Driven-Development (BDD) for Conversational Applications
Behavior-Driven-Development (BDD) for Conversational ApplicationsBehavior-Driven-Development (BDD) for Conversational Applications
Behavior-Driven-Development (BDD) for Conversational Applications
 
Behavior Driven Development - WPC 2011
Behavior Driven Development - WPC 2011Behavior Driven Development - WPC 2011
Behavior Driven Development - WPC 2011
 
TDD & BDD in F# at Progressive F# Tutorials 2011
TDD & BDD in F# at Progressive F# Tutorials 2011TDD & BDD in F# at Progressive F# Tutorials 2011
TDD & BDD in F# at Progressive F# Tutorials 2011
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
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
 
Building Your App SDK with Swift
Building Your App SDK with SwiftBuilding Your App SDK with Swift
Building Your App SDK with Swift
 
Why BaaS is crucial to early stage startups
Why BaaS is crucial to early stage startupsWhy BaaS is crucial to early stage startups
Why BaaS is crucial to early stage startups
 

Ú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)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
+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...
 
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...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

Behavior Driven Development: An Overview

  • 2. About Litle & Co. • Litle & Co. is a leading financial technology company • One of the largest, private, non-bank proprietary processing platforms serving the Card-not-Present marketplace • Specific expertise in Card-not-Present transactions, deep knowledge of Best Practices, Card Association Regulations, PCI and Data Security requirements • Litle Vault is the 2011 Stevie Award Winner in New Product & Services (Web/IVR) category
  • 3. Outline • What is BDD? • History • Why not TDD? • The Story • Tools: Compare and Contrast • Comments and Questions
  • 4. What is BDD? BDD can turn an idea for a requirement into implemented, tested, production-ready code simply and effectively, as long as the requirement is specific enough that everyone knows what’s going on. -Dan North
  • 5. What is BDD? BDD can turn an idea for a requirement into implemented, tested, production-ready code simply and effectively, as long as the requirement is specific enough that everyone knows what’s going on. -Dan North
  • 6. What is BDD? BDD can turn an idea for a requirement into implemented, tested, production-ready code simply and effectively, as long as the requirement is specific enough that everyone knows what’s going on. -Dan North
  • 7. What is BDD? BDD can turn an idea for a requirement into implemented, tested, production-ready code simply and effectively, as long as the requirement is specific enough that everyone knows what’s going on. -Dan North
  • 8. History 1999 Test First Development 2003 Behavior Driven Development
  • 9. History 1999 Test First Development 2003 Behavior Driven Development Kent Beck
  • 10. History Kent Beck Dan North
  • 11. Why not TDD? BAs / Program Managers Techies
  • 12. Why not TDD? BAs / Program Managers Techies • Requirements docs not technical enough
  • 13. Why not TDD? BAs / Program Managers Techies • Requirements docs not • Test cases and unit tests technical enough too technical
  • 15. Why not TDD? BDD Given… When… Then…
  • 17. Why not TDD? TDD Building the thing right BDD
  • 18. Why not TDD? TDD Building the thing right BDD Building the right thing
  • 20. BDD: The Story • A way to describe the requirement such that everyone the business folks, the analyst, the developer, the tester, and others has a common understanding of the scope of the work. • A description of a requirement and its business benefit, and a set of criteria by which we all agree that it is “done”. • Remember: Given… When… Then…
  • 21. BDD: The Story • The title should describe an activity Describes actual behavior by a user of the system. • The narrative should include a role, a feature and a benefit “As a [role] I want [feature] so that [benefit]“ • The scenario should be described in terms of givens, events and outcomes Given… When… Then…
  • 22. BDD: The Story Title Easier user experience with online site Narrative As a(n) active, participating member of my company I want a better online website So that users can easily use and purchase on our website Scenario 1: Smooth Checkout Process Scenario 2: Better Site Uptime Given our world class web sales app Given that a potential buyer And items in my shopping cart When a user enters our URL into a browser When a user clicks “checkout” Then the site will be available over 99.97% Then the user will move through checkout of the time with a maximum of two page clicks And maintain an https session with our site
  • 24. Motivating Example FizzBuzz • Simple program that outputs a number and expects the player to guess which word applies: – Divisible by 3: “Fizz” – Divisible by 5: “Buzz” – Divisible by 3 and 5: “FizzBuzz”
  • 26. How to write a BDD test in jbehave • Write the story in a file with a <story_name>.story name • Create the implementation in Java in a class named <StoryName>Steps.java • Create an Runner, extending JUnitStory to link the story to the implementation • Runner also can specify other details such as output formats
  • 27. jbehave Story • Story: Play fizz-buzz • Examples: As a math game player |value|display| I would like to play fizz-buzz |1|1| So that I can learn how to calculate |2|2| multiples |3|fizz| Scenario: When to fizz |4|4| Given a fizz-buzz player |5|buzz| When I ask to fizz-buzz for 3 |6|fizz| Then I should get a fizz |7|7| |8|8| Scenario: When to fizz-buzz |9|fizz| Given a fizz-buzz player |10|buzz| When I ask to fizz-buzz for <value> Then I should get a <display> |15|fizz-buzz| |30|fizz-buzz|
  • 28. jbehave Test Code public class PlayFizzBuzzSteps @Then("I should get a <display>") { @Alias("I should get a $display") private FizzBuzzer fb; public void isBuzz(@Named("display") final private String answer; String display) { @Given("a fizz-buzz player") assertThat(answer, is(display)); public void givenAFizzBuzzPlayer() } { fb = new FizzBuzzer(3, 5); } @When("I ask to fizz-buzz for <value>") @Alias("I ask to fizz-buzz for $value") public void answer(@Named("value") final int value) { answer = fb.answer(value); }
  • 29. jbehave Runner public class PlayFizzBuzz extends JUnitStory { public PlayFizzBuzz() { addSteps(new InstanceStepsFactory(configuration(), new PlayFizzBuzzSteps()) .createCandidateSteps()); } @Override public Configuration configuration() { return super.configuration() .useStoryReporterBuilder(new StoryReporterBuilder().withFormats(Format.CONSOLE, Format.TXT, Format.HTML)); } }
  • 31. FizzBuzz with easyb narrative "while playing fizz-buzz", { as_a "fizz-buzz player" i_want "to automate my responses" so_that "i always win" } scenario "fizzing", { given "a fizz-buzz player", { fb = new sf.projects.fizzbuzz.FizzBuzzer(3, 5) } when "3", { display = fb.answer(3); } then "should fizz", { display.shouldBe "fizz" } }
  • 33. Cucumber Feature Feature: Play Fizz Buzz As a math game player I would like to play fizz-buzz So that I can learn how to calculate multiples Scenario: When to fizz Given a fizz-buzz player When I ask to fizz-buzz for 3 Then I should get a fizz
  • 34. Cucumber Test Code Given /a fizz-buzz player/ do |n| @fb = FizzerBuzzer.new end When /I ask to fizz-buzz for 3/ do |op| @result = @fb.answer op end Then /I should get a fizz/ do |result| @result.should == result.to_f end
  • 35. Compare and Contrast Criteria jbehave easyb Cucumber Language written Java Groovy Ruby in Languages Any language on Any language on Ruby or (with supported the JVM the JVM Cuke4Duke) Java Writing the story Separate files Single file Separate files and test Running tests Commandline, Ant, Commandline, Ant, Commandline or Maven, IDEs like Maven, IDEs like (with Cuke4Duke) Eclipse, JUnit Eclipse, JUnit Ant, Maven, IDEs like Eclipse
  • 36. Criteria jbehave easyb Cucumber Pending tests Supported Supported Supported feature Running multiple Supported Supported Supported tests Assertion feature Can use Hamcrest Uses ‘ensure’ Uses Ruby matchers for syntax, similar to framework assertion assert Installation Easy Easy Fair Documentation Good Extremely good No documentation support but good community support Year of inception 2003 2009 2008 Author Dan North Andy Glover Aslak Hellesøy
  • 37. Summary Given that you have heard this presentation And discovered that BDD is really fun When you are thinking about testing strategies Then you should give BDD a chance! • Questions /Comments are welcome…. • Contacts – Ben Maynard: bmaynard@litle.com – Manodnya Lele: mlele@litle.com
  • 38. Materials Ready-made BDD project (Sualeh Fatehi) http://code.google.com/p/test-fizzbuzz/