In meiner Firma versuche ich zu begründen, warum wir TDD machen sollten. Derzeit tun die meisten Entwickler einfach alles, um das Projekt fertigzustellen, und fügen anschließend Unit-Tests hinzu, um die Manager-Metriken zu erfüllen. Alle Beispiele von seriösen Unternehmen, die TDD durchführen und die Vorteile sehen, würden sehr geschätzt.
14
Antworten:
Eine Studie von 4 Projekten in IBM und Microsoft. Veröffentlicht in der Zeitschrift Emperical Software Engineering .
Empirische Studien belegen, dass testgetriebene Entwicklung die Qualität verbessert
quelle
In dem kürzlich erschienenen Buch "Making Software: What works and why we believe it" gibt es ein Kapitel über TDD mit einer Fallstudie. Sie können jedoch enttäuscht sein, da die Studie, wenn ich mich richtig erinnere, keine wirklichen Vorteile für TDD aufgedeckt hat. Die Fallstudie war trotzdem interessant, und das Buch im Allgemeinen ist eines der besten Software-Bücher, die ich in letzter Zeit gelesen habe. Es enthält viele Fallstudien zu Dingen wie Pair Programming, Code Review usw.
quelle
Schauen Sie sich dies auf jeden Fall an: TDD Proven Effective! Oder ist es?
Der Autor hat viele gute Argumente dafür, dass TDD nicht allzu effektiv ist (imo, obwohl es zu Tode gehypt wurde)
quelle
Überprüfen Sie, wie viel Zeit Sie und der Kunde mit dem manuellen Testen der Software verbracht haben. Vergleichen Sie dies mit einer Schätzung, wie lange automatische Tests im TDD-Stil gedauert hätten. Den Unterschied einstecken
Nach meiner Erfahrung sind die automatisierten Tests von TDD Gold wert, da sie eine Versicherung darstellen und enorme Mengen an manuellen Tests überflüssig machen
Wie Andres F betonte, können Sie diese Vorteile nur durch automatisierte Tests erzielen, nicht notwendigerweise durch TDD. TDD erfordert jedoch automatisierte Tests, anstatt nachträglich gedacht oder nett zu sein
Wenn Sie gezwungen sind, zuerst über Tests nachzudenken, müssen Sie sich auch mit qualitätsbezogenen Problemen wie Modularität, Schnittstellendesign usw. befassen, bevor Sie mit dem Schreiben von Code beginnen.
Persönlich glaube ich, dass einer der größten Vorteile von TDD darin besteht, dass das Schreiben des Tests zuerst die Spezifikation dessen, was der Code tatsächlich zu tun hat, im Kopf behält, während Sie den Code schreiben, anstatt es herauszufinden -als-du-Code.
quelle
Sie möchten sich dafür einsetzen: Schlagen Sie vor, dies für das nächste Projekt zu tun, und lernen Sie dann daraus. Wenn sich herausstellt, dass es für Sie gut funktioniert, werden Sie es hoffentlich weiterhin verwenden. Wenn das Projekt länger gedauert hat und / oder Sie Ihre ganze Zeit damit verbracht haben, Tests zu schreiben, anstatt zu codieren, werden Sie es mit Sicherheit als "" ausgeben ein Fehler.
Ich denke, die reale Lösung ist (wie die meisten Dinge) eine Zwischenlösung. Sie möchten Tests, aber Sie möchten nicht, dass die Tests wichtiger sind als das Projekt.
(Ich persönlich denke, TDD ist eine Modeerscheinung, hört sich theoretisch gut an, aber in der Praxis ... nicht so gut. Ich finde, Integrationstests sind viel wichtiger, aber das könnte genau die Art von komplexen Projekten sein, an denen ich arbeite.)
quelle
Ich arbeite seit 2 Jahren mit TDD, und wo ich zu der Zeit arbeitete, waren wir alle zurückhaltend, einschließlich der Manager. Es stellte sich jedoch bald als das Richtige heraus. Die Vorteile, die wir bald bemerkten, waren
Die Manager würden nicht wissen, wie sie alle an einer Sache interessiert sind "Haben Sie fertig". Aber dann beschweren sie sich, wenn die Software immer wieder kaputt geht, ohne es zu merken. Mit einer guten Abdeckung und vernünftigen Tests. Es ist nicht die Menge, sondern die Qualität, die Sie wirklich sehen können, wenn jemand eine Funktionalität bricht. Leider ist es auch schwierig, wenn Sie alleine sind. Ich hatte das gleiche Problem, da Sie möglicherweise Code ändern müssen, z. B. Basisklassen usw., damit Sie Teile der Software testbar machen können.
Ich möchte Ihnen ein Beispiel geben. Ich wollte das Repository verspotten, aber es gab keine Schnittstelle, und ich musste das Repository in meine Service-Schicht einfügen und daher einen Konstruktor im gesamten Shop hinzufügen / ändern Am Ende habe ich mehr als 200 Tests nur einen Bereich des Systems getestet und sie waren beeindruckt.
Ich mache normalerweise folgendes:
In Bezug auf Fallstudien fürchte ich, ich bin nicht sicher, ob ich welche gesehen habe. Sie müssen Ihr Projekt aufbauen und zu Ihren Fallstudien werden. Sie könnten auch beeindruckt sein.
Ich hoffe, es hilft
quelle