Die Folien beinhalten Aufgaben, deren Lösungen in der Originalversion als Screencast eingebunden sind. Die Screencasts ermöglichen es dem Zuschauer TDD in Aktion zu sehen. Diese Screencasts können hier jedoch nicht hochgeladen werden.
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Fragen & Diskussionen Agenda 2
Code prüft. 2. Den produktiven Code erstellen oder anpassen, bis dieser der Erwartung des Testfalles genügt. 3. Refaktorierung des produktiven Codes, bis dieser frei von Redundanzen ist. 4. Schritt 1 bis 3 Wiederholen, bis alle Funktionalitäten realisiert sind. Was ist Test-Driven Development? 3 RED GREEN REFACTOR TDD Mantra
come to describe Test Driven Development in terms of three simple rules. They are: 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. Robert Martin (Uncle Bob) Was ist Test-Driven Development? 4 Quelle: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd Quelle des Bildes: http://memegenerator.net/instance/39552583?urlName=Uncle-Bob&browsingOrder=New&browsingTimeSpan=AllTime
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Fragen & Diskussionen Agenda 5
Abfolge von Bewegungen wie Angriffe, Verteidigungen und Gegenangriffe. Was ist eine Kata? Quelle des Bildes: http://kbl.bplaced.net/images/karate-Dateien/kata/0-Kata-Heian-Shodan.jpg
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Meine Buchempfehlung 9. Fragen & Diskussionen Agenda 7
abgeschlossene Übung zur Verbesserung der Fertigkeiten eines Programmierers. • Eine solche Code-Kata stellt ein Problem, welches von dem Programmierer gelöst werden soll. • Der programmierte Code zur Lösung des Problems ist nur ein Teil der Übung. Was ist eine Code-Kata?
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Fragen & Diskussionen Agenda 9
zur Lösung von Problemen. - die Kreativität. - die Disziplin. • Eine TDD Code-Kata vermittelt... - die Prinzipien der testgetriebenen Entwicklung. - den Unterschied zwischen TDD und Pseudo-TDD. - eine Arbeitsweise, bei der ein Debugger nicht benötigt wird. Warum sollten Software Entwickler TDD Code-Katas durchführen?
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Fragen & Diskussionen Agenda 12
Fahrers und die des Navigators. • Der Fahrer... - schreibt nach TDD sowohl die Testfälle, als auch den produktiven Code. - spricht laut über das, was er gedenkt zu programmieren. • Der Navigator... - sitzt neben dem Fahrer und denkt voraus. Er versucht die Route des Fahrers im Kopf abzufahren, bevor der Fahrer soweit ist. - behält die Übersicht und bleibt auf einer Meta-Ebene. - sagt dem Fahrer welchen Entwicklungsschritt er als nächstes durchführen sollte. - widerspricht dem Fahrer, wenn er die falsche Richtung einschlägt. • Ist der Fahrer erschöpft oder kommt nicht weiter, sollte der Navigator das „Steuer“ übernehmen und mit dem Fahrer die Rollen tauschen. Praktiken bei der Durchführung einer TDD Code-Kata Driver & Navigator
eine noch nicht realisierte Funktionalität. 2. Programmierer 2 schreibt den produktiven Code, der von dem Testfall von Programmierer 1 erwartet wird. 3. Programmierer 2 schreibt einen neuen fehlschlagenden Testfall, für eine weitere noch nicht realisierte Funktionalität. 4. Programmierer 1 schreibt den produktiven Code, der von dem Testfall von Programmierer 2 erwartet wird. Praktiken bei der Durchführung einer TDD Code-Kata Ping-Pong
wird nur durch den Code kommuniziert. • Notizen sind weder auf Papier, noch als Kommentar im Code erlaubt. Praktiken bei der Durchführung einer TDD Code-Kata Silent Programming Quelle: http://blog.adrianbolboaca.ro/2013/10/pair-programming-game-silent-programming/
auf 2. Stelle einen Timer auf 2 Minuten und starte ihn 3. Schreibe einen Testfall und den produktiven Code 1. Wenn der Timer klingelt und die Tests schlagen fehl, dann lösche die Änderungen (Revert im VCS) 2. Sind die Tests erfolgreich, wenn der Timer klingelt, dann übernehme die Änderungen (Commit im VCS) 4. Starte den Timer erneut 5. Refaktoriere den Code 1. Wenn der Timer klingelt und die Tests schlagen fehl, dann lösche die Änderungen (Revert im VCS) 2. Sind die Tests erfolgreich, wenn der Timer klingelt, dann übernehme die Änderungen (Commit im VCS) 6. Starte den Timer erneut 7. Starte erneut mit Schritt 3 Praktiken bei der Durchführung einer TDD Code-Kata Taking Baby Steps Quelle: http://blog.adrianbolboaca.ro/2013/03/taking-baby-steps/
er den kleinsten möglichen Schritt zu der eigentlichen Anforderung abbildet. 2. Lasse den Test laufen, um den Fehlschlag des Tests zu sehen. 3. Programmiere den produktiven Code innerhalb der Testmethode, um die Erwartung des Tests zu erfüllen. 4. Refaktoriere den produktiven Code, um Redundanzen zu entfernen oder das Design der Software zu verbessern. 5. Starte erneut mit Schritt 1 und schreibe einen neuen Test. Praktiken bei der Durchführung einer TDD Code-Kata TDD as if you meant it Quelle: http://coderetreat.org/facilitating/activities/tdd-as-if-you-meant-it
neue Abstraktionen wie Methoden oder Klassen usw., wenn diese das Design der Software verbessern! - Extrahiere nur dann eine neue Methode, wenn innerhalb der Testmethoden in dem produktiven Code ein Duplikat existiert. - Erzeuge nur dann eine neue Klasse und bewege Methoden aus der Testklasse hinein, wenn eine Gruppierung von Methoden erkennbar wird. Praktiken bei der Durchführung einer TDD Code-Kata TDD as if you meant it Quelle: http://coderetreat.org/facilitating/activities/tdd-as-if-you-meant-it
3. Was ist eine Code-Kata? 4. Warum sollten Software Entwickler TDD Code-Katas durchführen? 5. Praktiken bei der Durchführung einer TDD Code-Kata 6. Ein Beispiel: Die String Calculator Kata 7. Welche TDD Code-Katas gibt es noch? 8. Fragen & Diskussionen Agenda 20
an. • Ein Testframework wie JUnit wird benötigt. ODER • Lade das vorbereitete Projekt herunter: - Web Addresse: https://github.com/marhan/StringCalculatorKata - Git Repo: [email protected]:marhan/StringCalculatorKata.git Ein Beispiel: Die String Calculator Kata Setup der Entwicklungsumgebung
add(String number) - Die Methode nimmt Nummern entgegen und berechnet ihre Summe. - Bei einer leeren Eingabe wird „0“ zurück gegeben. - Nummern können durch ein Komma getrennt sein. - Beispieleingaben: „“ oder „1“ oder „1,2“ Ein Beispiel: Die String Calculator Kata Aufgabe 1
bis Aufgabe 5. • Fortgeschrittene bis Aufgabe 9. - Als fortgeschritten gilt, wer die Aufgaben 1-5 in weniger als 30 Minuten beendet. Ein Beispiel: Die String Calculator Kata Weitere Aufgaben
Development einsetzen? 3. Was ist eine Kata? 4. Was ist eine Code-Kata? 5. Warum sollten Software Entwickler TDD Code-Katas durchführen? 6. Praktiken bei der Durchführung einer TDD Code-Kata 7. Ein Beispiel: Die String Calculator Kata 8. Welche TDD Code-Katas gibt es noch? 9. Fragen & Diskussionen Agenda 25
- http://codingkata.net/Katas/Beginner/FizzBuzz • Roman Numbers Kata - http://codingdojo.org/cgi-bin/wiki.pl?KataRomanNumerals • Conway‘s Game of Life - http://coderetreat.org/gol • Bowling Game Kata - http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata Welche TDD Code-Katas gibt es noch?
Development einsetzen? 3. Was ist eine Kata? 4. Was ist eine Code-Kata? 5. Warum sollten Software Entwickler TDD Code-Katas durchführen? 6. Praktiken bei der Durchführung einer Code-Kata 7. Ein Beispiel: Die String Calculator Kata 8. Welche TDD Code-Katas gibt es noch? 9. Fragen & Diskussionen Agenda 27
Dojo von Emmanuel Gaillot - http://codingdojo.org/ • Blog Artikel von Peter Provost - http://www.peterprovost.org/blog/2012/05/02/kata-the-only-way-to-learn-tdd • Blog Artikel von Dan Bunea - http://bloggingabout.net/blogs/danbunea/archive/2005/12/07/10480.aspx • Blog von Adrian Bolboaca - http://blog.adrianbolboaca.ro/ • Kata Liste von Dave Thomas - http://codekata.pragprog.com/codekata/ • Kata Manifesto - http://codingkata.net/KataManifesto Quellen 30