Was sind die besten Ressourcen, um TDD zu lernen? [geschlossen]

27

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?

Eric
quelle
1
Sie könnten an meiner Seite mit Ressourcen zum Erlernen von TDD interessiert sein .
Xpmatteo
9
Ich mag diese Frage. Wenn Sie dies hier nicht fragen sollten, wo können Sie Fragen zu Programmierbuchempfehlungen stellen?
Guettli

Antworten:

18

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:

  • Wenn Sie den Test vor dem Code schreiben, überlegen Sie, wie Sie Ihren Code aufrufen und das Ergebnis zurückerhalten. Dies bedeutet, dass Sie die API zunächst auf der Grundlage Ihrer Verwendung entwerfen . Dies führt häufig zu einer besseren API.
  • Ihr Codierungsstil wird sich ändern, weil Sie modularer denken MÜSSEN, um Teile des Codes anstelle des Ganzen testen zu können.
  • Sie werden auch an einen Punkt gelangen, an dem Sie einen größeren Block sicher herausziehen und einen neuen Block einfügen können, anstatt dasselbe zu tun, da Sie den Test bestanden haben. Ich habe das kürzlich mit einer Date-Parsing-Bibliothek gemacht, da das Original zu nachsichtig war.

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.


quelle
8

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

Fehler
quelle
Fahren Sie fort und fügen Sie den Link zur Google-Präsentation hinzu. Ich denke, Eric's Repräsentant erlaubt noch keine Kommentare.
ocodo
+1 @Slomojo: Stimmt, also stimmen Sie die Frage ab ... um ihn über 15 Wiederholungen zu treiben, wenn ich mich richtig erinnere. Ich werde mich nach dem Video umsehen.
Fehler
1
@blunders ... ich hab ihn auf 11 gebracht!
ocodo
+1 @Slomojo: Zum Up-Voting wurde in meiner Antwort der Link zum Google Tech Talk gefunden und hinzugefügt. Prost!
Fehler
8

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.

Péter Török
quelle
Ich denke, dies ist mein Lieblingsbuch und das, das meine Arbeitsweise am meisten beeinflusst hat, nicht nur in Bezug auf TDD, sondern auch auf Software Dev im Allgemeinen. Ich muss auch zugeben, dass ich nicht viele TDD-Bücher gelesen habe, also vertraue mir vielleicht nicht so sehr.
antonio.fornie
4

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).

vjones
quelle
4

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.

Matt
quelle