Ich bin ziemlich neu im TDD-Ansatz und meine ersten Experimente besagen, dass das Schreiben von 1 Zeile Funktionscode etwa 2-3 Zeilen Testcode bedeutet. Für den Fall, dass ich 1000 LOC schreiben werde, wird die gesamte Codebasis einschließlich der Tests ungefähr 3500 LOC sein.
Wird das als normal angesehen? Wie ist das Verhältnis in Code, den Sie schreiben?
testing
unit-testing
tdd
metrics
Andrey Agibalov
quelle
quelle
Antworten:
1: 3 ist bei TDD normal.
Aus meiner Erfahrung und auch aus anderen Zitaten erinnere ich mich.
quelle
Es gibt Variationen, die auf unterschiedlichen Codierungsstilen und Sprachen basieren. Unabhängig von der von Ihnen verwendeten Sprache sind Sie jedoch die größte Variation.
Robert Martin hat einmal gesagt:
Das hat mich zum Nachdenken gebracht. Spezifischere Tests bedeuten mehr Testcode. Mehr generischer Produktionscode bedeutet weniger Code, daher sollten die Test / Code-Verhältnisse steigen, wenn sich der Code weiterentwickelt.
Aber warte, das ist auch nicht gut. In bestimmten Fällen, z. B. wenn Sie einen bestimmten Algorithmus definieren, stehen möglicherweise nur 6-10 Codezeilen mit ein paar "if" -Zeilen, einer Weile und möglicherweise 2-3 Rekursionen zur Verfügung. Ich kann Ihnen sagen, dass der Code wahrscheinlich mehr als 100 Zeilen Testcode enthalten wird.
In einem realen Projekt, das etwas größer als nur ein paar Algorithmen ist, sollte das Test / Code-Verhältnis irgendwo zwischen 1: 1 und 2: 1 liegen. Wenn es über 2: 1 geht, ist es ein Geruch, dass Sie Tests haben, die überarbeitet oder gelöscht werden sollten (oder vielleicht Code, der schwer zu testen ist). Sie sollten in Ihre Tests immer den gleichen Aufwand an Sorgfalt und Umgestaltung investieren wie in Ihrem Produktionscode.
Die beste Antwort auf Ihre Frage ist vielleicht "Cyclomatic Complexity" . Je höher die zyklomatische Komplexität Ihrer Methode ist, desto exponentiell mehr Tests müssen Sie schreiben, um alle Fälle abzudecken.
quelle
Das Verhältnis wird abhängig von der Größe Ihrer Methoden variieren. Die Größe Ihrer Methoden hängt vom Programmierstil, der Sprache und der Problemdomäne ab.
Wenn Ihre Methoden kurz sind, ist 3: 1 angemessen. Wenn Ihre Methoden lang sind, ist 3: 1 auf der hohen Seite.
Um Ihre Frage zu beantworten, kommt es darauf an. :-)
quelle
Für softwarekritische Anwendungen beträgt das übliche Verhältnis einen Testtag für jeweils 10 funktionale LoC.
Dabei geht es bei TDD nicht um Tests, sondern um Spezifikationen.
quelle
Die Größe meines Testcodes ist ungefähr halb so groß wie der "tatsächliche" Code insgesamt. Andernfalls ist dies ein Hinweis darauf, dass Ihre Tests zu komplex sind und / oder Ihr Code zu schwer zu testen ist und / oder Ihr Code zu dicht / komplex ist.
Oder Sie testen einfach zu viel und verschwenden Ihre Zeit damit, die Rendite zu verringern.
Siehe auch "Wann ist ein Unit-Test ungeeignet oder unnötig?"
quelle
Mein Verhältnis liegt bei 2-1 bis 10-1 (Code zum Testen). Stellen Sie sicher, dass es beim Testen um Wert / Verhalten und nicht um die Implementierung geht.
quelle