AMIR BARYLKO AGILE REQUIREMENTSAmir Barylko MavenThought Inc.
HIGH QUALITY REQUIREMENTS Goal Techniques Complexity Planning Common IssuesAmir Barylko MavenThought Inc.
WHAT’S THE GOAL? • (good question)Amir Barylko MavenThought Inc.
TECHNIQUES • Verbally • Use Cases • Prototyping • User StoriesAmir 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 thoseAmir Barylko MavenThought Inc.
COMMON PROBLEMS • (Your input here)Amir Barylko MavenThought Inc.
NARROWING THE GAP Acceptance Criteria First Beneﬁts Roles Outside In Approach Runnable featuresAmir Barylko MavenThought Inc.
ACCEPTANCE CRITERIA • Write the expected criteria before the implementation starts • Developers will implement the feature until the criteria is satisﬁed • QA will validate against the same criteriaAmir Barylko MavenThought Inc.
BENEFITS • Discover the feature • Testing all the way • Traceability • Quality every step of the processAmir 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 APPROACHAmir Barylko MavenThought Inc.
RUNNABLE FEATURES • Features describe functionality • What if we could run them? • Then features would validate functionality • Becoming live documentationAmir Barylko MavenThought Inc.
ACCEPTANCE CASES A common language Features Scenarios Styles BeneﬁtsAmir Barylko MavenThought Inc.
GHERKIN DSL • Business readable DSL • Flush out requirements • Documentation • Automated testing • Used by Cucumber, SpecFlow, jBehaveAmir 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 Im 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 4Amir Barylko MavenThought Inc.
SCENARIOS • Each feature ﬁle can have multiple scenarios • Each scenario can contain multiple steps • Keywords: • Given When Then • And Not ButAmir Barylko MavenThought Inc.
Post-It EXCERCISE & Sharpie! •Write a story and •scenarios for a user loginAmir Barylko MavenThought Inc.
GUIDELINES & GOALS Too Vague Too Imperative Descriptive Style Complexity PlanningAmir 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 appearAmir 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 Im logged in And I have some projects stored When I list the projects Then I should see all of themAmir 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 featureAmir 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 teamsAmir Barylko MavenThought Inc.
RUNNABLE SCENARIOS Tools Implementation Unit Tests Integration Tests Acceptance TestsAmir Barylko MavenThought Inc.
TOOLS GALORE • Lots of tools available that use Gherkin: • Cucumber / rSpec • jBehave • Specﬂow • Scalatest • etcAmir 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 mockedAmir Barylko MavenThought Inc.
INTEGRATION TEST •More than one class •Still some parts can be mocked •Partial functionality of subsystemAmir Barylko MavenThought Inc.
UNIT TEST • Test for a class or method • No external dependencies • Small • ClearAmir 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 doneAmir Barylko MavenThought Inc.
WHEN TDD IS NOT ENOUGH •Legacy Code •Refactoring is not viable •Verify functionality across layers •Validate feature end to endAmir Barylko MavenThought Inc.
SUMMARY Beneﬁts Challenges What’s next?Amir Barylko MavenThought Inc.
BENEFITS • Easier planning • Putsthe whole team on the same page • Discoversfunctionality and complexity • Simpliﬁes QA process • No particular skill • Narrows the gap required between expectations and actual • Easy Adoption implementationAmir 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 sessionAmir Barylko MavenThought Inc.