13. WAS IST TDD?
• Angewandtes Softwaredesign und -entwicklung
• Erst Tests, dann den Code
• Red, Green, Refactor
• Clean Code that works
Wednesday, January 23, 13
59. FIZZ BUZZ
• Es wird eine Zahl eingegeben.
• Ist die Zahl durch 3 teilbar, ist das Ergebnis “fizz”.
• Ist die Zahl durch 5 teilbar, ist das Ergebnis “buzz”.
• Ist die Zahl sowohl durch 3 als auch durch 5 teilbar, ist das
Ergebnis “fizzbuzz”.
Wednesday, January 23, 13
68. TEST FIRST
• Erst den Test, dann den Quellcode
• Anforderungen in Test übersetzen
• One problem a time
Wednesday, January 23, 13
69. describe(FizzBuzz, function () {
use strict;
it(should return 1, if 1 is provided, function () {
expect(fizzbuzz(1)).toEqual(1);
});
});
Wednesday, January 23, 13
71. EINFACHSTE LÖSUNG
• Ziel: Der Test muss grün werden.
• Fokus auf die aktuelle Problemstellung
Wednesday, January 23, 13
72. FAKE IT ‘TIL YOU MAKE IT
• Umsetzung mit fixen Werten
• Tests werden sehr schnell grün
• Wenig Code
• Kein Over-Engineering
Wednesday, January 23, 13
73. var fizzbuzz = function () {
use strict;
return 1;
};
Wednesday, January 23, 13
75. TRIANGULATION
• Mehrere Tests mit verschiedenen Werten
• Klare Implementierung
• Saubere Abstraktion
• Tests mit Grenzwerten
Wednesday, January 23, 13
76. it(should return 2, if 2 is provided, function () {
expect(fizzbuzz(2)).toEqual(2);
});
Wednesday, January 23, 13
80. OBVIOUS IMPLEMENTATION
• Keine unnötigen Tests
• Wenn 1 und 2 funktionieren, sollten auch alle weiteren Zahlen
funktionieren.
• Zu viel Aufwand für Tests
Wednesday, January 23, 13
81. BABY STEPS
• Die kleinst möglichen Schritte
• Sehr kurze Feedback-Scheifen
• Schnelle, übersichtliche Tests
Wednesday, January 23, 13
82. it(should return fizz, if 3 is provided, function () {
expect(fizzbuzz(3)).toEqual('fizz');
});
Wednesday, January 23, 13
99. UND JETZT?
• Nimm teil an einem Coding Dojo
• Führe Coding Katas durch
• Pair Programming
• Austausch mit anderen Entwicklern
Wednesday, January 23, 13
100. CHEAT SHEET
• Write a failing Test • Triangulate
• Write the simplest code to • Keep your test and model
test code separate
• Refactor to remove duplication • Isolate your tests
• Write the assertion first and • Test should test one thing
work backwards
• Don’t refactor with a failing
• See the test fail test
• Write meaningful tests • Maintain your Tests
Wednesday, January 23, 13
102. VIELEN DANK!
Sebastian Springer
Mayflower GmbH
Mannhardtstr. 6
80538 München
Deutschland
@basti_springer
https://github.com/sspringer82
Wednesday, January 23, 13