given/when/then-ready sprint planning with example mapping (agilia budapest 2016)
TRANSCRIPT
Given/When/Then-ready sprint planningwith Example Mapping
Agilia Budapest 201612/10/2016
Gáspár Nagycoach • trainer • bdd addict • creator of specflow
@gasparnagy • [email protected]
Copyright © Gaspar Nagy
[HttpPost]public ActionResult Answer(int answer){
TriviaEntities db = new TriviaEntities();var question = db.FindQuestion(CurrentQuestion);
if (question.Type == QuestionType.Easy){
db.AddScore(question, user, 10);}else{
db.AddScore(question, user, 50);}
var model = new GameModel{ Score = db.GetScore(question, user) };
return View(model);}
implement
feedback
Classic model
Copyright © Gaspar Nagy
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score should be 10
CollaborationAutomation with
Cucumber/SpecFlow
BDD Process
Copyright © Gaspar Nagy
The Feature File
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score should be 10
Who writes
the scenarios?How do you
set the title of
the scenario?
Can I have
multiple when/then
steps?
Copyright © Gaspar Nagy
Let’s write a Gherkin from the result
Scenario: ...
Given ...
When ...
Then ...
Copyright © Gaspar Nagy
De-briefing
• PO was unprepared
• We discussed the topics in a foreign language
• The domain was known, but not very exact
• Quality of notes?
• How easy it to write the first scenario?
• Quality of scenario?
Copyright © Gaspar Nagy
Review
• What was different from the first time?
• Did we cover more or less functionality than the last time?
• What do you think the different coloured cards / stickies are supposed to represent?
• How did capturing each of those help to keep the discussions on track?
• Do you think the story is ready to implement now? Why?
Copyright © Gaspar Nagy
Should be able to add a pizza to the basket
Scenario: Should be able to add a pizza to the basket
Given the following pizza menu
| name | ingredients |
| Aslak Hellesøy | Cucumber, Gherkin, Pickles |
| Uncle Bob | Chicken, Low cal cheese |
| Chris Matts | Garlic, Wasabi, Tomato |
And the shopping basket is empty
When I choose a “Chris Matts” pizza
Then my basket contains 1 “Chris Matts” pizza
Copyright © Gaspar Nagy
Should be able to add extras to the chosen pizza
Scenario: Should be able to add extras to the chosen pizza
Given the following pizzas in the basket
| pizza | extras |
| Aslak Hellesøy | - |
| Chris Matts | - |
And the “Aslak Hellesøy” pizza is selected from the basket
When I add extra cheese
And I add extra cucumber
Then the basket should contain
| pizza | extras |
| Aslak Hellesøy | +cheese +cucumber |
| Chris Matts | - |
Copyright © Gaspar Nagy
Collaborate on requirements!
Well guided planning meeting can improve the “BDD-efficiency” quite much
Copyright © Gaspar Nagy
Example Mapping
http://bit.ly/examplemapping (Matt Wynne)
Copyright © Gaspar Nagy
#0 – Choose a facilitator
• Someone needs to facilitate the discussion – not the PO
• The facilitation can be rotated so that everyone gets practice
• The facilitator can guide the discussion with• Asking questions
• Moderating (stopping?) discussions
• Everyone can ask of course…
Copyright © Gaspar Nagy
#1 – Pick a guide line
• Choose a theme that you can use to order the questions
• The “sequence of actions” is usually good• ie. “What you do first?”
• If you use story mapping for planning the stories, this comes quite naturally
Copyright © Gaspar Nagy
#2 – Keep collecting rules (acceptance criteria) and examples
• Once you hear an important rule/behavior/check, note it down as a rule and an illustrating example
• Don’t forget that an example is not necessarily text, but formulas, wireframes or anything that describes the required behavior
• Examples can help • understanding the topic
• discover misunderstandings
• keep the requirements real
Copyright © Gaspar Nagy
#3 – Make notes visible to everyone
• Write them on index cards or stickies
• Using (and sharing on projector) a notepad, OneNote or SpecLog is also very good
• Pro: stored already in a searchable form, usually better visible (zoom), easy to go back to earlier notes
• Con: harder to get a full overview
• Stop the discussion while the rule/example is captured
• The team should have an agreement on the captured result
• Was this really what we were discussing about?
Copyright © Gaspar Nagy
#4 – Collect questions
• If something cannot be answered or needs further research/investigation – capture it as a questions
• Captured questions can help • to avoid re-discussing the same topic again and again
• to have a clear list of topics we need to investigate
Copyright © Gaspar Nagy
#5 – Split the story if necessary
• The map can help you to feel if the topics we have discussed are too much
Copyright © Gaspar Nagy
+1 – Formulate the scenarios in Gherkin
• Not necessarily in the planning meeting
• Just before you start implementing the story works usually
• Don’t do it alone
• Try to find broader agreement especially for the first scenarios in a certain topic
• At this point, you are not discussing the behavior, but finalizing the ubiquitous language
• Discover more: Three Amigos
Copyright © Gaspar Nagy
One page summary
#0 – Choose a facilitator
#1 – Pick a guide line
#2 – Keep collecting rules (acceptance criteria) and examples
#3 – Make notes visible to everyone
#4 – Collect questions
#5 – Split story if necessary
http://bit.ly/examplemapping(Matt Wynne)
Copyright © Gaspar Nagy
What about my answers?
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score should be 10
Who writes
the scenarios?How do you
set the title of
the scenario?
Can I have
multiple when/then
steps?
Copyright © Gaspar Nagy
The answers
• Who writes the scenarios?• It does not matter, because we are all on the same page
regarding the behavior. But it makes sense if a developer is typing it in with a tester or PO sitting next to him/her.
• How do you set the title of the scenario?• You never set it, you start from the acceptance criterion that
will be the title.
• Can I have multiple when/then steps?• The scenario is the formalization of an AC – a simple check.
For that you usually need only one when step and only one or two then steps.
Gáspár Nagycoach • trainer • bdd addict • creator of specflow
@gasparnagy • [email protected]
Thank you!