Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A short introduction to BDD

A short introduction to BDD

Jakub Zalas

August 06, 2014
Tweet

More Decks by Jakub Zalas

Other Decks in Programming

Transcript

  1. A short introduction to BDD (BDD from the eyes of

    a test-first maniac) by Jakub Zalas Polish Developers Meetup in London
  2. public class DeliveryRepositoryTest extends TestCase { public void testFindsDeliveryByTrackingCode() {

    // ... } public void testFailsForInvalidTrackingCode() { // ... } } DeliveryRepository •  finds delivery by tracking code •  fails for invalidtracking code
  3. public class DeliveryControllerTest extends WebTestCase { public void testItShowsDeliveryDetailsForAValidTrackingCode() {

    // ... } public void testItDoesNotShowADeliveryForExpiredTrackingCode() { // ... } public void testItDoesNotShowADeliveryDeliveredMoreThanAMonthAgo() { // ... } } DeliveryController •  it shows delivery details for a valid tracking code •  it does not show a delivery for expired tracking code •  it does not show a delivery delivered more than a month ago
  4. 1. Open a browser 2. Put the site URL in

    the browser and press enter 3. Give username 4. Give password 5. Press submit button 6. Check if I gained access to the secured area
  5. As a Customer I want to sign in In order

    to be signed in track my deliveries
  6. As an Customer Owner I want to sign in In

    order to be signed in track my deliveries
  7. As an Customer Owner I want to sign in Customers

    to sign in In order to be signed in track my their deliveries
  8. When an anonymous user goes to the deliveries page Then

    he should see the signin form And he shouldn't see any delivery details
  9. When a Customer goes to the deliveries page And gives

    his login details Then he should see a list of his deliveries
  10. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered
  11. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered
  12. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered Scenario: Clicking a tracking URL Scenario: Clicking a tracking URL month after delivery
  13. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered Scenario: Clicking a tracking URL Given I am waiting for a delivery And I received a confirmation message When I click the tracking URL from the message Then I should see a status of my delivery Scenario: Clicking a tracking URL month after delivery Given I my package was delivered a month ago And I kept the confirmation message When I click the tracking URL from the message Then I should be informed the tracking URL has expired
  14. Feature: Tracking deliveries As a Customer I need to see

    a status of my delivery So I could know when it's going to be delivered Scenario: Clicking a tracking URL Given I am waiting for a delivery And I received a confirmation message When I click the tracking URL from the message Then I should see a status of my delivery Scenario: Clicking a tracking URL month after delivery Given I my package was delivered a month ago And I kept the confirmation message When I click the tracking URL from the message Then I should be informed the tracking URL has expired
  15. As a Customer I need to sign into the site

    So I could track my delivery
  16. As a Customer I need to see my deliveries So

    I could know when it's going to be delivered
  17. "I need users to sign into the site to track

    their delivery." "Why?" "So they could see where's their package." "Why?" "What do you mean? They need to track their deliveries." "Yes, but why?"
  18. "Well, our mission is to offer the most customer friendly

    courier services. We want to increase the number of satisfied customers." "Aha!" "So they wouldn't get impatient and file complaints when the delivery is delayed." "Why?" "So they could know when is it going to be delivered." "Why?"
  19. < 5% of customers filing complaints Customers Support Notifications Contact

    the Customer if delivery is delayed Add expected delivery time to the confirmation message SMS notifications Add a tracking URL to the confirmation message E-mail notifications List of deliveries after signing in Prevent complaints Check delivery status Why? Who? How? What?