Wenn ich eine neue Funktion implementieren oder einen Fehler beheben muss, versuche ich normalerweise, die Situation mit einem Test neu zu erstellen. Ich verbringe manchmal ungefähr 3 Stunden damit, mir Geräte auszudenken und den Test zu schreiben. Die eigentliche Implementierung oder Fehlerbehebung dauert weniger als 1 Stunde.
Gibt jemand anderes da draußen mindestens dreimal länger Zeit aus, um einen Test zu schreiben, als eine Funktion tatsächlich zu implementieren oder einen Fehler zu beheben? Wie hoch ist das akzeptable Verhältnis zwischen dem Schreiben von Tests und dem Schreiben von Code?
unit-testing
Thierry Lam
quelle
quelle
Antworten:
Dies hängt von der Komplexität des Fehlers oder der Funktion ab. Ich erinnere mich an ein Projekt, das einmal eine 1,5-wöchige Entwicklungsschätzung hatte ... und eine 3-monatige Testschätzung. Die Codeänderung war klein, eine Handvoll Zeilen hier und da, aber sie wirkte sich auf verschiedene Weise auf eine Reihe von Komponenten eines Versicherungssystems aus und musste daher sehr gründlich getestet werden. Ein anderes Mal gab es einen Fehler, der eine Klammer an der falschen Stelle betraf. Es dauerte 2 Stunden, um es zu finden, 2 Sekunden, um es zu reparieren, aber ungefähr eine Woche, um Dutzende von Szenarien zu testen, die möglicherweise von der Änderung der Logik betroffen waren.
Im Allgemeinen mache ich mir keine Sorgen über das Verhältnis von Codierungszeit zu Testzeit, da es einfach keine Möglichkeit gibt, genau zu sein. Ich finde, dass in einigen Projekten ein projektbezogenes Verhältnis auftritt, das normalerweise Standard (zum Projekt) ist, aber selbst dann kann sich das später ändern.
Verbringen Sie so viel Zeit wie nötig, um sicher zu sein, dass der Code ordnungsgemäß funktioniert.
quelle
Wie wäre es, wenn Sie genug Zeit damit verbringen, die Tests zu schreiben, bis Sie gezeigt haben, dass die Funktion wie beabsichtigt funktioniert oder der Fehler korrekt behoben wurde.
Jede Situation wird anders sein; Es kann kein Verhältnis geben. Einige Tests dauern ein Zehntel der Zeit wie die Implementierung, andere hunderte Male.
quelle
Ich habe einmal eine Umfrage durchgeführt, nachdem ich Unit-Tests in einem Projekt eingeführt hatte. Das Ergebnis: Der Zeitaufwand für das Schreiben von Tests betrug erneut etwa 40% des Zeitaufwands für die Implementierung. Wir strebten dort jedoch keine vollständige Berichterstattung an, und es war ein etabliertes Projekt mit einer starken Struktur und Konventionen.
quelle
Ich würde sagen, dass die Zeitcodierung im Vergleich zu den Zeitschreibeinheitstests ungefähr gleich sein sollte. Vielleicht manchmal ein bisschen mehr. Schauen Sie sich diesen Artikel über das SO- Verhältnis der Zeit an, die für das Codieren im Vergleich zu Unit-Tests aufgewendet wurde
quelle
Zählst du richtig? Um genau abzurechnen, wie viel Zeit Sie für Tests aufwenden, müssen Sie den Code ohne den Test schreiben.
Wenn Sie wirklich drei Stunden gebraucht haben, um den Test zu schreiben, und einen, um Code zu schreiben, damit er erfolgreich ist, werden Sie möglicherweise mehr als 5 Stunden brauchen, um denselben Fehler zu beheben, ohne Tests zu schreiben.
Ja, ich verbringe sehr viel mehr Zeit mit dem Test als mit dem eigentlichen Fixcode.
quelle