Ich möchte TDD lernen (und beherrschen). Was sind die besten:
- Bücher
- Webseiten
- Videos
- Liste der Übungen
- persönliche Worte der Weisheit
zum Lernen, Schätzen und Verwenden von TDD?
Ich möchte TDD lernen (und beherrschen). Was sind die besten:
zum Lernen, Schätzen und Verwenden von TDD?
Antworten:
Persönlich fand ich, dass das Lesen eines oder zweier JUnit-Aufsätze, in denen betont wurde, dass "Sie den Test vor dem Code schreiben", ausreichte, um mich zum Laufen zu bringen.
Der wichtigste Teil beim Erlernen dieser Technologie ist das Schreiben einer VIELE von testbasiertem Code , da Sie einige der grundlegendsten Methoden zum Schreiben von Code ändern müssen. Dinge wie:
Der beste Ort, um klein anzufangen, sind Ihre Dienstprogramme. Wenn Sie das nächste Mal eines benötigen, entwerfen Sie zunächst einfach, dass mit Tests viele Tests erstellt werden, die alle Ihre offiziellen Verwendungszwecke abdecken (einschließlich der Ereignisse, die mit übergebenen Nullwerten usw. geschehen sollen). Wenn alle Anwendungsfälle implementiert sind, sollten Sie in der Lage sein, diese zu verwenden Stellen Sie sicher, dass es wie erwartet funktioniert.
Ich habe auch die Erfahrung gemacht, dass gute Tests zusätzliche Arbeit als Dokumentation leisten können, da Sie eine Menge sehr präzisen Codes haben, der genau angibt, wie sich der Code in verschiedenen Situationen verhält, was sich leicht als richtig erweisen lässt (grüner Balken). Mit vorsichtigen Kommentaren bekommt man es nicht viel besser.
Für Java ist jUnit Version 4 wirklich nett.
Meiner Meinung nach geht es bei TDD mehr darum, den Code testbar zu machen, als Tests zu schreiben.
Natürlich können Sie einen Test vor dem Codieren schreiben, aber der ganze Grund, warum der Test geschrieben wird, ist, dass Sie codieren können - was Sie nicht davon abhält, Code zu schreiben, der schwer zu testen ist.
Schauen Sie sich das an, um ein besseres Bild von dem zu bekommen, was ich meine: Meine einheitliche Theorie der Fehler
Wenn Sie sich für das Konzept interessieren und mehr erfahren möchten, kommentieren Sie es einfach - und ich werde Sie auf eine aufgezeichnete Präsentation zum Thema von Google hinweisen.
AKTUALISIEREN:
So schreiben Sie sauberen, testbaren Code
Miško Hevery Presenting (Von GoogleTechTalks ) Bei Google in NYC und gesponsert von der Google Engineering Productivity Group
Abgesehen von einigen der bereits erwähnten Bücher, kann ich Grow Object-Oriented Software Guided by Tests empfehlen . Ich habe es noch nicht zu Ende gelesen, aber es ist eine wertvolle Lektüre, einschließlich der Geschichte eines ganzen, naturgetreuen TDD-Projekts, nicht nur vereinfachter Codebeispiele.
Ich habe zwei Bücher gelesen:
Testgetriebene Entwicklung: Am Beispiel von Kent Beck und
Unit Test Frameworks von Paul Hamil
Das Beck-Buch ist gut angesehen, aber ich habe erst mit Unit-Tests begonnen, als ich "Unit Test Frameworks" gelesen habe. Ich mache ein paar TDDs, füge aber auch Tests zu älterem Code hinzu, den ich warten muss (wenn ich kann).
Bearbeiten: Auch, wenn Sie einen Griff bekommen, empfehle ich, es auf ein aktuelles Projekt sofort zu verwenden. Für mich war dies der Zeitpunkt, an dem das eigentliche Lernen stattfand, und ich denke, das Buch "Unit Test Framework" war ein besseres Nachschlagewerk für diesen Zweck. (Ich habe nunit mit C # verwendet).
Auch wenn es nicht in erster Linie um TDD geht (obwohl es das Thema berührt und auch die Testbarkeit berücksichtigt), ist The Art of Unit Testing ein Buch, das ich empfehlen würde, da es Ihnen beibringt, wie man gute Tests schreibt.
Im Einzelnen erfahren Sie, wie Sie vertrauenswürdige, wartbare und lesbare Tests erstellen. Ich denke, dies ist der wichtigste Abschnitt des Buches, abgesehen von den Grundlagen zu Unit-Tests und Isolations-Frameworks. Es ist offensichtlich, dass, wenn Unit-Tests zu einem Schmerzpunkt werden oder die Arbeit eines Entwicklers reibungsloser gestalten, jeder Erfolg oder Nutzen davon begrenzt ist. Wenn jemand Zeit und Mühe investiert, um die Tests zu erstellen, sollte er in der Lage sein, den größten Ertrag aus dieser Investition zu ziehen.