bdd - die lösung aller probleme?
Post on 15-Apr-2017
607 Views
Preview:
TRANSCRIPT
BehaviorDrivenDevelopment
Die Lösung aller Probleme?
Ina Einemann
Typische Probleme
Anforderungs-management
Umsetzung Test Auslieferung
T
Was ist BDD? Behavior Driven Development
Was ist BDD? Behavior Driven Development
RED
GREEN REFACTOR
1. Einen Test schreiben und
prüfen, ob er fehlschlägt
2. Code ergänzen, damit der
Test erfolgreich durchläuft
3. Den Code verbessern
z.B. Wiederholungen
löschen
Die Basis ist TDD:
Was ist BDD? Behavior Driven Development
T
Was ist BDD? Behavior Driven Development
Story: Taschenrechner
Feature: Zwei Zahlen
Szenario: Zwei Zahlen addieren
Gegeben eine Zahl 50
Und eine Zahl 80
Wenn ich Addieren wähle
Dann ist das Ergebnis 130
Szenario: Zwei Zahlen multiplizieren
Gegeben eine Zahl 5
Und eine Zahl 6
Wenn ich Multiplizieren wähle
Dann ist das Ergebnis 30
Was ist BDD? Behavior Driven Development
GlueCode
T
Glue Code
@Given("eine Zahl $zahl1")
public void givenEineZahl(int value1){
this.value1 = value1;
}
Was ist BDD? Behavior Driven Development
GlueCode
T
Was ist BDD? Behavior Driven Development
GlueCode
T
Was ist BDD? Behavior Driven Development
CarShare
• Bislang nur telefonische
Buchungen
• Buchungswebseite
• Spezielle Features
T
T
Stakeholder: Simone
PO: Sven
Team: Maja
Karl Paul
Christian
T
T
T
T
Gemeinsames Verständis
Das ist
ein
Berg
Das ist
eine
Schlange
Das ist
ein
Baum
Das ist
eine
Höhle
Vision
Business Goals
Capabilities
Features
Stories
Akzeptanzkriterien
Szenarien
Code
Impact Map
Buchungs- webseite
Mehr PKWs vermieten
Marketingteam Mehr Kunden
erreichen Mehrsprachig-
keit
Kunden
Öfters PKWs mieten
Aboservice
Treueprogramm
Freunde überzeugen
Facebook Integration
Business Goal
Warum? Wer? Wie? Was?
Stakeholder Capabilities Feature
Vision
Als Premium-Kunde
möchte ich für bestimmte Tage Fahrzeuge
abonnieren können,
damit ich nicht mehrmals buchen muss.
User Story
Aboservice
T
T
Sachliche
Gründe
Bedenken
Lustlosigkeit Widerspruch
Kritik & Beschwerden
Ignoranz
Aufregung Zustimmung
Ausweichen Anpassung
Schuldzuweisung
Bequemlichkeit Angst Hoffnung
Machtorientierung am Arbeitsplatz
Pessimismus
ANGESTREBTE
VERÄNDERUNG
DEMONSTRIERTES
VERHALTEN
GRUNDHALTUNG
Ein erfolgreicher
Veränderungsprozess
bewegt wesentlich
mehr als nur die
angestrebte
Veränderung auf der
Sachebene
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Form
en d
es
Wid
ers
tan
ds
Aktiv
Passiv
Betonköpfe
Mitläufer
Saboteure
Skeptiker
T
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Form
en d
es
Wid
ers
tan
ds
Aktiv
Passiv
Mitläufer Skeptike
Ich will nicht
testen
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Form
en d
es
Wid
ers
tan
ds
Aktiv
Passiv
Skeptiker In dem Projekt
PlaneShare läuft es viel
besser.
Es läuft
doch!
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Form
en d
es
Wid
ers
tan
ds
Aktiv
Passiv
Betonköpfe
Wir sind doch
zufrieden! T
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Form
en d
es
Wid
ers
tan
ds
Aktiv
Passiv
Saboteure
!!!
Das wollen
wir nicht!
T
T
Als Premium-Kunde
möchte ich für bestimmte Tage Fahrzeuge
abonnieren können,
damit ich nicht mehrmals buchen muss.
User Story
Aboservice
Akzeptanzkriterien • Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewählte Termin ist der Starttermin
• Er kann verschiedene Intervalle für sein Abo auswählen – Täglich
• Er kann zwischen bestimmten Wochentagen oder allen Arbeitstagen auswählen
– Wöchtlich • Rhythmus von jeder, zweiter, dritter…Woche
– Monatlich • Bestimmter Wochentag (letzter Freitag im Monat)
• Bestimmter Tag, wie der 1. eines Monats
• Er kann einen Endtermin für sein Abo bestimmen – Bestimmtes Datum
– Nach einer bestimmten Anzahl an Wochen
• Er kann in seinem Kundenkonto die ausgewählten Abos einsehen, ändern und löschen
• Er kann in seinem Kundenkonto die Kosten anzeigen
• Er kann einen Zahlungsrhythmus für das Abo auswählen – Im Voraus
– Je Termin
– monatlich
Workflow • Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewählte Termin ist der Starttermin
• Er kann verschiedene Intervalle für sein Abo auswählen – Täglich
• Er kann zwischen bestimmten Wochentagen oder allen Arbeitstagen auswählen
– Wöchtlich • Rhythmus von jeder, zweiter, dritter…Woche
– Monatlich • Bestimmter Wochentag (letzter Freitag im Monat)
• Bestimmter Tag, wie der 1. eines Monats
• Er kann einen Endtermin für sein Abo bestimmen – Bestimmtes Datum
– Nach einer bestimmten Anzahl an Wochen
• Er kann in seinem Kundenkonto die ausgewählten Abos einsehen, ändern und löschen
• Er kann in seinem Kundenkonto die Kosten anzeigen
• Er kann einen Zahlungsrhythmus für das Abo auswählen – Im Voraus
– Je Termin
– monatlich
Starttermin auswählen
Kundenkonto einsehen
Zahlungsrhythmus festlegen
Intervalle auswählen
Endtermin auswählen
Operationen • Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewählte Termin ist der Starttermin
• Er kann verschiedene Intervalle für sein Abo auswählen – Täglich
• Er kann zwischen bestimmten Wochentagen oder allen Arbeitstagen auswählen
– Wöchtlich • Rhythmus von jeder, zweiter, dritter…Woche
– Monatlich • Bestimmter Wochentag (letzter Freitag im Monat)
• Bestimmter Tag, wie der 1. eines Monats
• Er kann einen Endtermin für sein Abo bestimmen – Bestimmtes Datum
– Nach einer bestimmten Anzahl an Wochen
• Er kann in seinem Kundenkonto die ausgewählten Abos einsehen, löschen und ändern
• Er kann in seinem Kundenkonto die Kosten anzeigen
• Er kann einen Zahlungsrhythmus für das Abo auswählen – Im Voraus
– Je Termin
– monatlich
Abo anlegen
ändern löschen
Simpel/Komplex • Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewählte Termin ist der Starttermin
• Er kann verschiedene Intervalle für sein Abo auswählen – Täglich
• Er kann zwischen bestimmten Wochentagen oder allen Arbeitstagen auswählen
– Wöchtlich • Rhythmus von jeder, zweiter, dritter…Woche
– Monatlich • Bestimmter Wochentag (letzter Freitag im Monat)
• Bestimmter Tag, wie der 1. eines Monats
• Er kann einen Endtermin für sein Abo bestimmen – Bestimmtes Datum
– Nach einer bestimmten Anzahl an Wochen
• Er kann in seinem Kundenkonto die ausgewählten Abos einsehen, löschen und ändern
• Er kann in seinem Kundenkonto die Kosten anzeigen
• Er kann einen Zahlungsrhythmus für das Abo auswählen – Im Voraus
– Je Termin
– monatlich
Simpel
Komplex
Als Premium-Kunde
möchte ich ein Intervall auswählen,
damit mir ein PKW an wiederkehrenden Tagen zur
Verfügung steht.
User Story
Aboservice
T
T
Termine
• Für jede Anforderung Workshops mit dem
gesamten Team
Three Amigos
… beim Refinement
T
T
T
Als Premium-Kunde
möchte ich ein Intervall auswählen,
damit mir ein PKW an wiederkehrenden Tagen zur
Verfügung steht.
User Story
Aboservice
Szenario Gegeben ein Kunde mit dem Namen <Max>
Und <Max> hat den Nachnamen <Müller>
Und <Max> hat die Adresse <Bremen>
Und <Max> hat das Geburtsdatum <12.05.1987>
Und <Max> hat den Status <Premium>
Szenario Gegeben ein Kunde mit den folgenden Daten:
kd_name kd_nachname kd_adresse kd_gebdatum kd_status
Max Müller Bremen 12.05.1987 Premium
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Szenario Und bucht einen PKW für den 01.08.15 und aktiviert
den Aboservice
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den 01.08.2015
Und Max aktiviert den Aboservice
Szenario
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max einen PKW für den 01.08.2015 bucht
Und Max den Aboservice aktiviert
Wenn Max ein wöchentliches Intervall auswählt
Dann ist der PKW auch für den 08.08.2015 gebucht
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Wenn Max einen PKW für den 01.08.2015 bucht
Und Max den Aboservice aktiviert
Und Max ein wöchentliches Intervall auswählt
Dann ist der PKW auch für den 08.08.2015 gebucht
Szenarien Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den 01.08.2015
Und Max aktiviert den Aboservice
Wenn Max hat ein wöchentliches Intervall auswählt
Dann ist der PKW auch für den 08.08.2015 gebucht
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den 01.08.2015
Und Max aktiviert den Aboservice
Wenn Max hat ein monatliches Intervall auswählt
Dann ist der PKW auch für den 01.09.2015 gebucht
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den 31.08.2015
Und Max aktiviert den Aboservice
Wenn Max hat ein monatliches Intervall auswählt
Dann ist der PKW auch für den 30.09.2015 gebucht
Szenario Outline Szenario Outline: Intervall
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den <startdatum>
Und Max aktiviert den Aboservice
Wenn Max hat ein <intervall> Intervall auswählt
Dann ist der PKW auch für den <zweites_datum> gebucht
Beispiele:
startdatum intervall zweites_datum bemerkung
01.08.2015 wöchentlich 08.08.2015
01.08.2015 monatlich 01.09.2015
31.08.2015 monatlich 30.09.2015 Letzer Monatstag
Alles in Gherkin? Given – When - Then
Nein!
T
T
Alles automatisieren?
TestDB2
Nein!
TestDB1
T
T
Tools
Concordion
…
T
T
Layer Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für den 01.08.15
Und Max aktiviert den Aboservice
Wenn Max hat ein wöchentlichen Intervall auswählt
Dann ist der PKW auch für den 08.08.15 gebucht
Max meldet sich an
Max wählt ein Fahrzeug aus
Max wählt den 01.08.2015
Public void entersNameAndAddress (Persona user) {
customer.enterFirstName (user.getFirstName() );
customer.enterLastName (user.getLastName() );
customer.enterAdress (user.getAddress() );
}
Business
Rule
Business Flow
Technical
T
T
T
Muss ich TDD nutzen?
RED
GREEN REFACTOR
1. Einen Test schreiben und
prüfen, ob er fehlschlägt
2. Code ergänzen, damit der
Test erfolgreich durchläuft
3. Den Code verbessern
z.B. Wiederholungen
löschen
T
T
T
Vorher:
Vorher:
T
T
T
T
T
T
Szenarien
- Nach und nach erstellen
- Dem Kunden zur Verfügung stellen
- Fachliche Ebene
T
T
Automatisierung
- Passende Tools
- Kritischer Pfad
- Refactoring
T
T Entwicklung
- TDD/BDD gleichzeitig
- Beides kostet viel Zeit
- Mitarbeiter
BDD – Die Lösung aller Probleme?
BDD – Die Lösung aller Probleme?
Quelle: https://hakanforss.files.wordpress.com/2014/03/are-you-too-busy-to-improve2.png
Fragen?
Gerne auch an unserem Stand
ina.einemann@hec.de
top related