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
GREENREFACTOR
1. Einen Test schreiben und
prüfen, ob er fehlschlägt
2. Code e...
Was ist BDD?
Behavior Driven Development
T
Was ist BDD?
Behavior Driven Development
Story: Taschenrechner
Feature: Zwei Zahlen
Szenario: Zwei Zahlen addieren
Gegeben...
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 PKW...
Als Premium-Kunde
möchte ich für bestimmte Tage Fahrzeuge
abonnieren können,
damit ich nicht mehrmals buchen muss.
User St...
T
T
Sachliche
Gründe
Bedenken
Lustlosigkeit
Widerspruch
Kritik &
Beschwerden
Ignoranz
Aufregung
Zustimmung
Ausweichen Anpassun...
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Formendes
Widerstands
AktivPass...
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Formendes
Widerstands
AktivPass...
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Formendes
Widerstands
AktivPass...
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Formendes
Widerstands
AktivPass...
Widerstand
Bevorzugung des
jetzigen Zustands
Gründe für den Widerstand
Ablehnung von Neuem
Formendes
Widerstands
AktivPass...
T
T
Als Premium-Kunde
möchte ich für bestimmte Tage Fahrzeuge
abonnieren können,
damit ich nicht mehrmals buchen muss.
User St...
Akzeptanzkriterien
• Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der a...
Workflow
• Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewählte...
Operationen
• Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausgewäh...
Simpel/Komplex
• Der Premium-Kunde soll bei einer Buchung auswählen können, ob die Buchung als Abo laufen soll
• Der ausge...
Als Premium-Kunde
möchte ich ein Intervall auswählen,
damit mir ein PKW an wiederkehrenden Tagen zur
Verfügung steht.
User...
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...
Szenario
Gegeben ein Kunde mit dem Namen <Max>
Und <Max> hat den Nachnamen <Müller>
Und <Max> hat die Adresse <Bremen>
Und...
Szenario
Gegeben ein Kunde mit den folgenden Daten:
kd_name kd_nachname kd_adresse kd_gebdatum kd_status
Max Müller Bremen...
Szenario
Und bucht einen PKW für den 01.08.15 und aktiviert
den Aboservice
Gegeben ein Kunde Max
Und Max ist Premium Kunde...
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...
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...
Szenario Outline
Szenario Outline: Intervall
Gegeben ein Kunde Max
Und Max ist Premium Kunde
Und Max bucht einen PKW für d...
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 Abose...
T
T
Muss ich TDD nutzen?
RED
GREENREFACTOR
1. Einen Test schreiben und
prüfen, ob er fehlschlägt
2. Code ergänzen, damit der
T...
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
BDD - Die Lösung aller Probleme?
BDD - Die Lösung aller Probleme?
BDD - Die Lösung aller Probleme?
BDD - Die Lösung aller Probleme?
BDD - Die Lösung aller Probleme?
Nächste SlideShare
Wird geladen in …5
×

BDD - Die Lösung aller Probleme?

534 Aufrufe

Veröffentlicht am

Alle sprechen von BDD und davon, wie viele Probleme damit, vor allem beim Testen und Anforderungsmanagement, gelöst werden können. BDD verspricht eine bessere Kommunikation innerhalb des Teams und mit dem Kunden, eine lebendige Dokumentation und höhere Softwarequalität sowie die Entzerrung des Testens.

Klingt super! Aber BDD in neue und bestehende Projekte einzuführen, ist nicht ganz einfach. Es ergeben sich einige Stolpersteine die überwunden werden müssen. Wie binde ich den Kunden ein? Kann der Kunde selber Szenarien aufbauen? Wie überzeuge ich mein Team? Was muss ich bei der Einführung von BDD in bestehende Projekte beachten?

In meinem Vortrag gehe ich auf diese Probleme ein und zeige entsprechende Lösungswege auf.

Veröffentlicht in: Ingenieurwesen
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
534
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
6
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

BDD - Die Lösung aller Probleme?

  1. 1. BehaviorDrivenDevelopment Die Lösung aller Probleme? Ina Einemann
  2. 2. Typische Probleme Anforderungs- management Umsetzung Test Auslieferung T
  3. 3. Was ist BDD? Behavior Driven Development
  4. 4. Was ist BDD? Behavior Driven Development RED GREENREFACTOR 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:
  5. 5. Was ist BDD? Behavior Driven Development T
  6. 6. 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
  7. 7. Was ist BDD? Behavior Driven Development GlueCode T
  8. 8. Glue Code @Given("eine Zahl $zahl1") public void givenEineZahl(int value1){ this.value1 = value1; }
  9. 9. Was ist BDD? Behavior Driven Development GlueCode T
  10. 10. Was ist BDD? Behavior Driven Development GlueCode T
  11. 11. Was ist BDD? Behavior Driven Development
  12. 12. CarShare • Bislang nur telefonische Buchungen • Buchungswebseite • Spezielle Features
  13. 13. T T Stakeholder: Simone PO: Sven Team: Maja Karl Paul Christian
  14. 14. T T
  15. 15. T T
  16. 16. Gemeinsames Verständis Das ist ein Berg Das ist eine Schlange Das ist ein Baum Das ist eine Höhle
  17. 17. Vision Business Goals Capabilities Features Stories Akzeptanzkriterien Szenarien Code
  18. 18. 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
  19. 19. Als Premium-Kunde möchte ich für bestimmte Tage Fahrzeuge abonnieren können, damit ich nicht mehrmals buchen muss. User Story Aboservice
  20. 20. T T
  21. 21. Sachliche Gründe Bedenken Lustlosigkeit Widerspruch Kritik & Beschwerden Ignoranz Aufregung Zustimmung Ausweichen Anpassung Schuldzuweisung BequemlichkeitAngst 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
  22. 22. Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formendes Widerstands AktivPassiv Betonköpfe Mitläufer Saboteure Skeptiker T
  23. 23. Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formendes Widerstands AktivPassiv Mitläufer Skeptike Ich will nicht testen
  24. 24. Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formendes Widerstands AktivPassiv Skeptiker In dem Projekt PlaneShare läuft es viel besser. Es läuft doch!
  25. 25. Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formendes Widerstands AktivPassiv Betonköpfe Wir sind doch zufrieden! T
  26. 26. Widerstand Bevorzugung des jetzigen Zustands Gründe für den Widerstand Ablehnung von Neuem Formendes Widerstands AktivPassiv Saboteure !!! Das wollen wir nicht!
  27. 27. T T
  28. 28. Als Premium-Kunde möchte ich für bestimmte Tage Fahrzeuge abonnieren können, damit ich nicht mehrmals buchen muss. User Story Aboservice
  29. 29. 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
  30. 30. 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
  31. 31. 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 ändernlöschen
  32. 32. 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
  33. 33. Als Premium-Kunde möchte ich ein Intervall auswählen, damit mir ein PKW an wiederkehrenden Tagen zur Verfügung steht. User Story Aboservice
  34. 34. T T
  35. 35. Termine • Für jede Anforderung Workshops mit dem gesamten Team
  36. 36. Three Amigos … beim Refinement T
  37. 37. T T
  38. 38. Als Premium-Kunde möchte ich ein Intervall auswählen, damit mir ein PKW an wiederkehrenden Tagen zur Verfügung steht. User Story Aboservice
  39. 39. 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>
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. Alles in Gherkin? Given – When - Then Nein!
  46. 46. T T
  47. 47. Alles automatisieren? TestDB2 Nein! TestDB1
  48. 48. T T
  49. 49. Tools Concordion …
  50. 50. T T
  51. 51. 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
  52. 52. T T
  53. 53. Muss ich TDD nutzen? RED GREENREFACTOR 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
  54. 54. T T
  55. 55. T Vorher:
  56. 56. Vorher:
  57. 57. T T
  58. 58. T T
  59. 59. T T Szenarien - Nach und nach erstellen - Dem Kunden zur Verfügung stellen - Fachliche Ebene
  60. 60. T T Automatisierung - Passende Tools - Kritischer Pfad - Refactoring
  61. 61. T T Entwicklung - TDD/BDD gleichzeitig - Beides kostet viel Zeit - Mitarbeiter
  62. 62. BDD – Die Lösung aller Probleme?
  63. 63. BDD – Die Lösung aller Probleme? Quelle: https://hakanforss.files.wordpress.com/2014/03/are-you-too-busy-to-improve2.png
  64. 64. Fragen? Gerne auch an unserem Stand ina.einemann@hec.de

×