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

513 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
  • Be the first to comment

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

  1. 1. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt BEYOND GIVEN/WHEN/THEN Why diving into Cucumber is the wrong approach to adopting BDD @wakaleo www.johnfergusonsmart.com
  2. 2. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt “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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt BDD IS A way of collaborating using conversations about examples and business rules to deliver better software
  6. 6. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Discover Define Formalise Automate Gherkin Cucumber
  9. 9. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Gherkins get people together
  10. 10. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt “I wrote you a long letter because I didn’t have time to write a short one” - Mark Twain
  13. 13. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt When G/W/T happens too early “The Jira story is not complete until the BA defines their given-when-thens”
  15. 15. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt
  16. 16. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt When 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. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt
  19. 19. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt
  20. 20. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt A better approach?
  21. 21. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt establishes validatesShared Understanding Collaboration Formalisation Sprint Planning Sprint Delivery
  22. 22. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Advocate Sceptic Cross-Examiner What should it do? How can it work? What can go wrong? How can we prove it works?
  23. 23. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Discover
  24. 24. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Framing the question
  25. 25. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt ✓Impact Mapping ✓Story Mapping ✓Event Storming The Bigger Picture
  26. 26. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Define
  27. 27. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Identify the outputs
  28. 28. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Find Key Rules and Examples 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
  29. 29. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Explore flows 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
  30. 30. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Explore variations 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 Student Billy can’t order a card Applies for card His credit rating is OK His salary is not sufficient His application is rejected
  31. 31. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Formalise
  32. 32. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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 |
  33. 33. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Automate
  34. 34. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt 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 |
  35. 35. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Example Mapping Examples and Rules
  36. 36. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Example Mapping Story Rules Examples Questions Examples and Rules
  37. 37. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Feature Mapping Exploring the flow
  38. 38. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Feature Mapping Exploring the flow Story A rule An Example Steps
  39. 39. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Feature Mapping Exploring the flow
  40. 40. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Feature Mapping Exploring the flow “Pointsper destination”story “Differenttravel classes”story
  41. 41. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits
  42. 42. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Siloed
  43. 43. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Colocated Breaking down the silos Reduce delivery bottlenecks Siloed
  44. 44. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Engaged Improving collaboration Prevent bugs and deliver the right product Colocated Breaking down the silos Reduce delivery bottlenecks Siloed
  45. 45. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Mechanised Effective automation Deliver the right product faster Engaged Improving collaboration Prevent bugs and deliver the right product Colocated Breaking down the silos Reduce delivery bottlenecks Siloed
  46. 46. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Pioneering Leverage Delight the customer Mechanised Effective automation Deliver the right product faster Engaged Improving collaboration Prevent bugs and deliver the right product Colocated Breaking down the silos Reduce delivery bottlenecks Siloed
  47. 47. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt The six stages of BDD Maturity Name Focus Benefits Projecting Experimentation Deliver value faster, and learning from it Pioneering Leverage Delight the customer Mechanised Effective automation Deliver the right product faster Engaged Improving collaboration Prevent bugs and deliver the right product Colocated Breaking down the silos Reduce delivery bottlenecks Siloed
  48. 48. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt Would you like to know more? Subscribe to the newsletter https://www.johnfergusonsmart.com Read the book!
  49. 49. #DevoxxPL#DevoxxPL @wakaleo#beyondgwt QUESTIONS? www.johnfergusonsmart.com @wakaleo

×