Slide 1

Slide 1 text

BEHAVIOUR DRIVEN DEVELOPMENT - MIT SPECFLOW STEVE KORZINETZKI @skorzinetzki

Slide 2

Slide 2 text

Was ist Behaviour Driven Development? Photo by mari lezhava on Unsplash

Slide 3

Slide 3 text

Hände hoch! ▪ Wer kennt BDD? ▪ Wer kennt die „Given When Then“ Schablone? ▪ Wer kennt die drei Phasen von BDD?

Slide 4

Slide 4 text

Was ist eigentlich das Problem? Photo by Abraham Barrera on Unsplash

Slide 5

Slide 5 text

Wann bemerken wir Fehler? From Engineering Practices for Continuous Delivery by Neal Ford

Slide 6

Slide 6 text

BDD ist die fehlende Verknüpfung 6 „Bridging the communication gap“ (Gojko Adzic) Business / Stakeholder Dev-Team

Slide 7

Slide 7 text

BDD Definition „BDD practitioners explore, discover, define, then drive out the desired behaviour of software using conversation, concrete examples, and automated tests.“ 7 From Cucumber for Java Book by Seb Rose, Matt Wynne and Aslak Hellesøy 1. Phase: Discovery 2. Phase: Formulation 3. Phase: Automation

Slide 8

Slide 8 text

TDD Cycle 8 From Growing Object-Oriented Software by Nat Pryce and Steve Freeman

Slide 9

Slide 9 text

BDD Cycle (Development) 9 From Growing Object-Oriented Software by Nat Pryce and Steve Freeman

Slide 10

Slide 10 text

Test Automation Pyramid 10 UI Service Unit

Slide 11

Slide 11 text

Testing Iceberg ▪ die Fachabteilung ist betroffen (BDD) ▪ technisch (TDD, …) 11 Wer hat ein Interesse daran, die Tests zu lesen?

Slide 12

Slide 12 text

Die drei Phasen von BDD Discovery Formulation Automation 12 Gemeinsames Gespräch zwischen Fachabteilung, Entwickler, Tester, … Entwickeln von gemeinsamem Verständnis und allgemeingültiger Sprache. Das gemeinsame Gespräch wird aufgenommen / verschriftlicht Es wird also die Spezifikation definiert. Die Beispiele werden in Szenarien abgeleitet. Die Szenarien werden mit dem dazugehörigen Test- und Produktiv-Code untermauert. Es entsteht eine lebendige Dokumentation.

Slide 13

Slide 13 text

Develop BDD Workflow 13 #1 Pick a User Story #2 Requirement Workshop #3 Formulate #4 Review #5 Automate #7 Supplementary tests #6 Implement (TDD) #8 Release From Discovery by Gaspar Nagy and Seb Rose

Slide 14

Slide 14 text

Discovery Photo by Aneta Ivanova on Unsplash

Slide 15

Slide 15 text

Impact Mapping Story Mapping Code Examples Acceptance Criteria User Stories Epics User Activities Reise agiler Anforderungen 15 From Impact Maps and Story Maps by Christian Hassa https://de.slideshare.net/chassa/2014-0618srdimpact-mapsstorymapsen Example Mapping Erinnerung daran, eine Konversation zu haben Warum? Outcomes Wie? Spezifikation Deliverables Impacts Goals früher später

Slide 16

Slide 16 text

Develop BDD Workflow 16 #1 Pick a User Story #2 Requirement Workshop #3 Formulate #4 Review #5 Automate #7 Supplementary tests #6 Implement (TDD) #8 Release From Discovery by Gaspar Nagy and Seb Rose Example Mapping Discovery

Slide 17

Slide 17 text

Example Mapping 17 From Introducing Example Mapping by Matt Wynne https://cucumber.io/blog/2015/12/08/example-mapping-introduction Gemeinsames Verständnis

Slide 18

Slide 18 text

Example Mapping 18 verifizieren illustrieren treiben Regeln Tests Beispiele (Anforderungen, Akzeptanzkriterien)

Slide 19

Slide 19 text

Example Mapping Pizza Bestellung Beispiel 19

Slide 20

Slide 20 text

Formulation & Automation Photo by Ales Nesetril on Unsplash

Slide 21

Slide 21 text

SpecFlow 21 From SpecFlow Home Page https://specflow.org/

Slide 22

Slide 22 text

Develop BDD Workflow 22 #1 Pick a User Story #2 Requirement Workshop #3 Formulate #4 Review #5 Automate #7 Supplementary tests #6 Implement (TDD) #8 Release From Discovery by Gaspar Nagy and Seb Rose

Slide 23

Slide 23 text

SpecFlow Feature File Beispiel 23 Feature: pizza-change-delivery-address As a customer I want to change the delivery address after ordering a pizza when not picked up yet so I can recover from delivering to the wrong address Scenario: Pizza waiting for pickup, changing delivery address should be accepted Given "Peter" orders some pizza to "home" address And the pizza is waiting for pickup When the customer wants to change the delivery address to "work" Then the system should accept the change Scenario: Pizza already picked up, changing delivery address should be denied Given "Tim" orders some pizza to "home" address And the pizza is picked up by the driver When the customer wants to change the delivery address to "work" Then the system should deny the change with message "Already picked up"

Slide 24

Slide 24 text

Develop BDD Workflow 24 #1 Pick a User Story #2 Requirement Workshop #3 Formulate #4 Review #5 Automate #7 Supplementary tests #6 Implement (TDD) #8 Release From Discovery by Gaspar Nagy and Seb Rose

Slide 25

Slide 25 text

Live Coding Photo by Ales Nesetril on Unsplash

Slide 26

Slide 26 text

Fazit ▪ Problem? Signifikanter Anteil an Fehlern durch falsch verstandene Anforderungen – Anforderungen der Fachabteilung verstehen und deren Umsetzung nachweisen ▪ Wann? Wenn die Fachabteilung ein Interesse am Ergebnis hat. ▪ Vorteile • Verkürzte Feedbackschleife, Fehler frühzeitig entdecken • Allgemeingültige Sprache • Lebendige Dokumentation ▪ Herausforderungen • Bereitschaft des Fachbereichs • Automatisierung erfolgt methodenübergreifend

Slide 27

Slide 27 text

VIELEN DANK FÜR EURE AUFMERKSAMKEIT! FOLGT MIR twitter: @skorzinetzki FOLGT DER LISE twitter: @lisegmbh web: lise.de

Slide 28

Slide 28 text

mehr Infos auf lise.de/karriere