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:
-
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?)
-
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.
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.
0 Stimmen
Eine 100%ige Deckung ist das Minimum. Ich möchte wissen, ob ein Punk ein unerwartetes process.exit(1) eingeführt oder aus Spaß oder Unwissenheit irgendwo hingeworfen hat. Wenn man nicht jede Codezeile in einem Build ausführt, werde ich es einfach nicht wissen, bis dieser Code vielleicht irgendwann in der Produktion verwendet wird.
0 Stimmen
Ich denke, dass man sich das besser umgekehrt vorstellt. Die Codeabdeckung sagt sehr wenig aus, außer dass der Code ausgeführt wurde. LACK der Codeabdeckung andererseits bedeutet, dass der Code NIE ausgeführt wurde. Anstatt also eine hohe Codeabdeckung anzustreben, sollten wir vielleicht eher versuchen, so wenig ungetesteten Code wie möglich zu haben. (Der Grund für diese Unterscheidung ist, dass ausgeführter Code nicht unbedingt getesteter Code ist, aber nicht ausgeführter Code ist definitiv ungetesteter Code. IE: abgedeckter Code sollte nicht so sehr geschätzt werden, wie unabgedeckter Code vermieden werden sollte.)