BDD - Die Lösung aller Probleme?

488 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
488
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
21
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

×