Ich habe diesen Blog von Joel Spolsky über 12 Schritte zu besserem Code gelesen . Das Fehlen von Test Driven Development hat mich wirklich überrascht. Also möchte ich die Frage an die Gurus werfen. Lohnt sich TDD nicht wirklich?
programming-practices
testing
code-quality
tdd
Aussenseiter
quelle
quelle
Antworten:
Testgetriebene Entwicklung war praktisch unbekannt, bevor Kent Becks Buch im Jahr 2002 herauskam, zwei Jahre nachdem Joel diesen Beitrag geschrieben hatte. Die Frage ist dann, warum Joel seinen Test nicht aktualisiert hat, oder ob TDD 2000 besser bekannt gewesen wäre, hätte er ihn zu seinen Kriterien gezählt?
Ich glaube, er hätte es nicht getan, aus dem einfachen Grund, dass es wichtig ist, dass Sie einen genau definierten Prozess haben, nicht die spezifischen Details dieses Prozesses. Aus dem gleichen Grund empfiehlt er die Versionskontrolle, ohne ein bestimmtes Versionskontrollsystem anzugeben, oder empfiehlt eine Bug-Datenbank, ohne eine bestimmte Marke zu empfehlen. Gute Teams verbessern und passen sich kontinuierlich an und verwenden Tools und Prozesse, die für ihre jeweilige Situation zu dieser bestimmten Zeit gut geeignet sind. Für einige Teams bedeutet das definitiv TDD. Für andere Teams nicht so sehr. Wenn Sie TDD einführen, stellen Sie sicher, dass es sich nicht um eine Frachtkultmentalität handelt .
quelle
Joel hat dies an einigen Stellen konkret angesprochen.
Er hat erklärt, dass die Dinge Tests nicht in der Lage sind, viele wichtige Fragen zu erfassen, insbesondere subjektive Fragen wie "ist die Benutzeroberfläche dieser Software scheiße?" Seiner Meinung nach haben wir uns bei Windows Vista zu sehr auf automatisierte Tests verlassen.
Er hat geschrieben, dass nach seiner Erfahrung die Arten von Fehlern, die Benutzer tatsächlich finden, in zwei Kategorien fallen: 1) diejenigen, die im allgemeinen Sprachgebrauch auftreten und die die Programmierer selbst gefunden hätten, wenn sie ihren eigenen Code ausgeführt hätten, bevor sie ihn verwendeten , oder 2) Randfälle, die so undurchsichtig sind, dass niemand daran gedacht hätte, Tests zu schreiben, um sie überhaupt abzudecken. Er hat angegeben, dass nur ein sehr kleiner Prozentsatz der Fehler, die er und sein Team in FogBugz behoben haben, die Art von Dingen sind, die Unit-Tests abgefangen hätten. (Ich kann diesen Artikel jetzt nicht finden, aber wenn jemand weiß, welchen ich meine, können Sie den Link hier bearbeiten.)
Und er schreibt, dass es mehr Ärger geben kann, als es sich lohnt, besonders wenn Ihr Projekt zu einem sehr großen Projekt mit vielen Komponententests heranwächst und Sie dann (absichtlich) etwas ändern und am Ende eine sehr große Anzahl defekter Komponententests erhalten. Er verwendet speziell die Probleme, die Unit-Tests verursachen können, als Grund, warum er sie nicht als 13. Punkt in den Joel-Test aufgenommen hat, selbst wenn die Leute vorschlagen, dass er sollte.
quelle
Joel Spolsky selbst hat diese Frage bereits 2009 beantwortet :
quelle
Niemand außer Joel konnte das mit Sicherheit beantworten. Aber wir können einige Gründe / Beobachtungen ausprobieren.
Zuallererst fehlt das Testen beim Joel-Test nicht
Zweitens besteht die ganze Idee des Joel-Tests (so wie ich es verstehe) darin, schnelle Ja-Nein-Fragen zu stellen. "Machst du TDD?" wird nicht genau passen (Antwort könnte sein: "einige von uns", "für diesen Teil des Codes" oder "wir machen Unit-Test".
Drittens, glaube ich, hat niemand gesagt (selbst Joel), dass diese Punkte, bei denen "die Einzigen Zeit wert sind" (übrigens "programmieren Sie"), nicht darauf stehen, nur dass dies gute, schnelle Fragen sind, die Sie stellen sollten, wenn Sie kommen mit einem Software-Team in Kontakt zu treten, sei es als zukünftiges Teammitglied oder sogar als Kunde - dies ist eine Liste, die ich einigen nicht-technischen Leuten in meiner Umgebung gegeben habe, die nach Hinweisen suchten, wie gut / schlecht ihre eigene IT-Abteilung war. Es ist nicht alles, aber es ist wirklich schlimm, in drei Minuten zu schlagen.
quelle