BDD - Die Lösung aller Probleme?

69
BehaviorDrivenDevelopment Die Lösung aller Probleme? Ina Einemann

Transcript of BDD - Die Lösung aller Probleme?

Page 1: BDD - Die Lösung aller Probleme?

BehaviorDrivenDevelopment

Die Lösung aller Probleme?

Ina Einemann

Page 2: BDD - Die Lösung aller Probleme?

Typische Probleme

Anforderungs-management

Umsetzung Test Auslieferung

T

Page 3: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

Page 4: BDD - Die Lösung aller Probleme?

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:

Page 5: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

T

Page 6: BDD - Die Lösung aller Probleme?

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

Page 7: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

GlueCode

T

Page 8: BDD - Die Lösung aller Probleme?

Glue Code

@Given("eine Zahl $zahl1")

public void givenEineZahl(int value1){

this.value1 = value1;

}

Page 9: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

GlueCode

T

Page 10: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

GlueCode

T

Page 11: BDD - Die Lösung aller Probleme?

Was ist BDD? Behavior Driven Development

Page 12: BDD - Die Lösung aller Probleme?

CarShare

• Bislang nur telefonische

Buchungen

• Buchungswebseite

• Spezielle Features

Page 13: BDD - Die Lösung aller Probleme?

T

T

Stakeholder: Simone

PO: Sven

Team: Maja

Karl Paul

Christian

Page 14: BDD - Die Lösung aller Probleme?

T

T

Page 15: BDD - Die Lösung aller Probleme?

T

T

Page 16: BDD - Die Lösung aller Probleme?

Gemeinsames Verständis

Das ist

ein

Berg

Das ist

eine

Schlange

Das ist

ein

Baum

Das ist

eine

Höhle

Page 17: BDD - Die Lösung aller Probleme?

Vision

Business Goals

Capabilities

Features

Stories

Akzeptanzkriterien

Szenarien

Code

Page 18: BDD - Die Lösung aller Probleme?

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

Page 19: BDD - Die Lösung aller Probleme?

Als Premium-Kunde

möchte ich für bestimmte Tage Fahrzeuge

abonnieren können,

damit ich nicht mehrmals buchen muss.

User Story

Aboservice

Page 20: BDD - Die Lösung aller Probleme?

T

T

Page 21: BDD - Die Lösung aller Probleme?

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

Page 22: BDD - Die Lösung aller Probleme?

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

Page 23: BDD - Die Lösung aller Probleme?

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

Page 24: BDD - Die Lösung aller Probleme?

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!

Page 25: BDD - Die Lösung aller Probleme?

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

Page 26: BDD - Die Lösung aller Probleme?

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!

Page 27: BDD - Die Lösung aller Probleme?

T

T

Page 28: BDD - Die Lösung aller Probleme?

Als Premium-Kunde

möchte ich für bestimmte Tage Fahrzeuge

abonnieren können,

damit ich nicht mehrmals buchen muss.

User Story

Aboservice

Page 29: BDD - Die Lösung aller Probleme?

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

Page 30: BDD - Die Lösung aller Probleme?

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

Page 31: BDD - Die Lösung aller Probleme?

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

Page 32: BDD - Die Lösung aller Probleme?

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

Page 33: BDD - Die Lösung aller Probleme?

Als Premium-Kunde

möchte ich ein Intervall auswählen,

damit mir ein PKW an wiederkehrenden Tagen zur

Verfügung steht.

User Story

Aboservice

Page 34: BDD - Die Lösung aller Probleme?

T

T

Page 35: BDD - Die Lösung aller Probleme?

Termine

• Für jede Anforderung Workshops mit dem

gesamten Team

Page 36: BDD - Die Lösung aller Probleme?

Three Amigos

… beim Refinement

T

Page 37: BDD - Die Lösung aller Probleme?

T

T

Page 38: BDD - Die Lösung aller Probleme?

Als Premium-Kunde

möchte ich ein Intervall auswählen,

damit mir ein PKW an wiederkehrenden Tagen zur

Verfügung steht.

User Story

Aboservice

Page 39: BDD - Die Lösung aller Probleme?

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>

Page 40: BDD - Die Lösung aller Probleme?

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

Page 41: BDD - Die Lösung aller Probleme?

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

Page 42: BDD - Die Lösung aller Probleme?

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

Page 43: BDD - Die Lösung aller Probleme?

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

Page 44: BDD - Die Lösung aller Probleme?

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

Page 45: BDD - Die Lösung aller Probleme?

Alles in Gherkin? Given – When - Then

Nein!

Page 46: BDD - Die Lösung aller Probleme?

T

T

Page 47: BDD - Die Lösung aller Probleme?

Alles automatisieren?

TestDB2

Nein!

TestDB1

Page 48: BDD - Die Lösung aller Probleme?

T

T

Page 49: BDD - Die Lösung aller Probleme?

Tools

Concordion

Page 50: BDD - Die Lösung aller Probleme?
Page 51: BDD - Die Lösung aller Probleme?
Page 52: BDD - Die Lösung aller Probleme?
Page 53: BDD - Die Lösung aller Probleme?
Page 54: BDD - Die Lösung aller Probleme?
Page 55: BDD - Die Lösung aller Probleme?

T

T

Page 56: BDD - Die Lösung aller Probleme?

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

Page 57: BDD - Die Lösung aller Probleme?

T

T

Page 58: BDD - Die Lösung aller Probleme?

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

Page 59: BDD - Die Lösung aller Probleme?

T

T

Page 60: BDD - Die Lösung aller Probleme?

T

Vorher:

Page 61: BDD - Die Lösung aller Probleme?

Vorher:

Page 62: BDD - Die Lösung aller Probleme?

T

T

Page 63: BDD - Die Lösung aller Probleme?

T

T

Page 64: BDD - Die Lösung aller Probleme?

T

T

Szenarien

- Nach und nach erstellen

- Dem Kunden zur Verfügung stellen

- Fachliche Ebene

Page 65: BDD - Die Lösung aller Probleme?

T

T

Automatisierung

- Passende Tools

- Kritischer Pfad

- Refactoring

Page 66: BDD - Die Lösung aller Probleme?

T

T Entwicklung

- TDD/BDD gleichzeitig

- Beides kostet viel Zeit

- Mitarbeiter

Page 67: BDD - Die Lösung aller Probleme?

BDD – Die Lösung aller Probleme?

Page 68: 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

Page 69: BDD - Die Lösung aller Probleme?

Fragen?

Gerne auch an unserem Stand

[email protected]