Slide 1

Slide 1 text

Behavior DrivenDevelopment Die Lösung aller Probleme? Ina Einemann

Slide 2

Slide 2 text

Typische Probleme Anforderungs- management Umsetzung Test Auslieferung T

Slide 3

Slide 3 text

Was ist BDD? Behavior Driven Development

Slide 4

Slide 4 text

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:

Slide 5

Slide 5 text

Was ist BDD? Behavior Driven Development T

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Was ist BDD? Behavior Driven Development GlueCode T

Slide 8

Slide 8 text

Glue Code @Given("eine Zahl $zahl1") public void givenEineZahl(int value1){ this.value1 = value1; }

Slide 9

Slide 9 text

Was ist BDD? Behavior Driven Development GlueCode T

Slide 10

Slide 10 text

Was ist BDD? Behavior Driven Development GlueCode T

Slide 11

Slide 11 text

Was ist BDD? Behavior Driven Development

Slide 12

Slide 12 text

CarShare • Bislang nur telefonische Buchungen • Buchungswebseite • Spezielle Features

Slide 13

Slide 13 text

T T Stakeholder: Simone PO: Sven Team: Maja Karl Paul Christian

Slide 14

Slide 14 text

T T

Slide 15

Slide 15 text

T T

Slide 16

Slide 16 text

Gemeinsames Verständis Das ist ein Berg Das ist eine Schlange Das ist ein Baum Das ist eine Höhle

Slide 17

Slide 17 text

Vision Business Goals Capabilities Features Stories Akzeptanzkriterien Szenarien Code

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Als Premium-Kunde möchte ich für bestimmte Tage Fahrzeuge abonnieren können, damit ich nicht mehrmals buchen muss. User Story Aboservice

Slide 20

Slide 20 text

T T

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formen des Widerstands Aktiv Passiv Betonköpfe Mitläufer Saboteure Skeptiker T

Slide 23

Slide 23 text

Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formen des Widerstands Aktiv Passiv Mitläufer Skeptike Ich will nicht testen

Slide 24

Slide 24 text

Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formen des Widerstands Aktiv Passiv Skeptiker In dem Projekt PlaneShare läuft es viel besser. Es läuft doch!

Slide 25

Slide 25 text

Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formen des Widerstands Aktiv Passiv Betonköpfe Wir sind doch zufrieden! T

Slide 26

Slide 26 text

Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formen des Widerstands Aktiv Passiv Saboteure !!! Das wollen wir nicht!

Slide 27

Slide 27 text

T T

Slide 28

Slide 28 text

Als Premium-Kunde möchte ich für bestimmte Tage Fahrzeuge abonnieren können, damit ich nicht mehrmals buchen muss. User Story Aboservice

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Als Premium-Kunde möchte ich ein Intervall auswählen, damit mir ein PKW an wiederkehrenden Tagen zur Verfügung steht. User Story Aboservice

Slide 34

Slide 34 text

T T

Slide 35

Slide 35 text

Termine • Für jede Anforderung Workshops mit dem gesamten Team

Slide 36

Slide 36 text

Three Amigos … beim Refinement T

Slide 37

Slide 37 text

T T

Slide 38

Slide 38 text

Als Premium-Kunde möchte ich ein Intervall auswählen, damit mir ein PKW an wiederkehrenden Tagen zur Verfügung steht. User Story Aboservice

Slide 39

Slide 39 text

Szenario Gegeben ein Kunde mit dem Namen Und hat den Nachnamen Und hat die Adresse Und hat das Geburtsdatum <12.05.1987> Und hat den Status

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Szenario Outline Szenario Outline: Intervall Gegeben ein Kunde Max Und Max ist Premium Kunde Und Max bucht einen PKW für den Und Max aktiviert den Aboservice Wenn Max hat ein Intervall auswählt Dann ist der PKW auch für den 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

Slide 45

Slide 45 text

Alles in Gherkin? Given – When - Then Nein!

Slide 46

Slide 46 text

T T

Slide 47

Slide 47 text

Alles automatisieren? TestDB2 Nein! TestDB1

Slide 48

Slide 48 text

T T

Slide 49

Slide 49 text

Tools Concordion …

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

T T

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

T T

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

T T

Slide 60

Slide 60 text

T Vorher:

Slide 61

Slide 61 text

Vorher:

Slide 62

Slide 62 text

T T

Slide 63

Slide 63 text

T T

Slide 64

Slide 64 text

T T Szenarien - Nach und nach erstellen - Dem Kunden zur Verfügung stellen - Fachliche Ebene

Slide 65

Slide 65 text

T T Automatisierung - Passende Tools - Kritischer Pfad - Refactoring

Slide 66

Slide 66 text

T T Entwicklung - TDD/BDD gleichzeitig - Beides kostet viel Zeit - Mitarbeiter

Slide 67

Slide 67 text

BDD – Die Lösung aller Probleme?

Slide 68

Slide 68 text

BDD – Die Lösung aller Probleme? Quelle: https://hakanforss.files.wordpress.com/2014/03/are-you-too-busy-to-improve2.png

Slide 69

Slide 69 text

Fragen? Gerne auch an unserem Stand [email protected]