Movie Library AppDonald likes to watch movies and tell his friends about it. He uses a site that helps him to find movies (old, new, etc), rate them and share with others. He also enjoys the previews and loves to hear when his “favourites” movies are playing in theatres.
Right or Wrong?As a Developer
I want use a NoSQL db to store movies
So I can list them faster
Right or Wrong?As a Developer
I want to use Twitter Bootstrap for the UI
So I can use all the cool buttons and layout
Right or Wrong?As a User
I want my app to be easy to use
So I can get the top ten UIX award
Right or Wrong?As a User
I want to get statistics about movies
So I can decide which users could be willing to buy a movie ticket ahead of time
Right or Wrong?As a User
I want to login to the site
So I can use the site
Right or Wrong?As a User
I want to login to the site but if I forget my password I want a password recovery email or maybe use Google instead
So I can review movies
English MasterEnglishMaster is an application to let users read lessons to learn and improve english. The lessons are provided in an alphabetical index that the user can filter by choosing a letter of the alphabet or searching for a word.
Medical StudiesThe application needs to process XML files contains medical studies that come with patient information and study results.
The studies are uploaded in a Zip file to our FTP server. Each new file needs to be processed and added to the database (unless it has been processed).
It is important to be robust and handle errors to avoid duplication.
Sizing stories
Identify Complexity
Task Breakdown
Throwing a dice
Shaking Two Months
User Story PointsUsing Fibonacci (1, 2, 3, 5, 8, 13 …)
Planning poker
Benefits & Drawbacks
Relative complexity
Tend to average
How often do we estimate?
Can we avoid estimation?
It will take what it takes?
Let’s make each story…
Around the same size
The path to…
NO ESTIMATES!
Acceptance Criteria
When are we done?
Writing ScenariosInput
Output
Step 1
Step 2
…
Step N
Multiple Scenarios
Gherkin DSLBusiness readable DSL Flush out requirements Automated testing Used by Cucumber, SpecFlow, jBehave
FeaturesFeature: Listing movies
As a User
I want to list movies
So I can see the contents of the library
ScenariosScenario: List all movies
Given I'm logged in
And I have (some data loaded)
When I (do some action)
Then I (should see expected results)
Writing reviewsScenario: Write a review for a movie
Given I'm logged in as a Critic
When I write a review for a movie
Then I should see the new review
in the reviews section
for the movie
Example IIScenario: See most recent movies first Given I'm logged in as a User When I order the list by release date
Then I should see the movies with the release date most recent first
Guidelines to write
scenarios
??????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
?????Scenario: Redirect user
Given a User "dave" with pwd "secret"
And I am not logged in
When I navigate to the home page
And I fill in "Username" with "dave"
And I fill in "Password" with "secret"
And I press “Login"
Then I am redirected to the login form
Just rightScenario: 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
Estimating using scenarios
More FunctionalityWhen is the right time to write scenarios? During Inception? During Analysis? During Development? During QA?
Order Matters Not!Can every feature be independent?
Size Matters not!Can every story be of the same size?
Complexity ∝ amountHow many scenarios per feature?
Complexity ∝ amountThe more scenarios we find the more
complex the story is
Complexity ∝ amountIf scenarios are unclear, then is time to
rethink the feature
Complexity ∝ amountScenarios
0
1
2
4
5
6
7
Complexity
Simple Medium Complex WTF?
Complexity ∝ ClarityToo many steps
Complexity ∝ ClarityTakes more than 10 minutes to write
Complexity ∝ ClarityYou read it the next day and have no clue what it means