Slide 1

Slide 1 text

Test-Driven Development Coding Dojo © msg systems ag, 19.06.2014 Autor: Markus Hanses 1 GB Workshop Travel & Logistics 2014

Slide 2

Slide 2 text

© msg systems ag, 19.06.2014 2 Agenda 1.  Vorwort 2.  Warum ein TDD Coding Dojo? 1.  Bewusste Praxis 2.  Welche Fähigkeiten durch diese Kata vermittelt werden sollen 3.  Softwareentwicklung mit nachträglichen Tests (Test Last) 4.  Softwareentwicklung mit TDD (Test First) 3.  Kata 1.  FizzBuzz Kata (3 Aufgaben) 1.  Erläuterung 2.  Durchführung 3.  Retrospektive 4.  Diskussion

Slide 3

Slide 3 text

© msg systems ag, 19.06.2014 3 Bewusste Praxis Deliberate Practice - das planvolle und zielgerichtete Üben - ist eine Möglichkeit um methodisch abgestimmt auf bestimmte Höchstleitungen hin zu trainieren. Dabei wird ein überdurchschnittlich hohes Niveau auf einem stark eingegrenzten und spezialisierten Gebiet angestrebt. (nach Ericsson, The role of deliberate practice in the acquisition of expert performance, 1993) [Academia.edu] “But what changes people is what they do, not what they read. How many diet books have I read? Am I thinner?” [Jeffries2005]

Slide 4

Slide 4 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 4 Testfälle entwerfen Nach Clean Code arbeiten Sicher refaktorisieren Entwicklung durch Tests treiben Welche Fähigkeiten durch diese TDD Kata vermittelt werden sollen

Slide 5

Slide 5 text

© msg systems ag, 19.06.2014 5 Softwareentwicklung mit nachträglichen Tests (Test Last) 1/2 Entwickler In Entwicklungs- umgebung Tester In Testumgebung Kunde In Produktions- umgebung Meldet Fehler

Slide 6

Slide 6 text

© msg systems ag, 19.06.2014 6 Funktionalität schreiben Test schreiben Code debuggen Softwareentwicklung mit nachträglichen Tests (Test Last) 2/2

Slide 7

Slide 7 text

© msg systems ag, 19.06.2014 7 Softwareentwicklung mit TDD (Test First) 1/3 Entwickler In Entwicklungs- umgebung Tester In Testumgebung Kunde In Produktions- umgebung Meldet weniger Fehler TDD

Slide 8

Slide 8 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 8 RED Testmethode erstellen Erwartungen definieren REFACTOR Code Smell entfernen Keine neue Funktion! GREEN Funktion realisieren Einfache Lösung! Softwareentwicklung mit TDD (Test First) 2/3

Slide 9

Slide 9 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 9 RED Testmethode erstellen Erwartungen definieren REFACTOR Code Smell entfernen Keine neue Funktion! Testliste erweitern GREEN Funktion realisieren Einfache Lösung! Softwareentwicklung mit TDD (Test First) 3/3 OVERVIEW Überblick verschaffen Testliste erstellen Guiding Test erstellen

Slide 10

Slide 10 text

© msg systems ag, 19.06.2014 10 •  Lege ein Projekt mit der Entwicklungsumgebung Deiner Wahl an. •  Ein Testframework wird benötigt. ODER •  Verwende das vorbereitete Projekt: -  Web Adresse: https://github.com/marhan/kata_fizz_buzz -  Git Repository: [email protected]:marhan/kata_fizz_buzz.git FizzBuzz Kata - Setup

Slide 11

Slide 11 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 11 •  Stellt Euch vor Ihr seit Schüler im Mathematik-Unterricht und der Lehrer teilt Euch mit, in der nächsten Unterrichtsstunde ein neues Spiel zu spielen, um den Unterricht etwas aufzulockern. •  Er erläutert das Spiel wie folgt: „Ich werde Einen nach dem Anderen aufrufen und bitten die als nächstes folgende Zahl zu sagen, beginnend mit der Zahl 1.“ •  „Der lustige Teil dieses Spiels ist folgender: Wenn die Zahl durch 3 teilbar ist, soll Fizz anstelle der Zahl gesagt werden. Wenn die Zahl durch 5 teilbar ist, soll anstelle der Zahl Buzz gesagt werden.“ •  Um nicht Gefahr zu laufen vor der gesamten Klasse eine falsche Antwort zu geben, hast Du Dich entschlossen bis zur nächsten Unterrichtsstunde ein Programm zu schreiben, welches Dir die richtigen Antworten liefert. FizzBuzz-Kata 1/3

Slide 12

Slide 12 text

© msg systems ag, 19.06.2014 Quelle des Bildes: [Hackny2011] 12 •  Waren die Anforderungen für Dich verständlich und vollständig? •  Hast Du erst am Ende refaktorisiert oder schon früher? •  Was must Du tun, wenn eine neue Anforderung hinzukommt? Retrospektive 1/3

Slide 13

Slide 13 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 13 •  Die Unterrichtsstunde verlief gut und der Lehrer ist so zufrieden mit der Klasse, dass er beschließt, dieses Spiel weiter zu führen. •  Er führt folgende Erweiterung ein: „Wenn die Zahl durch 3 und durch 5 teilbar ist, soll FizzBuzz anstelle der Zahl gesagt werden.“ •  Wieder möchtest Du vor der Klasse glänzen und erweiterst Dein Programm. FizzBuzz-Kata 2/3

Slide 14

Slide 14 text

© msg systems ag, 19.06.2014 Quelle des Bildes: [Hackny2011] 14 •  Hast Du von Jemandem lernen können? •  Ist der Code den Du geschrieben hast Clean? Retrospektive 2/3

Slide 15

Slide 15 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 15 •  Auch diese Unterrichtsstunde verlief gut. Der Lehrer nutzt den Run der Klasse und erweitert das Spiel erneut. •  Er führt folgende Erweiterung ein: „Wenn die Zahl durch 7 teilbar ist, soll Whizz anstelle der Zahl gesagt werden.“ •  Du bist bereits ein Experte auf diesem Gebiet und erweiterst Dein Programm mit Leichtigkeit. FizzBuzz-Kata 3/3

Slide 16

Slide 16 text

© msg systems ag, 19.06.2014 Quelle des Bildes: [Hackny2011] 16 •  Konntest Du Code Smell vermeiden? •  Konntest Du neue Anforderungen leicht hinzufügen? •  Gibt es Teile Deiner Lösung, die nicht Clean sind? Retrospektive 3/3

Slide 17

Slide 17 text

© msg systems ag, 19.06.2014 17 Mögliche Lösung Aufgabe 1/3

Slide 18

Slide 18 text

© msg systems ag, 19.06.2014 18 Mögliche Lösung Aufgabe 2/3

Slide 19

Slide 19 text

© msg systems ag, 19.06.2014 19 Mögliche Lösung Aufgabe 2/3 – Alternative Implementierung

Slide 20

Slide 20 text

© msg systems ag, 19.06.2014 20 Mögliche Lösung Aufgabe 3/3

Slide 21

Slide 21 text

© msg systems ag, 19.06.2014 21 Mögliche Lösung Aufgabe 3/3 – Alternative Implementierung

Slide 22

Slide 22 text

© msg systems ag, 19.06.2014 Quelle: [Bache2013] 22 •  Welcher Aspekt Deiner Lösung gefällt Dir am meisten? •  Wo und wie hast Du TDD am besten umsetzen können? •  Hast Du etwas neues gelernt? •  Ist etwas ungewöhnliches passiert? •  Welches Thema möchtest Du weiter vertiefen? •  Was würdest Du bei dem nächsten Dojo ändern wollen? •  Was wirst Du in Zukunft anders machen? Diskussion

Slide 23

Slide 23 text

Vielen Dank für Ihre Aufmerksamkeit © msg systems ag, 19.06.2014 23 Markus Hanses Travel & Logistics / Senior IT-Consultant Mobil: +49 173 6172920 Email: [email protected] www.msg-systems.com

Slide 24

Slide 24 text

© msg systems ag, 19.06.2014 24 Quellenverzeichnis •  Literatur -  [Bache2013] •  The Coding Dojo Handbook •  Emily Bache -  [Academia.edu] •  Deliberate practice als einziger Schlüssel zum Erwerb musikalischer Expertise? •  https://www.academia.edu/ -  [Jeffries2005] •  Practice: That‘s What We Do •  http://xprogramming.com/articles/jatpractice/ •  Bilder -  [Hackny2011] •  https://www.flickr.com/photos/hackny/6203305706/