abstract:
If you have ever done or tried to do behavior driven development, you know that finding the right scenarios (ie. tests) and writing the Gherkin feature files with the Given/When/Then steps is not so easy. Many teams leave this task entirely for the developers. Others try to use the sprint planning meeting to discuss the exact phrasing. None of these are really perfect. Regarding my experience, for having good scenarios, you have to have a good sprint planning. In this session I am going to talk about what makes a sprint planning good and how you can facilitate your sprint planning meeting in a way that it helps finding the right examples. You will hear about Specification by Examples, the "Three Amigos", example mapping, really good acceptance criteria and also about team motivation, but more importantly you will hear about how to use them efficiently in practice.
5. [HttpPost]
public ActionResult Add(int bookId)
{
BookShopEntities db = new BookShopEntities();
var shoppingCart = GetShoppingCart();
var existingLine = shoppingCart.Lines.SingleOrDefault(l =>
l.Book.Id == bookId);
if (existingLine != null)
{
existingLine.Quantity++;
}
else
{
var book = db.Books.First(b => b.Id == bookId);
OrderLine newOrderLine = new OrderLine();
newOrderLine.Book = book;
newOrderLine.Quantity = 1;
shoppingCart.AddLineItem(newOrderLine);
}
ViewData.Model = shoppingCart;
return RedirectToAction("Index");
}
An Oversimplified BDD Process
implement
feedback
6. An Oversimplified BDD Process
Scenario: Books can be added to the shopping basket
Given the following books
| Author | Title |
| Martin Fowler | Analysis Patterns |
| Gojko Adzic | Bridging the Communication Gap |
And my shopping basket is empty
When I add the book “Analysis Patterns” to my shopping basket
Then my shopping basket should contain 1 copy of “Analysis Patterns”
7. The Feature File
Scenario: Books can be added to the shopping basket
Given the following books
| Author | Title |
| Martin Fowler | Analysis Patterns |
| Gojko Adzic | Bridging the Communication Gap |
And my shopping basket is empty
When I add the book “Analysis Patterns” to my shopping basket
Then my shopping basket should contain 1 copy of “Analysis Patterns”
8. The Feature File
Escenario: Los libros se pueden añadir a la cesta de la compra
Dadas los siguientes libros
| Author | Title |
| Martin Fowler | Analysis Patterns |
| Gojko Adzic | Bridging the Communication Gap |
Y mi cesta está vacía
Cuando agrego el libro "Analysis Patterns" a mi cesta
Entonces mi cesta debe contener 1 copia de “Analysis Patterns”
Who writes the
scenarios?
How do you set
the title of the
scenario?
Can I have multiple
when/then steps?
9. If you have these questions you are probably on
the wrong track…
13. Let’s write a Gherkin from the result
Scenario: ...
Given ...
When ...
Then ...
14. 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?
18. 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?
19. 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
20. 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 | - |
24. #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…
25. #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
26. #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
27. #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?
28. #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
29. #5 – Split the story if necessary
• The map can help you to feel if the topics
we have discussed are too much
30. +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
31. 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)
32. What about my answers?
Scenario: Books can be added to the shopping basket
Given the following books
| Author | Title |
| Martin Fowler | Analysis Patterns |
| Gojko Adzic | Bridging the Communication Gap |
And my shopping basket is empty
When I add the book “Analysis Patterns” to my shopping basket
Then my shopping basket should contain 1 copy of “Analysis Patterns”
Who writes the
scenarios? How do you set
the title of the
scenario?
Can I have multiple
when/then steps?
33. 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.