07. November, Zürich-Oerlikon
Automatisierte Spezifikationstests in agilen Projekten mit SpecFlow Christian Hassa (@chrishassa) Gaspar Nagy (@gasparnagy) TechTalk Software AG
Willkommen!
Scrum 2007 2008 2009 2014 1993 2010
SpecFlow 2014 BDD für.net #26 in NuGet based on recent installs (6.11.2014) > 20 00 aktive Nutzer > 30 Contributors #82 in Visual Studio Gallery based on popularity (6.11.2014) ~1'000 visits daily
Agenda Specification-By-Example BDD mit SpecFlow Anforderungen im ALM Agenda
Specification-By-Example
Agile Anforderungen Warum? Auswirkung Wie? Spezifikation Image from: 50 Quick ideas to improve your user stories: https://leanpub.com/50quickideas SpecificationBy-Example
Agile Spezifikationen Warum? Auswirkung Goals Impacts Epics User Stories Akzeptanzkriterien Reminder for a conversation Code Wie? Spezifikation früher später
Wir wollen neue Benutzer ermutigen, etwas zu bestellen. Daher bieten wir 10% Rabatt für die erste Bestellung eines Kunden an. Originalidee Illustration: George Dinwiddie http://blog.gdinwiddie.com public void CalculateDiscount(Order order) { if (order.customer.isnew) order.finalamount = Math.Round(order.Total * 9/10); } Register as bart_bookworm Go to /catalog/search Enter ISBN-0955683610 Click Search Click Add to Cart Click View Cart Verify Subtotal is $33.75
Agile Spezifikationen Warum? Auswirkung Goals Impacts Epics User Stories Akzeptanzkriterien Bugs Code Wie? Spezifikation früher später
Spezifikation mit Beispielen Beispiele machen Abstraktes besser verständlich werden normalerweise nicht formalisiert ausgetauscht und dokumentiert Beispiele bestehen aus Tests beschreiben Anforderungen verifizieren Erfüllung von
Wir wollen neue Benutzer ermutigen, etwas zu bestellen. Daher bieten wir 10% Rabatt für die erste Bestellung eines Kunden an. Originalidee Illustration: George Dinwiddie http://blog.gdinwiddie.com public void CalculateDiscount(Order order) { if (order.customer.isnew) order.finalamount = Math.Round(order.Total * 9/10); } Register as bart_bookworm Go to /catalog/search Enter ISBN-0955683610 Click Search Click Add to Cart Click View Cart Verify Subtotal is $33.75
Originalidee Illustration: George Dinwiddie http://blog.gdinwiddie.com Angenommen der Benutzer hat noch keine Bestellung Wenn der Benutzer ein Buch zum Preis von EUR 37,50 in den Einkaufwagen legt Dann zeigt der Einkaufswagen eine Zwischensumme von EUR 33,75.
Eigentlich stimmt das nicht ganz: Bücher in Aktion sollen davon ausgenommen sein Originalidee Illustration: George Dinwiddie http://blog.gdinwiddie.com
Originalidee Illustration: George Dinwiddie http://blog.gdinwiddie.com Happy Path Technische Machbarkeit Ausnahmen, Grenzfälle 3 Amigos
BDD mit SpecFlow
Abstrakte Akzeptanzkriterien Als Webshop Besucher will ich Bücher in einen Warenkorb legen weil ich mehrere Bücher auf einmal bezahlen können will. Bücher können dem Warenkorb hinzugefügt werden Bücher können aus dem Warenkorb entfernt werden Der Warenkorb ist zu Beginn leer Das gleiche Buch kann mehrmals hinzugefügt werden
Beispiele für Akzeptanzkriterien Als Webshop Besucher will ich Bücher in einen Warenkorb legen weil ich mehrere Bücher auf einmal bezahlen können will. Bücher können dem Warenkorb hinzugefügt werden Angenommen ich habe einen leeren Warenkorb Wenn ich das Buch Harry Potter in den Warenkorb lege Dann sollte mein Warenkorb 1 Exemplar von Harry Potter enthalten
Struktur von Gherkin Szenarien Titel: Beschreibt Intention/abstraktes Akzeptanzkriterium Arrange: Kontext, initialer Zustand des Systems Act: Ausführung des Features Triple-A constraint Checks Assert: Überprüfung von Verhalten/Ergebnis Bücher können dem Warenkorb hinzugefügt werden Angenommen ich habe einen leeren Warenkorb Wenn ich das Buch Harry Potter in den Warenkorb lege Dann sollte mein Warenkorb 1 Exemplar von Harry Potter enthalten Und die Meldung Buch im Einkaufswagen wird angezeigt Verkettung von Schritten
Automatisierung Step Definitions binden individuelle Schritte an automatisierbare Schnittstelle der Applikation. Automatisierung kann auch über UI erfolgen. Automatisierung entsteht und erweitert sich mit Entwicklung. Angenommen ich habe einen leeren Warenkorb Wenn ich das Buch Harry Potter in den Warenkorb lege Dann sollte mein Warenkorb 1 Exemplar von Harry Potter enthalten User Interface System Automatisierbare Schnittstelle
Automatisierungsoptionen
SpecFlow mit Selenium
Szenario: Xamarin Shop
SpecFlow mit Xamarin
Anforderungen im ALM
Akzeptanzkriterien in SpecLog Sprint Backlog
Akzeptanzkriterien in TFS-Workitems Sprint Backlog
Spezifikationschecks in TFS-VC SpecFlow Scenarios
Spezifikationschecks in SpecLog Living Documentation
Spezifikationschecks in TFS Build Testautomation
Fazit Specification-By-Example gemeinsames Verständnis Automatisierung mit SpecFlow unterschiedliche Plattformen und Architekturen «Lebende» Spezifikationsdetails Anforderungen im Application Lifecycle Management End-End Verfolgung und Nachvollziehbarkeit
Mehr Informationen zum Thema Ihre Fragen jetzt Demo auf unserem Stand Im Web www.specflow.org www.techtalk.ch