BDD
Upcoming SlideShare
Loading in...5
×
 

BDD

on

  • 1,889 views

 

Statistics

Views

Total Views
1,889
Views on SlideShare
1,851
Embed Views
38

Actions

Likes
1
Downloads
32
Comments
0

5 Embeds 38

http://www.migang.org 12
http://migang.org 10
http://migang.org 10
http://www.davidgiard.com 5
http://davidgiard.com 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Where’s the PINhttp://alistair.cockburn.us/Sampler+of+good+and+bad+use+cases
  • Too many scenarios
  • Gherkin format
  • http://www.mehdi-khalili.com/executable-requirements

BDD BDD Presentation Transcript

  • Executable Requirements
    Godfrey Nolan
    RIIS LLC
    GANG 10 Year Celebration
    10/1/11
  • SPAM
    RIIS LLC - IT Consultants and Developers since ‘98
    Based in Southfield, MI
    Skills
    Requirements, Development, Testing
    iOS/Android, Java/C#, Oracle/SQL Server
    Clients
    Fandango, Federal APD, Comerica, Cengage, Broadsoft, DTE, BondDesk, Proctor Financial, Blue Cross Blue Shield MI, TK, Hanson
    Godfrey Nolan
    godfrey@riis.com
    10 years ago – Unraveling the .Net executable
  • Agenda
  • What Makes a Good Requirement?
    Unique – address one thing only
    Complete – no missing information
    Consistent – doesn’t contradict other requirement
    Traceable back to business need
    Current – not obsolete
    Feasible – can be implemented
    Unambiguous – objective facts not subjective opinions
    Mandatory – not a nice to have
    Verifiable – testable
  • What makes a Bad Requirement?
    Lengthy
    Unfocused
    Ambiguous
    Verified Manually
  • Attempts at Writing Good Requirements
    RIIS History – yours may be different
    Company Wide Templates
    Use Cases or User Stories
    Requirement Reviews
    Traceability Matrix tools
    Requirement Metrics tools
    Visualization/Simulation tools – iRise, Axure, Balsamiq
    Agile Development – TDD, Scrum, Kanban
    ALM, CLM tools
  • Use Case
    Scope: ATM
    Level: User Goal
    1. The card gets inserted.
    2. The card information gets validated.
    3. The transaction information gets collected and validated.
    4. The cash is issued, card returned, cash removed, account debited, screen reset.
  • Use Cases
    1. Customer runs ATM card through the card reader.
    2. ATM reads the bank id and account number.
    3. ATM asks customer whether to proceed in Spanish/English.
    4. Customer selects language.
    5. ATM asks for PIN number and to press Enter.
    6. Customer enters PIN number, presses Enter.
    7. ATM presents list of activities for the Customer to perform.
    8. Customer selects “withdraw cash”.
    9. ATM asks customer to say how much to withdraw, in multiples of $5, and to press Enter.
    10. Customer enters an amount, a multiple of $5, presses Enter.
    11. ATM notifies main banking system of customer account, amount being withdrawn.
    12. Main banking system accepts the withdrawal, tells ATM new balance.
    13. ATM delivers the cash.
    14. ATM asks whether customer would like a receipt.
    15. Customer replies, yes.
    16. ATM issues receipt showing new balance.
    17. ATM logs the transaction.
  • User Story
    1. User checks balance
    2. User logs into the machine
    3. User get "Fast Cash"
    4. User makes a deposit
    5. User withdraws from checking
    6. User withdraws from savings
  • Traceability Matrix
  • Visualization
  • But inevitably…
    Some or all the following happen
    Scope change
    Requirements confusion, opinions not facts
    Developer interprets the requirement
    Business stakeholder doesn’t get what they’re expecting
    Completelymissed some crucial requirement
    Requirements never kept up to date
  • But What if?
    Imagine a world where developers get detailed requirements in a format and mechanism that is readable by the business facing people...
    ...completely devoid of ambiguity in terms of what the correct behavior is...
    ...and can also be used as an automated test within your team's continuous integration processes. (Tim Wingfield)
  • But What If? (TechTalk)
  • But What If?
  • TDD
  • Executable Requirements
  • Executable Requirements
    These were the Droids you were looking for..
    BDD or Behavior Driven Design
    Functional Tests
    Integration Tests
    Acceptance Tests
    ATDD or Acceptance Test Driven Design
    Specification by Example
    Outside In Development
    Executable Requirements
  • Outside In Development
  • Manual Testing Problem (Matt Stine)
  • Testing Pyramid (Lisa Crispin)
  • Continuous Integration
  • Continuous Integration
    Automated Build Process
    Code gets checked in
    Unit tests run
    Executable Requirements tests run
    Code gets deployed only if everything passes
    Requirements are kept up to date!
  • Writing Executable Requirements
    Features file
    Written in DSL called Gherkin
    Feature description
    Scenario Outline
    Given/When/Then
    Examples (optional)
    Sample test data
    Step Definitions
    Setup
    Regular Expressions for each Given/When/Then
    Executable C# test code
    Tear down
  • Writing Executable Requirements
  • Given/When/Then
  • What is SpecFlow
    .Nettool to write Executable Requirement in Gherkin format
    Integrates with Visual Studio 2010
    File->New templates for creating new feature files
    Code generation Glue between Feature and Step Definition files
    Gives VS debugger support
    Set breakpoints on Given/When/Then lines in your .feature files
    Integrates with your existing CI infrastructure
    Also integrates with
    NUnit
    Selenium
    WatiN
  • Good Executable Requirements
    Understandable to developer
    Understandable to business
    Unambiguous
    Automated
    Run frequently
  • Writing Executable Requirements
  • Writing Executable Requirements
    Features file
    Feature description
    Scenario Outline
    Given/When/Then
    Examples
    Sample test data
  • Feature File
  • Writing Executable Requirements
    Step Definitions
    Setup
    Regular Expressions for each Given/When/Then
    Executable C# test code
    Tear down
  • SpecFlow Glue
  • Demo
    SpecFlow demo
  • Sample Features files
    Feature: Account Holder withdraws cash
    In order to have access to my money
    As an Account Holder
    I want to withdraw cash from an ATM
    Scenario: Card has been disabled
    Given card is disabled
    When the account holder requests money
    Then the ATM should retain the card
    And the ATM should say the card has been retained
  • Sample Features files
    Feature: Serve coffee
    In order to earn money
    Customers should be able to
    buy coffee at all times
    Scenario: Buy last coffee
    Given there is 1 coffee left in the machine
    And I have deposited $1
    When I press the coffee button
    Then I should be served a coffee
  • Languages and Tools
    Languages
    C# - Specflow, Cuke4Nuke, StorEvil
    Ruby – Cucumber
    Java – Cuke4Duke
    Also Phython, PHP etc.
    Tools
    Cucumber
    Selenium RC
    Fitnesse
  • Tear Down
    Executable Requirements or Coding the right thing
    Outside In Development
    Works well in Scrum teams
    BA does feature file
    Developer/tester does step definitions
    Works well with VS10
    Evolutionary not Revolutionary
    Might be for you if you’re asking the question?
    What business requirement does code coverage really provide?
  • Resources
    URLs
    http://www.specflow.org
    http://dannorth.net/whats-in-a-story/
    http://www.codeproject.com/KB/architecture/BddWithSpecFlow.aspx
    http://cukes.info
    Books