Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Beyond Given/When/Then - why diving into Cucumber is the wrong approach to adopting BDD

1,357 views

Published on

IT teams today are under constant pressure to deliver more value sooner, and Behaviour Driven Development (BDD) is one of the more effective ways to help teams deliver the high quality software that their business needs. When they adopt BDD, many teams look to tools like Cucumber to help them. But BDD isn’t simply about picking up a new tool.

In fact, there is a lot more to BDD than Given/When/Then and tools like Cucumber, and both can be misused. In this talk, we will take a step back and look at the bigger picture, and learn why using Gherkin at the wrong time, or for the wrong purpose, may be holding you back.

Published in: Technology

Beyond Given/When/Then - why diving into Cucumber is the wrong approach to adopting BDD

  1. 1. @wakaleojohnfergusonsmart.com BEYOND GIVEN/WHEN/THEN Why diving into Cucumber is the wrong approach to adopting BDD @wakaleo
  2. 2. @wakaleojohnfergusonsmart.com “You do BDD? Cool, I love test automation!” “We couldn’t do BDD this sprint because we didn’t have any UI stories” “Yes, we do BDD here, the tester uses Cucumber for all his tests” “We're dev complete so let's write some Bee-Dee-Dees” “The Jira story is not complete until the BA defines their given-when-thens”
  3. 3. @wakaleojohnfergusonsmart.com BDD is NOT Using “Given-When-Then” in your stories Though you may find the Given/When/Then structure useful at certain stages when you practice BDD
  4. 4. @wakaleojohnfergusonsmart.com BDD is NOT Using Cucumber to write automated web tests Though you may find Cucumber useful at certain stages when you practice BDD
  5. 5. @wakaleojohnfergusonsmart.com BDD IS A way of collaborating using conversations about examples and business rules to deliver better software
  6. 6. @wakaleojohnfergusonsmart.com To deliver software that matters And a common language to build a shared understanding Using rules and examples at multiple levels Collaborate to discover requirements and identify uncertainty
  7. 7. @wakaleojohnfergusonsmart.com Business BA Developers Testers As a corporate frequent flyer I want to earn points on my business flights So that I can get discounts on my holiday flights Examples Rules Acceptance Criteria SHARED UNDERSTANDING Executable Specifications Scenario: First class earns double points Given I fly from London to Paris When I am in First Class
 Then I should earn twice as many points Scenario: First class earns double points Given I fly from London to Paris When I am in First Class
 Then I should earn twice as many points Development and exploratory testing Software that matters
  8. 8. @wakaleojohnfergusonsmart.com Discover Define Formalise Automate Gherkin Cucumber
  9. 9. @wakaleojohnfergusonsmart.com Gherkins get people together
  10. 10. @wakaleojohnfergusonsmart.com Scenario: Applying for a joint credit card with insufficient combined income The combined income must be over £10,000 Given Susan has an income of £3000 And Jim has an income of £2500 When Susan and Jim apply for a joint credit card online Then the application should be refused What rule are we illustrating Preconditions Action Expected outcome Gherkin: a simple but flexible format
  11. 11. @wakaleojohnfergusonsmart.com Feature: Credit card financial checks In order to avoid bad debts As a financial institution I want to ensure that a customer’s credit limit is in line with the their earnings Scenario Outline: The maximum credit card limit depends on the customer's salary A customer needs a salary of at least £10,000. There are two types of card, one with a limit of £2500, and another with a limit of £5000 Given an individual customer with an annual salary of <Salary> When the customer applies for a credit card Then the credit card application should be <Approved or Refused> And if approved, the maximum credit limit should be <Max Limit> Examples: | Salary | Approved or Refused | Max Limit | Notes | | £5000 | Refused | 0 | must be over £10,000 | | £15,000 | Approved | £2500 | Up to £15,000 | | £25,000 | Approved | £5000 | Over £15,000 | | £100,000 | Approved | £5000 | Max limit £5000 | Gherkin: a simple but flexible format Why What How Examples
  12. 12. @wakaleojohnfergusonsmart.com “I wrote you a long letter because I didn’t have time to write a short one” - Mark Twain
  13. 13. @wakaleojohnfergusonsmart.com Feature: Display customer details As a user I want to view the customer's personal profile In order to access the personal information on the customer Scenario: Customer Profile field 'Gender' Given I am logged into the application And I have displayed the customer When I view the customer profile on the summary screen Then I should see the Gender field (field type: Dropdown - read only information)
 
 Scenario: Customer Profile ‘DOB/Age' field Given I am logged into the application And I have displayed the customer When I view the Personal Profile on the Summary screen Then I should see the DOB/Age field (DOB field type: Date, format: dd mmm yyyy - read only) (Age field type:read only - numeric) under Personal Profile And it should be blank if no value returned
 Scenario: Customer Profile 'Marital Status' field Scenario: Customer Profile 'Dependents' field The Gherkin notation is not a guarantee of quality
  14. 14. @wakaleojohnfergusonsmart.com Sometimes G/W/T happens too early “The Jira story is not complete until the BA defines their given-when-thens”
  15. 15. @wakaleojohnfergusonsmart.com
  16. 16. @wakaleojohnfergusonsmart.com Scenario Outline: User tries to log on to application with invalid credentials
 Given I am a registered user When I login as <username> with password <password> Then I should not be allowed to logon And I should see the error message <error-message> Examples: | username | password | message | | scott | | Please enter a password | | | tiger | Please enter a username | | scott | wrong | Invalid username or password | Sure, but what else?
  17. 17. @wakaleojohnfergusonsmart.com And sometimes G/W/T happens too late “Yes, we do BDD here, the tester uses Cucumber for all his tests” “We're dev complete so let's write some Bee-Dee-Dees” “You do BDD? Cool, I love test automation!”
  18. 18. @wakaleojohnfergusonsmart.com
  19. 19. @wakaleojohnfergusonsmart.com
  20. 20. @wakaleojohnfergusonsmart.com A better approach?
  21. 21. @wakaleojohnfergusonsmart.com establishes validatesShared Understanding Collaboration Formalisation Sprint Planning Sprint Delivery
  22. 22. @wakaleojohnfergusonsmart.com Advocate Sceptic Cross-Examiner What should it do, and why? How can it work? What can go wrong? How can we prove it works?
  23. 23. @wakaleojohnfergusonsmart.com Discover
  24. 24. @wakaleojohnfergusonsmart.com Framing the question
  25. 25. @wakaleojohnfergusonsmart.com ✓Impact Mapping ✓Story Mapping ✓Event Storming The Bigger Picture
  26. 26. @wakaleojohnfergusonsmart.com Know what your goals are Know when you know they are achieved Don’t confuse success with completion
  27. 27. @wakaleojohnfergusonsmart.com Define
  28. 28. @wakaleojohnfergusonsmart.com Identify the outputs
  29. 29. @wakaleojohnfergusonsmart.com Rich guy Joe successfully orders a card Student Billy can’t order a card because his income is too low Salary must be sufficient ✓Example Mapping Find Key Rules and Examples
  30. 30. @wakaleojohnfergusonsmart.com Rich guy Joe successfully orders a card Applies for card His credit rating is OK His salary is sufficient An account is created The credit card is posted ✓Feature Mapping Scenario Steps Outcomes His credit rating sucks Explore flows
  31. 31. @wakaleojohnfergusonsmart.com Rich guy Joe successfully orders a card Applies for card His credit rating is OK His salary is sufficient An account is created The credit card is posted ✓Feature Mapping Scenario Steps Outcomes Explore variations Student Billy can’t order a card Applies for card His credit rating is OK His salary is not sufficient His application is rejected
  32. 32. @wakaleojohnfergusonsmart.com The Three Facets of BDD #1) Investigate
  33. 33. @wakaleojohnfergusonsmart.com The Three Facets of BDD #2) Communicate
  34. 34. @wakaleojohnfergusonsmart.com The Three Facets of BDD #3) Challenge The Three Facets of BDD #3) Challenge
  35. 35. @wakaleojohnfergusonsmart.com Formalise
  36. 36. @wakaleojohnfergusonsmart.com Write executable specifications Feature: Credit card financial checks In order to avoid bad debts As a financial institution I want to ensure that a customer’s credit limit is in line with the their earnings Scenario Outline: The maximum credit card limit depends on the customer's salary A customer needs a salary of at least £10,000. There are two types of card, one with a limit of £2500, and another with a limit of £5000 Given an individual customer with an annual salary of <Salary> When the customer applies for a credit card Then the credit card application should be <Approved or Refused> And if approved, the maximum credit limit should be <Max Limit> Examples: | Salary | Approved or Refused | Max Limit | Notes | | £5000 | Refused | 0 | must be over £10,000 | | £15,000 | Approved | £2500 | Up to £15,000 | | £25,000 | Approved | £5000 | Over £15,000 | | £100,000 | Approved | £5000 | Max limit £5000 |
  37. 37. @wakaleojohnfergusonsmart.com Automate
  38. 38. @wakaleojohnfergusonsmart.com Automate Feature: Credit card financial checks In order to avoid bad debts As a financial institution I want to ensure that a customer’s credit limit is in line with the their earnings Scenario Outline: The maximum credit card limit depends on the customer's salary A customer needs a salary of at least £10,000. There are two types of card, one with a limit of £2500, and another with a limit of £5000 Given an individual customer with an annual salary of <Salary> When the customer applies for a credit card Then the credit card application should be <Approved or Refused> And if approved, the maximum credit limit should be <Max Limit> Examples: | Salary | Approved or Refused | Max Limit | Notes | | £5000 | Refused | 0 | must be over £10,000 | | £15,000 | Approved | £2500 | Up to £15,000 | | £25,000 | Approved | £5000 | Over £15,000 | | £100,000 | Approved | £5000 | Max limit £5000 |
  39. 39. @wakaleojohnfergusonsmart.com Automation should serve the team, not the other way round
  40. 40. @wakaleojohnfergusonsmart.com Investigate Communicate Challenge Verified Understood Heard Gherkin and Cucum ber
  41. 41. @wakaleojohnfergusonsmart.com AGILEPRAGUE discount coupon 50% discount for conference attendees on “BDD with Cucumber and Serenity” http://serenity-dojo.com THANK YOU! https://www.johnfergusonsmart.com John Ferguson Smart @wakaleo

×