10. Story Life Cycle - Discovery
4 PO schreibt Story
4 Estimation erzeugt Verständnis im Team
11. Story Life Cycle - Test Design
4 QA + PO schreiben erstes Example (HappyPath)
4 QA schreibt mehr Examples
4 vollständige AcceptanceTests
4 PO kann Acceptance Tests überprüfen/ändern
12. Story Life Cycle - Planning
4 BDD ist Kommunikationswerkzeug!
4 im Planning werden die Examples benutzt um
Anforderungen zu veranschaulichen
4 Probleme und EdgeCases können erkannt werden
13. Story Life Cycle - Implementation
4 Acceptance Tests werden zu erst automatisiert
4 BDD + TDD Cycles
4 alle Tests grün -> Story DONE!
17. Cucumber: Features
Feature: Instant Printing of Orders
As a *Barkeeper*
I want to get an instant printout when a *Waiter* receives an *Order*
so that I can prepare the ordered beverages faster
Scenario: Orders from Mobile-Waiter-Device are transfered to POS
GIVEN a system with a Mobile-Waiter-Device M and a POS-Device P
AND a Printer is connected to the POS-Device P
WHEN the Waiter uses M to log in a Order for Table 2:
| Bier, groß | 1 |
| Wasser, klein | 2 |
THEN P should receive the Order within 1 second
AND the Printer is printing a printout with these facts:
| Table: 2 |
| ---------------- |
| Bier, groß: 1 |
| Wasser, klein: 2 |
18. Cucumber: Features II
4 menschenlesbare Specs
4 Step-Definitions erkennen Schritte und machen
diese ausführbar
19. Cucumber: Step Definitions
When(/^the Waiter uses (w+) to log in a Order for Table (d+):$/) do |device_id, table_no, order|
# drive actual device or simulator
# ...
end
Then(/^the Printer is printing a printout with these facts:$/) do |data_table|
@mocked_printer.should_receive(:print_recipe).with(...).once()
end
20. Cucumber: Step Definitions II
4 sind wiederverwendbar
4 gibt es nicht geschenkt
4 QA und Devs müssen im Pair arbeiten
4 Black-, Gray- & White-Box