716 Stimmen

Was ist ein angemessener Prozentsatz für die Codeabdeckung von Unit-Tests (und warum)?

Wenn Sie einen Mindestprozentsatz an Code-Abdeckung für Unit-Tests vorschreiben würden, vielleicht sogar als Voraussetzung für die Übergabe an ein Repository, wie hoch wäre er?

Erläutern Sie bitte, wie Sie zu Ihrer Antwort gekommen sind (denn wenn Sie nur eine Zahl ausgewählt haben, hätte ich das auch selbst tun können ;)

0 Stimmen

Heutzutage verfügen viele IDEs über Abdeckungshervorhebung. Stellen Sie sicher, dass Sie zumindest die wichtigsten Teile des Codes abdecken, als dass Sie daran denken, einen bestimmten Prozentsatz zu erreichen.

0 Stimmen

Unit-Tests können per Definition einzelne Methoden, ganze Klassen oder ganze Module sein. Selbst wenn Sie alle Methoden testen, testen Sie möglicherweise nicht alle Pfade oder alle Kombinationen, auf die ein Benutzer stößt. Mit Anweisungs- und Verzweigungsabdeckung und MCDCs wird die Situation noch komplexer.

0 Stimmen

Warum wird diese Frage nicht gelöscht oder ordnungsgemäß bearbeitet? Sie hat so viel Interesse geweckt, aber sie ist völlig irreführend.

2voto

Betrachtung der Berichterstattung aus einer anderen Perspektive: Gut geschriebener Code mit einem klaren Kontrollfluss ist am einfachsten abzudecken, am einfachsten zu lesen und in der Regel der am wenigsten fehlerhafte Code. Wenn man Code mit Blick auf Klarheit und Abdeckbarkeit schreibt und die Unit-Tests parallel zum Code schreibt, erhält man IMHO die besten Ergebnisse.

2voto

Mark Menchavez Punkte 1611

Meiner Meinung nach lautet die Antwort: "Das hängt davon ab, wie viel Zeit Sie haben. Ich versuche, 100 % zu erreichen, aber ich mache keinen Aufstand, wenn ich es mit der Zeit, die ich habe, nicht schaffe.

Wenn ich Unit-Tests schreibe, trage ich einen anderen Hut als bei der Entwicklung von Produktionscode. Ich denke darüber nach, was der getestete Code zu tun behauptet und welche Situationen ihn möglicherweise zerstören können.

Ich befolge in der Regel die folgenden Kriterien oder Regeln:

  1. Dass der Unit Test eine Form der Dokumentation über das erwartete Verhalten meines Codes sein sollte, d.h. die erwartete Ausgabe bei einer bestimmten Eingabe und die Ausnahmen, die er auslösen kann und die die Kunden abfangen sollten (Was sollten die Benutzer meines Codes wissen?)

  2. Dass der Unit Test mir helfen soll, Was-wäre-wenn-Bedingungen zu entdecken, an die ich vielleicht noch nicht gedacht habe. (Wie kann ich meinen Code stabil und robust machen?)

Wenn diese beiden Regeln nicht zu einer 100%igen Abdeckung führen, dann ist das eben so. Aber sobald ich die Zeit habe, analysiere ich die nicht abgedeckten Blöcke und Zeilen und stelle fest, ob es noch Testfälle ohne Unit-Tests gibt oder ob der Code überarbeitet werden muss, um die überflüssigen Codes zu eliminieren.

1voto

Rob Scott Punkte 449

Ich denke, dass es vor allem darauf ankommt, die Entwicklung der Berichterstattung im Laufe der Zeit zu kennen und die Gründe für Veränderungen in diesem Trend zu verstehen. Ob Sie die Veränderungen im Trend als gut oder schlecht ansehen, hängt von Ihrer Analyse der Gründe ab.

1voto

dimarzionist Punkte 18137

Ich denke, das beste Symptom für eine korrekte Codeabdeckung ist, dass die Anzahl der konkreten Probleme, die mit Hilfe von Unit-Tests behoben werden können, in etwa der Größe des von Ihnen erstellten Unit-Test-Codes entspricht.

1voto

codeLes Punkte 2903

Dies muss davon abhängen, in welcher Phase des Lebenszyklus Ihrer Anwendungsentwicklung Sie sich befinden.

Wenn Sie schon eine Weile in der Entwicklung tätig sind und bereits eine Menge Code implementiert haben und erst jetzt erkennen, dass Sie sich Gedanken über die Codeabdeckung machen müssen, dann müssen Sie Ihre aktuelle Abdeckung überprüfen (falls vorhanden) und dann diese Basislinie verwenden, um für jeden Sprint Meilensteine festzulegen (oder einen durchschnittlichen Anstieg über einen Zeitraum von Sprints), was bedeutet, dass Sie Codeschulden auf sich nehmen, während Sie dem Endbenutzer weiterhin einen Mehrwert liefern (zumindest meiner Erfahrung nach ist es dem Endbenutzer völlig egal, ob Sie die Testabdeckung erhöht haben, wenn er keine neuen Funktionen sieht).

Je nach Bereich ist es nicht unvernünftig, 95 % zu erreichen, aber ich würde sagen, dass Sie im Durchschnitt mit 85 % bis 90 % rechnen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X