$30 off During Our Annual Pro Sale. View Details »

Why you should be doing BDD

Why you should be doing BDD

A brief introduction to Behavior Driven Development, accompanied with my story of how I applied it to a project.

Richard Tasker

October 18, 2014
Tweet

More Decks by Richard Tasker

Other Decks in Programming

Transcript

  1. Why you Should be
    Doing BDD
    Richard Tasker
    Email: [email protected]
    Twitter: @ritasker
    Blog: richardtasker.co.uk

    View Slide

  2. View Slide

  3. http://theeyewatch.files.wordpress.com/2012/10/large-matrix-blu-ray7.jpg

    View Slide

  4. https://pbs.twimg.com/profile_images/796961836/bio-photo-square.jpg

    View Slide

  5. Problems of TDD
    ● Where to start
    ● What to test and what not to test
    ● How much to test in one go
    ● What to call their tests
    ● How to understand why a test fails

    View Slide

  6. Code Demo

    View Slide

  7. An Expressive Test Name Helps When a Test Fails
    ● A bug has been introduced
    ● Behaviour has moved
    ● Behaviour has been Removed

    View Slide

  8. “We just use < insert BDD test Framework > for
    our unit tests”

    View Slide

  9. http://i.huffpost.com/gen/1143692/thumbs/o-PULLING-HAIR-facebook.jpg

    View Slide

  10. http://1.bp.blogspot.com/-
    0AEMdBXcEm0/Uc8Cme5oN4I/AAAAAAAAAlY/xCZ0BGqh6ew/s1600/Despicable-Me-Full-Movie-
    Screencaps-despicable-me-28511602-1706-922.jpg

    View Slide

  11. Vehicle/Part Model Vr 1

    View Slide

  12. 1985 2014

    View Slide

  13. Vehicle/Part Model Vr 2

    View Slide

  14. But...

    View Slide

  15. http://i.huffpost.com/gen/1143692/thumbs/o-PULLING-HAIR-facebook.jpg

    View Slide

  16. Vehicle/Part Model Vr 3

    View Slide

  17. User Stories and
    Acceptance Criteria
    As [a user]
    I want to [do something]
    So that I can [complete a task]
    In order to [complete a task]
    As [a user]
    I {must/should/could/wont} [do something]

    View Slide

  18. MoSCoW Priorities
    ● Must - Core requirements that must be
    included in the project
    ● Should - High priority requirements, to be
    included in the project if possible
    ● Could - Desirable requirements, not
    necessary to the project
    ● Won’t - Requirements that will not be
    implemented in a given release, but may be
    considered in the future

    View Slide

  19. Example User Stories
    In order to maintain an up to date Vehicle database
    As a Vehicle Administrator
    I must be able to create a new Vehicle
    In order to maintain an up to date Vehicle database
    As a Vehicle Administrator
    I must be able to edit an existing Vehicle
    In order to collate a list of Parts for a Vehicle
    As a Vehicle Administrator
    I must be able to apply a Part to a Vehicle

    View Slide

  20. Given some initial setup
    When an event occurs
    Then ensure some outcome

    View Slide

  21. Example Scenarios
    In order to maintain an up to date Vehicle database
    As a Vehicle Administrator
    I must be able to create a new Vehicle
    Given I have no Vehicles
    When I create a Volkswagen Golf 2.0
    Then I should have a Volkswagen Golf 2.0
    Given I have a Volkswagen Golf 2.0
    When I create a Volkswagen Golf 2.0
    Then I should receive a No Duplicates error

    View Slide

  22. Incorporating Acceptance Tests
    1. Write a failing acceptance test
    2. Write a unit test, which fails
    3. Write a little bit of code
    4. Rerun tests
    5. Repeat steps 2 - 4 until all tests pass

    View Slide

  23. Code Demo

    View Slide

  24. When to use Acceptance Criteria
    http://en.wikipedia.org/wiki/Cynefin#mediaviewer/File:
    Cynefin_as_of_1st_June_2014.png

    View Slide

  25. Why Should You Be Doing BDD
    ● Great for teams new to TDD
    ● Reduces communication barriers
    ● Priorities requirements
    ● Helps with naming objects
    ● Everyone knows when a feature is done

    View Slide

  26. Thanks For Listening
    Richard Tasker
    Email: [email protected]
    Twitter: @ritasker
    Blog: richardtasker.co.uk

    View Slide