Die Kosten für Unit-Tests
Unit-Tests ist ein wiederkehrendes Thema für mich in den letzten Wochen; zwischen reden Stackoverflow und anderen Foren und Tests, die ich für zwei laufende Projekte schreiben, Ich fragte ein paar Fragen, die tatsächlichen Kosten der Unit-Tests.
Dies ist vor allem ein Artikel von Thomas Brandt (Deutsch: “TDD in der (meiner) Praxis – Wunsch und Wirklichkeit”) das machte mich denken ernsthaft. Brandt beschreibt in seinem Artikel in der Tat recht gut diese Kluft zwischen Theorie und Praxis des Test Driven Development. Point Blank, Vielmehr hält es die Grundsätze der TDD;
Zunächst muss ich sagen, dass Test Driven Development, insbesondere das Prinzip der "ersten Test", ist ein ziemlich “sexy” entwickeln. Es kann sicherlich zur Verbesserung der Software-Architektur und hindert uns daran, sich bestimmter (klein) Fehler.
— Relativ freie Übersetzung von ca. T. Brandt
Er ist daher der Auffassung, wie ein mächtiges Werkzeug TDD – zumindest aus einer rein akademischen. Aber die unmittelbare Folge ist ein Zweifel;
Die Frage ist nur: zu welchem Preis?
Wie bereits erwähnt, außer T. Brandt und ich, viele andere Leute scheinen zu fragen, und die am häufigsten gestellte Frage lautet wie folgt: Ist das die Verwendung von Unit-Tests sie tut wirklich bessere Software, und dass die Bemühungen um investieren sie sind realistisch?
Kondensiert, Die Frage läuft darauf hinaus, eine einfache:
Es kostete mich, wie viel die Unit-Tests?
Oft ist die Frage betrifft, daß, wer wirft denken Unit-Tests sind zu teuer gelten konsequent. Ich erinnere mich an eine Diskussion, die ich über den Wert von insgesamt Testabdeckung hatte über dem theoretischen Ideal. Berichtet Anstrengungen zu unternehmen, sagte ich “nicht” zum Zeitpunkt.
Ab heute glaube ich, alle diese Fragen gestellt werden einfach böse, weil es nicht wissen, die Kosten für Unit-Tests ist wichtig, mehr:
Wie bezahle ich das Weglassen von Unit-Tests?
Und hier ist meine Antwort, dargestellt an einem konkreten Beispiel;
Eines meiner aktuellen Projekte umfassen eine große Anzahl von verteilten Komponenten. Ich entdeckte einen Fehler im Entwurf, der mich zwang, Refactoring beiden Klassen. Alle habe ich etwa 1 Stunde. Launch Unit-Tests? Über 30 zweite. 30 Sekunden, entdeckte ich, dass einige Verhaltensweisen nicht wie ursprünglich geplant waren. Ich brauchte etwa 20 Minuten für Korrekturen. Schreiben von Tests kostete mich ungefähr 45min.
Die Bilanzsumme beträgt etwa zwei Stunden.
Ohne Unit-Tests, Wahrscheinlich hätte ich nicht bemerkt, einige der Fehler sofort. Ich hätte, wenn 1 Zeit Refactoring, über einen mehr oder weniger bestimmbaren, sicherlich über mehrere Tage verteilt, um die Probleme beheben unbemerkt beim Wechsel. Die Wahrscheinlichkeit, dass dieses Mal weit über eine Stunde ist relativ hoch (Debug “Hand”, Wiederherstellung der Voraussetzungen in Multi-Threaded-Anwendungen usw.…).
Ich für meinen Teil, Ich finde, dass zu einem definierten Zeitpunkt berechnen (mit Tests für eine realistische Teil der Software – nicht 100%) Interessanter ist, dass die Navigation im Dunkeln geübt.
Experiment!



