© Software Quality Lab www.software-quality-lab.com
Wie man den Kunden an Board holt
Markus Unterauer
Berater und Trainer
Specification by Example
- 1 -
© Software Quality Lab www.software-quality-lab.com
Es ist verdammt schwer herauszufinden,
was ein System können soll …
- 2 -
© Software Quality Lab www.software-quality-lab.com
Stille Post
- 3 -
[http://www.connexin.net/de/humor-witze/projekt-management/]
© Software Quality Lab www.software-quality-lab.com
Varianten
- 4 -
https://www.flickr.com/photos/neilmoralee/9863133426
https://www.flickr.com/photos/initial-reaction/5451653692
© Software Quality Lab www.software-quality-lab.com
Selbst wenn ICH es verstehe,
ist es richtig schwer dieses Verständnis weiterzugeben
…
- 5 -
© Software Quality Lab www.software-quality-lab.com
Auspack und freu
- 6 -
Herzlichst Gluckwuensch zu gemutlicher Weihnachtskerze Kauf
Mit sensazionell Modell GWK 9091 Sie bekomen nicht teutonische Gemutlichkeit fuer trautes
Heim nur, auch Erfolg als moderner Mensch bei anderes Geschleckt nach Weihnachtsganz
aufgegessen und laenger, weil Batterie viel Zeit gut lange.
Zu erreischen Gluckseligkeit unter finstrem Tann, ganz einfach Handbedienung von GWK 9091:
1. Auspack und freu.
2. Slippel A kaum abbiegen und verklappen in Gegenstippel B fuer
Illumination von GWK 9091.
3. Mit Klamer C in Sacco oder Jacke von Lebenspartner einfraesen und
laecheln fuer Erfolg mit GWK 9091.
4. Fuer eigens Weihnachtsfeierung GWK 9091 setzen auf Tisch.
5. Fuer kaput oder Batterie mehr zu Gemutlichkeit beschweren an:
wir, Bismarckstrasse 4.
Fuer neue Batterie alt Batterie zurueck fuer Sauberwelt in deutscher Wald. Viel Spass mit GWR
9091.
© Software Quality Lab www.software-quality-lab.com
Zeichne und freu
Bankkarte
gültig
PIN
Eingabe
korrekt
3. PIN
Eingabe
falsch
Geld
verfügbar
Karte
zurück-
weisen
PIN
erneut
anfordern
Karte
einbehalten
Geld
auszahlen
Geldbetrag
erneut
anfordern




- 7 -
© Software Quality Lab www.software-quality-lab.com
Das führt zu …
- 8 -
© Software Quality Lab www.software-quality-lab.com
Systeme nicht bedarfsgerecht
- 9 -
© Software Quality Lab www.software-quality-lab.com
Bananensoftware
- 10 -
© Software Quality Lab www.software-quality-lab.com
Specification by Example
- 11 -
© Software Quality Lab www.software-quality-lab.com
Grundprinzipien Specification by Example
Folie 12
Scope von Ziele
ableiten
Kollaboration
Konkrete
Beispiele
Lebende
Dokumentation
Wiederkehrende
Validierung
© Software Quality Lab www.software-quality-lab.com
Methoden zur Umsetzung der Prinzipien
Folie 13
Scope von Ziele
ableiten
Kollaboration
Konkrete
Beispiele
Lebende
Dokumentation
Wiederkehrende
Validierung
Story Telling User Stories mit
Akzeptanzkriterien
Automatisierte Tests
© Software Quality Lab www.software-quality-lab.com
Alles beginnt mit Geschichten …
- 14 -
© Software Quality Lab www.software-quality-lab.com
Smart Home
- 15 -
[https://www.flickr.com/photos/macblack/17577308444/]
https://www.loxone.com/dede/produkte/ueberblick/
© Software Quality Lab www.software-quality-lab.com
Die Geschichten in eine strukturierte Form
bringen …
- 16 -
© Software Quality Lab www.software-quality-lab.com
Eine „Morning“ User Story
- 17 -
Als arbeitender Papa
möchte ich rechtzeitig geweckt werden,
damit ich pünktlich in der Arbeit bin.
© Software Quality Lab www.software-quality-lab.com
User Story Rückseite
- 18 -
Gegeben ich brauche 30 Minuten zur Arbeit
Und ich habe um 9 Uhr das Daily Scrum Meeting
Und es gibt keine Verkehrsbehinderungen
Wenn ich „gemütlich Frühstücken“ aktiviert habe
Dann läutet der Wecker um 6:30
Und ich habe 2 Stunden Zeit zum Frühstücken.
Szenario
„normaler
Arbeitstag“
© Software Quality Lab www.software-quality-lab.com
Varianten
- 19 -
Wie kann ein Morgen
noch aussehen?
© Software Quality Lab www.software-quality-lab.com
User Story Rückseite
- 20 -
Gegeben ich brauche 30 Minuten zur Arbeit
Und ich habe um 9 Uhr das Daily Scrum Meeting
Und es gibt keine Verkehrsbehinderungen
Wenn ich „lange schlafen“ aktiviere
Dann ist die eingestellte Weckzeit 8:15
Und ich habe 15 Minuten Zeit zum Frühstücken.
Szenario
„Vorabend
Party“
© Software Quality Lab www.software-quality-lab.com
User Story Rückseite
- 21 -
Gegeben ich brauche normalerweise 30 Minuten zur Arbeit
Und ich habe um 9 Uhr das Daily Scrum Meeting
Und es gibt 20 Minuten Verzögerung
Wenn ich „gemütlich Frühstücken“ aktiviere
Dann ist die eingestellte Weckzeit 6:10
Und ich habe 2 Stunden Zeit zum Frühstücken.
Szenario
„Stau“
© Software Quality Lab www.software-quality-lab.com
Verhalten spezifizieren
Folie 22
Gegeben Dann
Wenn
Ausgangszustand ErgebnisAktion
© Software Quality Lab www.software-quality-lab.com
Werkzeuge
Folie 23
© Software Quality Lab www.software-quality-lab.com
Behavior Driven Development (BDD)
- 24 -
Feature: User authentication
In order to protect access to the HMI
As a system administrator
I want that all users need to be authorized
Scenario: Autologin after 60 seconds
Given HMI started with default configuration
When user waits for 60 seconds at the login screen
Then Default user should be logged in automatically
Lebende Spezifikation, die
gleichzeitig zur Verifikation
verwendet wird
Test in „Gherkin“
geschrieben
© Software Quality Lab www.software-quality-lab.com
Hinter den Kulissen
- 25 -
[Given("HMI started with default configuration")]
public void GivenTheStartedHMIWithMachineConfiguration()
{
TestBase.loginForm = TestBase.app.Start();
}
[Then("(.*) user should be logged in automatically")]
public void ThenLoggedInUser(string user)
{
Assert.That(frameFunctions.UserGroup, Is.EqualTo(user));
}
Test step
implementation
Input value
pattern matcher
© Software Quality Lab www.software-quality-lab.com
Data Driven Test Specification
- 26 -
Szenariogrundriss: Plausbilitätsprüfung im Handbetrieb
Angenommen die Werte '<Werkstoff>', <Blechdicke>,
<Biegewinkel> im Handbetrieb
Wenn der Bediener die Vorberechnung startet
Dann ist 'UpperDeadPoint' <= 'MutePoint1'
Und 'ClampingPoint' <= 'LowerDeadPoint'
Und 'DecompressionPoint' <= 'LowerDeadPoint'
Und 'ClampingPoint' - 'MutePoint1' = 'MuteDistance1'
Beispiele:
| Werkstoff | Blechdicke | Biegewinkel |
| 1.0038 | 0,1 | 90,0 |
| 1.0038 | 1,0 | 90,0 |
| 1.0038 | 3,0 | 90,0 |
© Software Quality Lab www.software-quality-lab.com
Automatisieren
- 27 -
1
2
3
4
5
6
Specify
Implement test steps
Run tests
Implement
Continuous feedback from tests
Done!
© Software Quality Lab www.software-quality-lab.com
Featurebericht
- 28 -
© Software Quality Lab www.software-quality-lab.com
Learnings
- 29 -
© Software Quality Lab www.software-quality-lab.com
Features werden nicht gelesen
Folie 30
https://www.flickr.com/photos/11596438@N00/1491716378/in/photostream/
© Software Quality Lab www.software-quality-lab.com
Nutzen
- 31 -
▪ Frühzeitig Sonderfälle beachtet
▪ Weniger Fehler im Produkt
▪ Feedback zu große User Stories
Szenarien > 10
▪ Klarere User Stories
▪ Gemeinsames Verständnis
Product Owner, Entwickler, Tester
▪ Zuerst Funktion (WAS)
dann Lösung (WIE)
[https://www.flickr.com/photos/evablue/6184132023/]
© Software Quality Lab www.software-quality-lab.com
Do‘s and Don‘t‘s
▪ Halte die Szenarien kurz
▪ Teile ein komplexes Szenario in mehrere einfache auf
▪ Beschriebe Szenarien aus Sicht des Anwenders
▪ Halte Szenarien auf der gleichen Abstraktionsebene
▪ Verwende Keine technischen Begriffe (u.a. UI, REST)
▪ Verwende Begriffe aus der Fachdomäne
▪ Verwende konkrete Zahlen, Daten, Fakten
(also statt „Wert eingeben“  „5.212,65 eingeben“)
- 32 -
© Software Quality Lab www.software-quality-lab.com
Herausforderung - Werkzeugintegration
- 33 -
Requirements Engineering Tools Behavior Driven Development Tools
RE-
23RE-
23RE-
23
© Software Quality Lab www.software-quality-lab.com
Abschlussfolie
- 34 -
Gegeben die Abschlussfolie wird angezeigt
Wenn ein Teilnehmer eine Frage hat
Dann wird diese gerne von uns beantwortet.
© Software Quality Lab www.software-quality-lab.com
Best Books
- 35 -
Gojko Adzic
2011, Manning Verlag
ISBN-10: 1617290084
ISBN-13: 978-1617290084
Johannes Bergsmann, Markus Unterauer
2014, dpunkt.verlag GmbH
ISBN-10: 3864901499
ISBN-13: 978-3864901492
Markus Unterauer
2014, dpunkt.verlag GmbH
ISBN-10: 3864902312
ISBN-13: 978-3864902314
© Software Quality Lab www.software-quality-lab.com - 36 -
Markus Unterauer
Berater und Trainer, Head of Consulting
[m] markus.unterauer@software-quality-lab.com
Über die Vortragenden
© Software Quality Lab www.software-quality-lab.com
Academy | Consulting | Operational Services | Tool Expertise
INNOVATION MEETS QUALITY
Software Quality Lab
- 37 -

Specification by example

  • 1.
    © Software QualityLab www.software-quality-lab.com Wie man den Kunden an Board holt Markus Unterauer Berater und Trainer Specification by Example - 1 -
  • 2.
    © Software QualityLab www.software-quality-lab.com Es ist verdammt schwer herauszufinden, was ein System können soll … - 2 -
  • 3.
    © Software QualityLab www.software-quality-lab.com Stille Post - 3 - [http://www.connexin.net/de/humor-witze/projekt-management/]
  • 4.
    © Software QualityLab www.software-quality-lab.com Varianten - 4 - https://www.flickr.com/photos/neilmoralee/9863133426 https://www.flickr.com/photos/initial-reaction/5451653692
  • 5.
    © Software QualityLab www.software-quality-lab.com Selbst wenn ICH es verstehe, ist es richtig schwer dieses Verständnis weiterzugeben … - 5 -
  • 6.
    © Software QualityLab www.software-quality-lab.com Auspack und freu - 6 - Herzlichst Gluckwuensch zu gemutlicher Weihnachtskerze Kauf Mit sensazionell Modell GWK 9091 Sie bekomen nicht teutonische Gemutlichkeit fuer trautes Heim nur, auch Erfolg als moderner Mensch bei anderes Geschleckt nach Weihnachtsganz aufgegessen und laenger, weil Batterie viel Zeit gut lange. Zu erreischen Gluckseligkeit unter finstrem Tann, ganz einfach Handbedienung von GWK 9091: 1. Auspack und freu. 2. Slippel A kaum abbiegen und verklappen in Gegenstippel B fuer Illumination von GWK 9091. 3. Mit Klamer C in Sacco oder Jacke von Lebenspartner einfraesen und laecheln fuer Erfolg mit GWK 9091. 4. Fuer eigens Weihnachtsfeierung GWK 9091 setzen auf Tisch. 5. Fuer kaput oder Batterie mehr zu Gemutlichkeit beschweren an: wir, Bismarckstrasse 4. Fuer neue Batterie alt Batterie zurueck fuer Sauberwelt in deutscher Wald. Viel Spass mit GWR 9091.
  • 7.
    © Software QualityLab www.software-quality-lab.com Zeichne und freu Bankkarte gültig PIN Eingabe korrekt 3. PIN Eingabe falsch Geld verfügbar Karte zurück- weisen PIN erneut anfordern Karte einbehalten Geld auszahlen Geldbetrag erneut anfordern     - 7 -
  • 8.
    © Software QualityLab www.software-quality-lab.com Das führt zu … - 8 -
  • 9.
    © Software QualityLab www.software-quality-lab.com Systeme nicht bedarfsgerecht - 9 -
  • 10.
    © Software QualityLab www.software-quality-lab.com Bananensoftware - 10 -
  • 11.
    © Software QualityLab www.software-quality-lab.com Specification by Example - 11 -
  • 12.
    © Software QualityLab www.software-quality-lab.com Grundprinzipien Specification by Example Folie 12 Scope von Ziele ableiten Kollaboration Konkrete Beispiele Lebende Dokumentation Wiederkehrende Validierung
  • 13.
    © Software QualityLab www.software-quality-lab.com Methoden zur Umsetzung der Prinzipien Folie 13 Scope von Ziele ableiten Kollaboration Konkrete Beispiele Lebende Dokumentation Wiederkehrende Validierung Story Telling User Stories mit Akzeptanzkriterien Automatisierte Tests
  • 14.
    © Software QualityLab www.software-quality-lab.com Alles beginnt mit Geschichten … - 14 -
  • 15.
    © Software QualityLab www.software-quality-lab.com Smart Home - 15 - [https://www.flickr.com/photos/macblack/17577308444/] https://www.loxone.com/dede/produkte/ueberblick/
  • 16.
    © Software QualityLab www.software-quality-lab.com Die Geschichten in eine strukturierte Form bringen … - 16 -
  • 17.
    © Software QualityLab www.software-quality-lab.com Eine „Morning“ User Story - 17 - Als arbeitender Papa möchte ich rechtzeitig geweckt werden, damit ich pünktlich in der Arbeit bin.
  • 18.
    © Software QualityLab www.software-quality-lab.com User Story Rückseite - 18 - Gegeben ich brauche 30 Minuten zur Arbeit Und ich habe um 9 Uhr das Daily Scrum Meeting Und es gibt keine Verkehrsbehinderungen Wenn ich „gemütlich Frühstücken“ aktiviert habe Dann läutet der Wecker um 6:30 Und ich habe 2 Stunden Zeit zum Frühstücken. Szenario „normaler Arbeitstag“
  • 19.
    © Software QualityLab www.software-quality-lab.com Varianten - 19 - Wie kann ein Morgen noch aussehen?
  • 20.
    © Software QualityLab www.software-quality-lab.com User Story Rückseite - 20 - Gegeben ich brauche 30 Minuten zur Arbeit Und ich habe um 9 Uhr das Daily Scrum Meeting Und es gibt keine Verkehrsbehinderungen Wenn ich „lange schlafen“ aktiviere Dann ist die eingestellte Weckzeit 8:15 Und ich habe 15 Minuten Zeit zum Frühstücken. Szenario „Vorabend Party“
  • 21.
    © Software QualityLab www.software-quality-lab.com User Story Rückseite - 21 - Gegeben ich brauche normalerweise 30 Minuten zur Arbeit Und ich habe um 9 Uhr das Daily Scrum Meeting Und es gibt 20 Minuten Verzögerung Wenn ich „gemütlich Frühstücken“ aktiviere Dann ist die eingestellte Weckzeit 6:10 Und ich habe 2 Stunden Zeit zum Frühstücken. Szenario „Stau“
  • 22.
    © Software QualityLab www.software-quality-lab.com Verhalten spezifizieren Folie 22 Gegeben Dann Wenn Ausgangszustand ErgebnisAktion
  • 23.
    © Software QualityLab www.software-quality-lab.com Werkzeuge Folie 23
  • 24.
    © Software QualityLab www.software-quality-lab.com Behavior Driven Development (BDD) - 24 - Feature: User authentication In order to protect access to the HMI As a system administrator I want that all users need to be authorized Scenario: Autologin after 60 seconds Given HMI started with default configuration When user waits for 60 seconds at the login screen Then Default user should be logged in automatically Lebende Spezifikation, die gleichzeitig zur Verifikation verwendet wird Test in „Gherkin“ geschrieben
  • 25.
    © Software QualityLab www.software-quality-lab.com Hinter den Kulissen - 25 - [Given("HMI started with default configuration")] public void GivenTheStartedHMIWithMachineConfiguration() { TestBase.loginForm = TestBase.app.Start(); } [Then("(.*) user should be logged in automatically")] public void ThenLoggedInUser(string user) { Assert.That(frameFunctions.UserGroup, Is.EqualTo(user)); } Test step implementation Input value pattern matcher
  • 26.
    © Software QualityLab www.software-quality-lab.com Data Driven Test Specification - 26 - Szenariogrundriss: Plausbilitätsprüfung im Handbetrieb Angenommen die Werte '<Werkstoff>', <Blechdicke>, <Biegewinkel> im Handbetrieb Wenn der Bediener die Vorberechnung startet Dann ist 'UpperDeadPoint' <= 'MutePoint1' Und 'ClampingPoint' <= 'LowerDeadPoint' Und 'DecompressionPoint' <= 'LowerDeadPoint' Und 'ClampingPoint' - 'MutePoint1' = 'MuteDistance1' Beispiele: | Werkstoff | Blechdicke | Biegewinkel | | 1.0038 | 0,1 | 90,0 | | 1.0038 | 1,0 | 90,0 | | 1.0038 | 3,0 | 90,0 |
  • 27.
    © Software QualityLab www.software-quality-lab.com Automatisieren - 27 - 1 2 3 4 5 6 Specify Implement test steps Run tests Implement Continuous feedback from tests Done!
  • 28.
    © Software QualityLab www.software-quality-lab.com Featurebericht - 28 -
  • 29.
    © Software QualityLab www.software-quality-lab.com Learnings - 29 -
  • 30.
    © Software QualityLab www.software-quality-lab.com Features werden nicht gelesen Folie 30 https://www.flickr.com/photos/11596438@N00/1491716378/in/photostream/
  • 31.
    © Software QualityLab www.software-quality-lab.com Nutzen - 31 - ▪ Frühzeitig Sonderfälle beachtet ▪ Weniger Fehler im Produkt ▪ Feedback zu große User Stories Szenarien > 10 ▪ Klarere User Stories ▪ Gemeinsames Verständnis Product Owner, Entwickler, Tester ▪ Zuerst Funktion (WAS) dann Lösung (WIE) [https://www.flickr.com/photos/evablue/6184132023/]
  • 32.
    © Software QualityLab www.software-quality-lab.com Do‘s and Don‘t‘s ▪ Halte die Szenarien kurz ▪ Teile ein komplexes Szenario in mehrere einfache auf ▪ Beschriebe Szenarien aus Sicht des Anwenders ▪ Halte Szenarien auf der gleichen Abstraktionsebene ▪ Verwende Keine technischen Begriffe (u.a. UI, REST) ▪ Verwende Begriffe aus der Fachdomäne ▪ Verwende konkrete Zahlen, Daten, Fakten (also statt „Wert eingeben“  „5.212,65 eingeben“) - 32 -
  • 33.
    © Software QualityLab www.software-quality-lab.com Herausforderung - Werkzeugintegration - 33 - Requirements Engineering Tools Behavior Driven Development Tools RE- 23RE- 23RE- 23
  • 34.
    © Software QualityLab www.software-quality-lab.com Abschlussfolie - 34 - Gegeben die Abschlussfolie wird angezeigt Wenn ein Teilnehmer eine Frage hat Dann wird diese gerne von uns beantwortet.
  • 35.
    © Software QualityLab www.software-quality-lab.com Best Books - 35 - Gojko Adzic 2011, Manning Verlag ISBN-10: 1617290084 ISBN-13: 978-1617290084 Johannes Bergsmann, Markus Unterauer 2014, dpunkt.verlag GmbH ISBN-10: 3864901499 ISBN-13: 978-3864901492 Markus Unterauer 2014, dpunkt.verlag GmbH ISBN-10: 3864902312 ISBN-13: 978-3864902314
  • 36.
    © Software QualityLab www.software-quality-lab.com - 36 - Markus Unterauer Berater und Trainer, Head of Consulting [m] markus.unterauer@software-quality-lab.com Über die Vortragenden
  • 37.
    © Software QualityLab www.software-quality-lab.com Academy | Consulting | Operational Services | Tool Expertise INNOVATION MEETS QUALITY Software Quality Lab - 37 -