given/when/then-ready sprint planning (expo:qa'16)
TRANSCRIPT
![Page 1: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/1.jpg)
Given/When/Then-ready
sprint planning
Gáspár Nagy
coach • trainer • bdd addict • creator of specflow
@gasparnagy • [email protected]
![Page 2: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/2.jpg)
![Page 3: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/3.jpg)
What is BDD?
![Page 4: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/4.jpg)
behavior driven development
desarrollo impulsado por el
comportamiento
development driven by behavior
![Page 5: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/5.jpg)
[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
![Page 6: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/6.jpg)
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”
![Page 7: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/7.jpg)
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”
![Page 8: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/8.jpg)
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?
![Page 9: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/9.jpg)
If you have these questions you are probably on
the wrong track…
![Page 10: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/10.jpg)
THE SPRINT PLANNING
![Page 11: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/11.jpg)
Demo: Planning the Pizza
Selection Story
![Page 12: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/12.jpg)
Explain the story as a PO!
![Page 13: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/13.jpg)
Let’s write a Gherkin from the result
Scenario: ...
Given ...
When ...
Then ...
![Page 14: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/14.jpg)
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?
![Page 15: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/15.jpg)
An efficient meeting…
![Page 16: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/16.jpg)
Demo: Planning the Pizza
Selection Story
![Page 17: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/17.jpg)
Participate in the facilitated
discussion as PO!
![Page 18: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/18.jpg)
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?
![Page 19: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/19.jpg)
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
![Page 20: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/20.jpg)
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 | - |
![Page 21: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/21.jpg)
HOW IT'S MADE
![Page 22: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/22.jpg)
Collaborate on requirements!
Well guided planning meeting can improve
the “BDD-efficiency” quite much
![Page 24: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/24.jpg)
#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…
![Page 25: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/25.jpg)
#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
![Page 26: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/26.jpg)
#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
![Page 27: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/27.jpg)
#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?
![Page 28: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/28.jpg)
#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
![Page 29: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/29.jpg)
#5 – Split the story if necessary
• The map can help you to feel if the topics
we have discussed are too much
![Page 30: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/30.jpg)
+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
![Page 31: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/31.jpg)
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)
![Page 32: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/32.jpg)
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?
![Page 33: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/33.jpg)
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.
![Page 34: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/34.jpg)
Try it at home!
![Page 35: Given/When/Then-ready sprint planning (expo:QA'16)](https://reader030.vdocuments.net/reader030/viewer/2022021507/58ef68d61a28ab2c7a8b4607/html5/thumbnails/35.jpg)
Thank you!
Gáspár Nagy@gasparnagy
http://specsolutions.eu
More information on BDD at
http://bddaddict.com