SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
AMIR BARYLKO



                   AGILE
               REQUIREMENTS


Amir Barylko                   MavenThought Inc.
HIGH QUALITY
               REQUIREMENTS
                       Goal
                    Techniques
                   Complexity
                     Planning
                  Common Issues


Amir Barylko                      MavenThought Inc.
WHAT’S THE GOAL?

  • (good      question)




Amir Barylko                        MavenThought Inc.
TECHNIQUES

  • Verbally

  • Use    Cases

  • Prototyping

  • User       Stories




Amir Barylko                          MavenThought Inc.
COMPLEXITY

  • Task   Breakdown

  • Story      points

  • Planning     poker

  • Throw       a dice?




Amir Barylko                           MavenThought Inc.
PLANNING

  • Gantt      Chart

  • Sprints    for releases

  • Continuos     release

  •A    mix of those




Amir Barylko                           MavenThought Inc.
COMMON PROBLEMS

  • (Your      input here)




Amir Barylko                  MavenThought Inc.
NARROWING THE GAP
                   Acceptance Criteria First
                          Benefits
                           Roles
                    Outside In Approach
                      Runnable features


Amir Barylko                                   MavenThought Inc.
ACCEPTANCE CRITERIA

  • Write the expected criteria before the
    implementation starts
  • Developers     will implement the feature until the
    criteria is satisfied
  • QA         will validate against the same criteria


Amir Barylko                                             MavenThought Inc.
BENEFITS

  • Discover     the feature
  • Testing    all the way
  • Traceability

  • Quality    every step of the process


Amir Barylko                               MavenThought Inc.
ROLES

  • Who        writes the feature?
  • Who        implements the feature?
  • Who        validates the feature?
  • What’s      the role of QA, PM, etc?


Amir Barylko                               MavenThought Inc.
OUTSIDE IN APPROACH




Amir Barylko                    MavenThought Inc.
RUNNABLE FEATURES

  • Features      describe functionality
  • What       if we could run them?
  • Then       features would validate functionality
  • Becoming       live documentation


Amir Barylko                                           MavenThought Inc.
ACCEPTANCE CASES
                   A common language
                        Features
                       Scenarios
                         Styles
                        Benefits


Amir Barylko                           MavenThought Inc.
GHERKIN DSL

  • Business      readable DSL

  • Flush      out requirements

  • Documentation

  • Automated       testing

  • Used  by Cucumber, SpecFlow,
    jBehave

Amir Barylko                          MavenThought Inc.
FEATURES
      Keyword



  Feature: Listing projects
    As a user                                 Free text!
    I Want to see the list of projects
    So I can choose one to see the details

      Scenario: List all projects
         (steps here to implement scenario)

      Scenario: No projects are available
         (steps here to implement scenario)




Amir Barylko                                   MavenThought Inc.
SCENARIOS

  Scenario: List all projects

    Given I'm logged in                          Step 1


    And        I have (some data loaded)         Step 2


    When       I (do some action)                Step 3


    Then       I (should see expected results)   Step 4




Amir Barylko                                 MavenThought Inc.
SCENARIOS

  • Each       feature file can have multiple scenarios
  • Each       scenario can contain multiple steps
  • Keywords:

     • Given       When Then
     • And       Not But
Amir Barylko                                         MavenThought Inc.
Post-It
                  EXCERCISE             &
                                     Sharpie!


  •Write       a story and
  •scenarios      for a user login



Amir Barylko                         MavenThought Inc.
GUIDELINES & GOALS
                      Too Vague
                    Too Imperative
                    Descriptive Style
                      Complexity
                       Planning


Amir Barylko                            MavenThought Inc.
TOO VAGUE

  Scenario: Perfect world
    Given the application is setup
    When I want to use some projects
    Then I should be able to load data
    And   have a great user experience
    but   no bugs should appear




Amir Barylko                             MavenThought Inc.
TOO IMPERATIVE
  Scenario:    Redirect user to originally requested page
    Given a    User "dave" exists with password "secret"
    And   I    am not logged in
    When I     navigate to the home page
    Then I     am redirected to the login form
    When I     fill in "Username" with "dave"
    And   I    fill in "Password" with "secret"
    And   I    press "Login"




Amir Barylko                                     MavenThought Inc.
DESCRIPTIVE STYLE

  Scenario: List all projects

    Given I'm logged in

    And        I have some projects stored

    When       I list the projects

    Then       I should see all of them


Amir Barylko                                 MavenThought Inc.
DISCOVER COMPLEXITY

  • How        many scenarios per feature?

  • The    more scenarios the more complex

  • The    more steps the more complex

  • If   scenarios are unclear, then is time to rethink the feature




Amir Barylko                                                  MavenThought Inc.
DISCOVER FUNCTIONALITY

  • When       is the right time to write scenarios?

     • During    Inception?

     • During    Analysis?

     • During    Development?

     • During    QA?


Amir Barylko                                           MavenThought Inc.
SCENARIO ORDER

  • What       happens with dependencies?

  • How        do I use data if I haven’t implemented that feature?

  • Can    devs work independently in different scenarios?




Amir Barylko                                                   MavenThought Inc.
Post-It
                 VOTING APP                  &
                                          Sharpie!


  •In          teams
  •Choose              top three user stories
  •Write          scenarios
  •Share          with the other teams
Amir Barylko                              MavenThought Inc.
RUNNABLE SCENARIOS
                          Tools
                    Implementation
                        Unit Tests
                    Integration Tests
                    Acceptance Tests


Amir Barylko                            MavenThought Inc.
TOOLS GALORE

  • Lots   of tools available that use Gherkin:

     • Cucumber    / rSpec

     • jBehave

     • Specflow

     • Scalatest

     • etc

Amir Barylko                                      MavenThought Inc.
WHERE SHOULD THEY GO?

  •Acceptance            tests?
  •Integration          tests?
  •Unit        tests?


Amir Barylko                      MavenThought Inc.
ACCEPTANCE TEST

  •Black       box testing
  •Crossing       all layers
  •Should       cover all scenarios
  •External       subsystems may be mocked
Amir Barylko                          MavenThought Inc.
INTEGRATION TEST

  •More         than one class
  •Still       some parts can be mocked
  •Partial       functionality of subsystem


Amir Barylko                             MavenThought Inc.
UNIT TEST

  • Test       for a class or method
  • No         external dependencies
  • Small

  • Clear



Amir Barylko                           MavenThought Inc.
TDD

  • First      write a test that fails (RED)
  • Write       code to make it pass (GREEN)
  • Check        if code can be improved (REFACTOR)
  • Start      again until it’s done


Amir Barylko                                   MavenThought Inc.
WHEN TDD IS NOT ENOUGH

  •Legacy Code
  •Refactoring is not viable
  •Verify functionality across layers
  •Validate feature end to end
Amir Barylko                        MavenThought Inc.
DEMO




Amir Barylko          MavenThought Inc.
SUMMARY
                 Benefits
                Challenges
                What’s next?




Amir Barylko                   MavenThought Inc.
BENEFITS

  • Easier     planning       • Putsthe whole team
                               on the same page
  • Discoversfunctionality
    and complexity            • Simplifies   QA process
  • No  particular skill      • Narrows the gap
    required                   between expectations
                               and actual
  • Easy Adoption              implementation
Amir Barylko                                    MavenThought Inc.
CHALLENGES

  • Different       approach
  • The        roles get blurred
  • Team        effort
  • Others?



Amir Barylko                          MavenThought Inc.
WHAT’S NEXT

  • Take       one concept that you are not implementing

  • You    have until next meeting to put it to work

  • Register      challenges, issues and results

  • Share       that next session




Amir Barylko                                               MavenThought Inc.
QUESTIONS?




Amir Barylko                MavenThought Inc.
RESOURCES

  • Contact    me: amir@barylko.com, @abarylko

  • Download: http://www.orthocoders.com/presentations




Amir Barylko                                        MavenThought Inc.
RESOURCES II

  • jBehave: http://jbehave.org

  • Cucumber: http://cukes.info

  • ScalaTest: http://scalatest.org

  • Selenium: http://seleniumhq.org

  • jDave: http://jdave.org

  • EasyB: http://easyb.org

Amir Barylko                          MavenThought Inc.

Mais conteúdo relacionado

Mais procurados

Mais procurados (10)

2012 regina TC 102 kanban
2012 regina TC 102 kanban2012 regina TC 102 kanban
2012 regina TC 102 kanban
 
PRDC11-tdd-common-mistakes
PRDC11-tdd-common-mistakesPRDC11-tdd-common-mistakes
PRDC11-tdd-common-mistakes
 
Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010Dev Tools State of the Union (Part II) - Atlassian Summit 2010
Dev Tools State of the Union (Part II) - Atlassian Summit 2010
 
Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse & Myly...
Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse & Myly...Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse & Myly...
Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse & Myly...
 
PMI-ACP Lesson 2 : Scrum
PMI-ACP Lesson 2 : ScrumPMI-ACP Lesson 2 : Scrum
PMI-ACP Lesson 2 : Scrum
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
 
why-tdd
why-tddwhy-tdd
why-tdd
 
Photographic Film and Slide Scanning Alternatives
Photographic Film and Slide Scanning AlternativesPhotographic Film and Slide Scanning Alternatives
Photographic Film and Slide Scanning Alternatives
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
 
Arbyte - A modular, flexible, scalable job queing and execution system
Arbyte - A modular, flexible, scalable job queing and execution systemArbyte - A modular, flexible, scalable job queing and execution system
Arbyte - A modular, flexible, scalable job queing and execution system
 

Semelhante a Agile requirements

prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patterns
Amir Barylko
 
prdc10-Bdd-real-world
prdc10-Bdd-real-worldprdc10-Bdd-real-world
prdc10-Bdd-real-world
Amir Barylko
 
Rich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & CoffeescriptRich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & Coffeescript
Amir Barylko
 
Open source libraries and tools
Open source libraries and toolsOpen source libraries and tools
Open source libraries and tools
Amir Barylko
 
Code camp 2012-advanced-design-patterns
Code camp 2012-advanced-design-patternsCode camp 2012-advanced-design-patterns
Code camp 2012-advanced-design-patterns
Amir Barylko
 

Semelhante a Agile requirements (20)

prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patterns
 
Page objects pattern
Page objects patternPage objects pattern
Page objects pattern
 
Page-objects-pattern
Page-objects-patternPage-objects-pattern
Page-objects-pattern
 
YEG-UG-Capybara
YEG-UG-CapybaraYEG-UG-Capybara
YEG-UG-Capybara
 
Agile requirements
Agile requirementsAgile requirements
Agile requirements
 
PRDCW-avent-aggregator
PRDCW-avent-aggregatorPRDCW-avent-aggregator
PRDCW-avent-aggregator
 
Anand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in AgileAnand Bagmar - Behavior Driven Testing (BDT) in Agile
Anand Bagmar - Behavior Driven Testing (BDT) in Agile
 
Kanban intro
Kanban introKanban intro
Kanban intro
 
Effectively Using UI Automation
Effectively Using UI AutomationEffectively Using UI Automation
Effectively Using UI Automation
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
 
sdec11-Advanced-design-patterns
sdec11-Advanced-design-patternssdec11-Advanced-design-patterns
sdec11-Advanced-design-patterns
 
DevTeach12-Capybara
DevTeach12-CapybaraDevTeach12-Capybara
DevTeach12-Capybara
 
prdc10-Bdd-real-world
prdc10-Bdd-real-worldprdc10-Bdd-real-world
prdc10-Bdd-real-world
 
Rich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & CoffeescriptRich UI with Knockout.js & Coffeescript
Rich UI with Knockout.js & Coffeescript
 
PRDC12 advanced design patterns
PRDC12 advanced design patternsPRDC12 advanced design patterns
PRDC12 advanced design patterns
 
Open source libraries and tools
Open source libraries and toolsOpen source libraries and tools
Open source libraries and tools
 
Test Driven Development via Agile Testing
Test Driven Development via Agile TestingTest Driven Development via Agile Testing
Test Driven Development via Agile Testing
 
Codemash-advanced-ioc-castle-windsor
Codemash-advanced-ioc-castle-windsorCodemash-advanced-ioc-castle-windsor
Codemash-advanced-ioc-castle-windsor
 
Code camp 2012-advanced-design-patterns
Code camp 2012-advanced-design-patternsCode camp 2012-advanced-design-patterns
Code camp 2012-advanced-design-patterns
 

Mais de Amir Barylko

Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
Amir Barylko
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
Amir Barylko
 

Mais de Amir Barylko (20)

Functional converter project
Functional converter projectFunctional converter project
Functional converter project
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web development
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
 
No estimates
No estimatesNo estimates
No estimates
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
 
Coderetreat hosting training
Coderetreat hosting trainingCoderetreat hosting training
Coderetreat hosting training
 
There's no charge for (functional) awesomeness
There's no charge for (functional) awesomenessThere's no charge for (functional) awesomeness
There's no charge for (functional) awesomeness
 
What's new in c# 6
What's new in c# 6What's new in c# 6
What's new in c# 6
 
Productive teams
Productive teamsProductive teams
Productive teams
 
Who killed object oriented design?
Who killed object oriented design?Who killed object oriented design?
Who killed object oriented design?
 
From coach to owner - What I learned from the other side
From coach to owner - What I learned from the other sideFrom coach to owner - What I learned from the other side
From coach to owner - What I learned from the other side
 
Communication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivityCommunication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivity
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Refactoring
RefactoringRefactoring
Refactoring
 
Agile teams and responsibilities
Agile teams and responsibilitiesAgile teams and responsibilities
Agile teams and responsibilities
 
Refactoring
RefactoringRefactoring
Refactoring
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
 
Sass & bootstrap
Sass & bootstrapSass & bootstrap
Sass & bootstrap
 
SDEC12 Beautiful javascript with coffeescript
SDEC12 Beautiful javascript with coffeescriptSDEC12 Beautiful javascript with coffeescript
SDEC12 Beautiful javascript with coffeescript
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
 

Agile requirements

  • 1. AMIR BARYLKO AGILE REQUIREMENTS Amir Barylko MavenThought Inc.
  • 2. HIGH QUALITY REQUIREMENTS Goal Techniques Complexity Planning Common Issues Amir Barylko MavenThought Inc.
  • 3. WHAT’S THE GOAL? • (good question) Amir Barylko MavenThought Inc.
  • 4. TECHNIQUES • Verbally • Use Cases • Prototyping • User Stories Amir Barylko MavenThought Inc.
  • 5. COMPLEXITY • Task Breakdown • Story points • Planning poker • Throw a dice? Amir Barylko MavenThought Inc.
  • 6. PLANNING • Gantt Chart • Sprints for releases • Continuos release •A mix of those Amir Barylko MavenThought Inc.
  • 7. COMMON PROBLEMS • (Your input here) Amir Barylko MavenThought Inc.
  • 8. NARROWING THE GAP Acceptance Criteria First Benefits Roles Outside In Approach Runnable features Amir Barylko MavenThought Inc.
  • 9. ACCEPTANCE CRITERIA • Write the expected criteria before the implementation starts • Developers will implement the feature until the criteria is satisfied • QA will validate against the same criteria Amir Barylko MavenThought Inc.
  • 10. BENEFITS • Discover the feature • Testing all the way • Traceability • Quality every step of the process Amir Barylko MavenThought Inc.
  • 11. ROLES • Who writes the feature? • Who implements the feature? • Who validates the feature? • What’s the role of QA, PM, etc? Amir Barylko MavenThought Inc.
  • 12. OUTSIDE IN APPROACH Amir Barylko MavenThought Inc.
  • 13. RUNNABLE FEATURES • Features describe functionality • What if we could run them? • Then features would validate functionality • Becoming live documentation Amir Barylko MavenThought Inc.
  • 14. ACCEPTANCE CASES A common language Features Scenarios Styles Benefits Amir Barylko MavenThought Inc.
  • 15. GHERKIN DSL • Business readable DSL • Flush out requirements • Documentation • Automated testing • Used by Cucumber, SpecFlow, jBehave Amir Barylko MavenThought Inc.
  • 16. FEATURES Keyword Feature: Listing projects As a user Free text! I Want to see the list of projects So I can choose one to see the details Scenario: List all projects (steps here to implement scenario) Scenario: No projects are available (steps here to implement scenario) Amir Barylko MavenThought Inc.
  • 17. SCENARIOS Scenario: List all projects Given I'm logged in Step 1 And I have (some data loaded) Step 2 When I (do some action) Step 3 Then I (should see expected results) Step 4 Amir Barylko MavenThought Inc.
  • 18. SCENARIOS • Each feature file can have multiple scenarios • Each scenario can contain multiple steps • Keywords: • Given When Then • And Not But Amir Barylko MavenThought Inc.
  • 19. Post-It EXCERCISE & Sharpie! •Write a story and •scenarios for a user login Amir Barylko MavenThought Inc.
  • 20. GUIDELINES & GOALS Too Vague Too Imperative Descriptive Style Complexity Planning Amir Barylko MavenThought Inc.
  • 21. TOO VAGUE Scenario: Perfect world Given the application is setup When I want to use some projects Then I should be able to load data And have a great user experience but no bugs should appear Amir Barylko MavenThought Inc.
  • 22. TOO IMPERATIVE Scenario: Redirect user to originally requested page Given a User "dave" exists with password "secret" And I am not logged in When I navigate to the home page Then I am redirected to the login form When I fill in "Username" with "dave" And I fill in "Password" with "secret" And I press "Login" Amir Barylko MavenThought Inc.
  • 23. DESCRIPTIVE STYLE Scenario: List all projects Given I'm logged in And I have some projects stored When I list the projects Then I should see all of them Amir Barylko MavenThought Inc.
  • 24. DISCOVER COMPLEXITY • How many scenarios per feature? • The more scenarios the more complex • The more steps the more complex • If scenarios are unclear, then is time to rethink the feature Amir Barylko MavenThought Inc.
  • 25. DISCOVER FUNCTIONALITY • When is the right time to write scenarios? • During Inception? • During Analysis? • During Development? • During QA? Amir Barylko MavenThought Inc.
  • 26. SCENARIO ORDER • What happens with dependencies? • How do I use data if I haven’t implemented that feature? • Can devs work independently in different scenarios? Amir Barylko MavenThought Inc.
  • 27. Post-It VOTING APP & Sharpie! •In teams •Choose top three user stories •Write scenarios •Share with the other teams Amir Barylko MavenThought Inc.
  • 28. RUNNABLE SCENARIOS Tools Implementation Unit Tests Integration Tests Acceptance Tests Amir Barylko MavenThought Inc.
  • 29. TOOLS GALORE • Lots of tools available that use Gherkin: • Cucumber / rSpec • jBehave • Specflow • Scalatest • etc Amir Barylko MavenThought Inc.
  • 30. WHERE SHOULD THEY GO? •Acceptance tests? •Integration tests? •Unit tests? Amir Barylko MavenThought Inc.
  • 31. ACCEPTANCE TEST •Black box testing •Crossing all layers •Should cover all scenarios •External subsystems may be mocked Amir Barylko MavenThought Inc.
  • 32. INTEGRATION TEST •More than one class •Still some parts can be mocked •Partial functionality of subsystem Amir Barylko MavenThought Inc.
  • 33. UNIT TEST • Test for a class or method • No external dependencies • Small • Clear Amir Barylko MavenThought Inc.
  • 34. TDD • First write a test that fails (RED) • Write code to make it pass (GREEN) • Check if code can be improved (REFACTOR) • Start again until it’s done Amir Barylko MavenThought Inc.
  • 35. WHEN TDD IS NOT ENOUGH •Legacy Code •Refactoring is not viable •Verify functionality across layers •Validate feature end to end Amir Barylko MavenThought Inc.
  • 36. DEMO Amir Barylko MavenThought Inc.
  • 37. SUMMARY Benefits Challenges What’s next? Amir Barylko MavenThought Inc.
  • 38. BENEFITS • Easier planning • Putsthe whole team on the same page • Discoversfunctionality and complexity • Simplifies QA process • No particular skill • Narrows the gap required between expectations and actual • Easy Adoption implementation Amir Barylko MavenThought Inc.
  • 39. CHALLENGES • Different approach • The roles get blurred • Team effort • Others? Amir Barylko MavenThought Inc.
  • 40. WHAT’S NEXT • Take one concept that you are not implementing • You have until next meeting to put it to work • Register challenges, issues and results • Share that next session Amir Barylko MavenThought Inc.
  • 41. QUESTIONS? Amir Barylko MavenThought Inc.
  • 42. RESOURCES • Contact me: amir@barylko.com, @abarylko • Download: http://www.orthocoders.com/presentations Amir Barylko MavenThought Inc.
  • 43. RESOURCES II • jBehave: http://jbehave.org • Cucumber: http://cukes.info • ScalaTest: http://scalatest.org • Selenium: http://seleniumhq.org • jDave: http://jdave.org • EasyB: http://easyb.org Amir Barylko MavenThought Inc.