Ich bin neu in der agilen, aber nicht testgetriebenen Entwicklung . Bei meinen Professoren am College drehte sich alles um die Idee von Tests, dann Code, dann Tests. Ich bin mir nicht sicher, warum ich das verstehe. Aus meiner Sicht sind es viele Vorlaufkosten, die sich höchstwahrscheinlich ändern werden, wenn sich Ihr Code weiterentwickelt.
So stelle ich mir TDD vor und warum es mich verwirrt. Wenn ich als TDD-Bauunternehmer ein Haus bauen würde.
Geben Sie mir alle Ihre Angaben (Geschichten).
Lassen Sie sich von den Spezifikationen genehmigen.
Teilen Sie alle Spezifikationen in Inspektionen auf, von denen ich glaube, dass sie erforderlich sind (siehe in die Zukunft).
Rufen Sie einen Inspektor an, um sich diese Punkte anzuschauen, und teilen Sie mir mit, dass ich die Inspektion nicht bestanden habe (Danke).
Baue das Haus.
Rufen Sie den Inspektor täglich zurück (vorbei an 2/100).
Oh, schieß, es gab ein Problem mit meinem Verständnis und jetzt muss ich 9 weitere Inspektionen hinzufügen und 27 davon ändern.
Rufen Sie den Inspektor an, der 1/109 passiert.
Verdammt. Warum gefällt der Inspektor nicht ... oh, ich habe diesen Methodennamen aktualisiert ...
Baue noch mehr.
UGGGGHHHH MEHR ÄNDERUNGEN lassen Sie mich den verdammten Inspektor aktualisieren. Oh, ich versage nicht.
Bin ich schon fertig
Okay, das ist vielleicht komisch, aber ich sehe einfach nicht, wie ich alle meine Methoden kennen sollte und wie die Dinge funktionieren, bis mein Code da ist. In 99% der Fälle muss ich zurückgehen und einen Komponententest auf irgendeine Weise aktualisieren und im Laufe der Zeit weitere hinzufügen. Es scheint nur rückwärts.
Was angemessener erscheint, ist DDT oder entwicklungsgetriebenes Testen, was die Community anscheinend so gut wie vergessen hat.
Nach meinem Verständnis würde DDT für ein Haus so aussehen:
Geben Sie mir alle Ihre Angaben (Geschichten).
Holen Sie sich die Genehmigung für die Spezifikationen und brechen Sie sie aus.
Starten Sie eine Einheit (das Fundament).
Machen Sie sich Notizen (Kommentare) zu einer kniffligen Logik.
Am Ende vor Beginn der nächsten Einheit die Inspektion durchführen (Test erstellen).
Beheben Sie alle gefundenen Probleme und überprüfen Sie sie erneut.
Genehmigt, dass dieses Gerät zum nächsten wechselt.
Wenn wir alle ehrlich sind, klingt das nicht menschlicher und konzentriert sich auf Entwickler und Unternehmen? Es scheint, dass Änderungen schneller vorgenommen werden können und ohne dass der Overhead TDD zu erstellen scheint.