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.

BDD - Collaborate like you mean it!

2,083 views

Published on

Behaviour-Driven Development (BDD) is a game changer for the whole team! Behaviour Driven Development is a powerful collaboration technique that can empower teams to deliver higher value features to the business faster and more effectively. More than just a testing technique, BDD is both a collaboration and a verification tool, and a vital step on the road to Continuous Delivery.

Published in: Software

BDD - Collaborate like you mean it!

  1. 1. Collaborate like you mean it! BDD in the world of Agile 2.0
  2. 2. John Ferguson Smart Introductions “I help teams of smart people 
 learn to work together more efficiently, 
 to deliver better software faster”
  3. 3. Do you aim to build features that delight the customer?
  4. 4. How long does it take a feature to go from an idea to into the hands of the users?
  5. 5. We can’t afford to wait for long dev cycles
  6. 6. Today’s market moves fast Our delivery strategies need to move just as fast
  7. 7. Agile helps us meet these challenges
  8. 8. But are classic agile practices enough?
  9. 9. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  10. 10. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  11. 11. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  12. 12. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  13. 13. The essence of BDD Collaborate to discover requirements and identify uncertainty Using examples at multiple levels And a common language to build a shared understanding To deliver software that matters
  14. 14. The traditional way BA Developer Tester
  15. 15. The traditional way Story BA Developer Tester
  16. 16. The traditional way Story Working code BA Developer Tester
  17. 17. The traditional way Story Working code boring manual testing BA Developer Tester
  18. 18. The traditional way Story bug reports Working code boring manual testing BA Developer Tester
  19. 19. The traditional way Story bug reports Working code boring manual testing WASTE BA Developer Tester
  20. 20. The BDD way Story
  21. 21. The BDD way Story
  22. 22. The BDD way Story
  23. 23. The BDD way Story
  24. 24. The BDD way Story Examples
  25. 25. The BDD way Story Examples Automated acceptance criteria
  26. 26. The BDD way Shared understanding Story Examples Automated acceptance criteria
  27. 27. The BDD way Working code and Working Automated Acceptance Tests Shared understanding Story Examples Automated acceptance criteria
  28. 28. The BDD way Working code and Working Automated Acceptance Tests Exploratory testing, usability testing... Shared understanding Story Examples Automated acceptance criteria
  29. 29. The BDD way BA and/or product owner Tester Developer Automatable Acceptance Criteria Shared understanding
  30. 30. The BDD way
  31. 31. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals The BDD way
  32. 32. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals Earning points from flights Capabilities Earning points from spending with partners Viewing points earned Spending points on bookings The BDD way
  33. 33. Frequent Flyer Application Goal: Encourage travellers to fly with Flying High airlines more often by allowing them to cumulate Frequent Flyer points that they can spend on cheaper flights. Goals Earning points from flights Capabilities Earning points from spending with partners Viewing points earned Spending points on bookings FeaturesViewing current points balance View points needed to achieve the next status level Calculating points needed for a given destination The BDD way
  34. 34. The BDD way
  35. 35. The BDD way
  36. 36. The BDD way
  37. 37. The BDD way
  38. 38. The BDD way
  39. 39. The BDD way
  40. 40. The BDD way
  41. 41. Collaborate like you mean it!
  42. 42. Show me the value!
  43. 43. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password
  44. 44. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  45. 45. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  46. 46. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter
  47. 47. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter Scenario: Login via Facebook
  48. 48. “Don’t take my word for it” Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Feature: Authenticate using social media
 In order to access the application more easily
 As a new user I want to authenticate using social media instead of having to provide a username and password Scenario: Login via LinkedIn Scenario: Login via Twitter Scenario: Login via Facebook
  49. 49. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer
  50. 50. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer
  51. 51. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details
  52. 52. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details In order to propose more relevant services to my customers What is the real business goal?
  53. 53. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details As a financial adviser
 What is the real business goal? What is the context of the user who needs this feature?
  54. 54. “Why are we building this anyway?” Feature: Display customer details
 As a user I want to view the customer's profile details
 So that I can see the personal information on the customer Feature: Locate a customer
 In order to propose more relevant services to my customers
 As a financial adviser
 I want to view a customer's profile details What is the real business goal? What is the context of the user who needs this feature?
  55. 55. “Having the conversation is more important than recording the conversation is more important than automating the conversation” - Liz Keogh
  56. 56. “No shit, Sherlock!” 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 |
  57. 57. “No shit, Sherlock!” 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 | OK, but what else?
  58. 58. Get everyone involved early
  59. 59. Create a Dynamic Tension
  60. 60. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number
  61. 61. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number
  62. 62. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
  63. 63. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith | Well-defined inputs
  64. 64. “How would you test this?” Scenario: Find a customer by various criteria
 Given I am logged into the application
 When I click Search
 Then I will see search criteria options to search for the customer by customer name, date of birth, and account number Scenario: Find a customer by name
 Given the following customers exist:
 | id | first name | last name |
 | 100 | Sarah-Jane | Smith |
 | 101 | Sarah | Smith |
 When I search for a customer using the following search criteria:
 | name | Sarah-Jane Smith |
 Then I should display the following customer: | id | first name | last name |
 | 100 | Sarah-Jane | Smith | Well-defined inputs Well-defined outcomes
  65. 65. Get up close and personal
  66. 66. Everyone is responsible for quality!
  67. 67. Communication is essential
  68. 68. Embrace Living Documentation
  69. 69. Embrace Living Documentation
  70. 70. Embrace Living Documentation
  71. 71. Embrace Living Documentation
  72. 72. Embrace Living Documentation
  73. 73. Embrace Living Documentation
  74. 74. Embrace Living Documentation
  75. 75. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  76. 76. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  77. 77. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  78. 78. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  79. 79. So why do BDD? Delight your customers Reduce Waste Deliver faster and more reliably Improve Visibility
  80. 80. Questions?

×