Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDD Coding Dojo

TDD Coding Dojo

Dojo durchgeführt auf dem Workshop 2014 des Geschäftsbereichs Travel & Logistics der msg systems ag.

Markus Hanses

June 21, 2014
Tweet

More Decks by Markus Hanses

Other Decks in Programming

Transcript

  1. Test-Driven Development Coding Dojo © msg systems ag, 19.06.2014 Autor:

    Markus Hanses 1 GB Workshop Travel & Logistics 2014
  2. © 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
  3. © 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]
  4. © 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
  5. © 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
  6. © msg systems ag, 19.06.2014 6 Funktionalität schreiben Test schreiben

    Code debuggen Softwareentwicklung mit nachträglichen Tests (Test Last) 2/2
  7. © 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
  8. © 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
  9. © 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
  10. © 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
  11. © 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
  12. © 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
  13. © 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
  14. © 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
  15. © 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
  16. © 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
  17. © 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
  18. 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
  19. © 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/