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.

3voto

quamrana Punkte 32950

Meine Antwort auf dieses Rätsel lautet: 100 % Zeilenabdeckung für den Code, den man testen kann, und 0 % Zeilenabdeckung für den Code, den man nicht testen kann.

Meine derzeitige Praxis in Python ist es, meine .py-Module in zwei Ordner aufzuteilen: app1/ und app2/ und beim Ausführen von Unit-Tests die Abdeckung dieser beiden Ordner zu berechnen und visuell zu überprüfen (I muss dies eines Tages automatisieren), dass app1 eine 100%ige Abdeckung und app2 eine 0%ige Abdeckung hat.

Wenn ich feststelle, dass diese Zahlen von der Norm abweichen, untersuche ich den Code und ändere ihn so, dass er der Norm entspricht.

Das bedeutet, dass ich empfehlen kann, eine 100%ige Zeilenabdeckung des Bibliothekscodes zu erreichen.

Gelegentlich überprüfe ich auch app2/, um zu sehen, ob ich dort irgendeinen Code testen kann, und wenn ich es kann, verschiebe ich ihn in app1/

Ich mache mir keine allzu großen Sorgen über die Gesamtabdeckung, da diese je nach Größe des Projekts stark variieren kann, aber im Allgemeinen habe ich 70 % bis über 90 % gesehen.

Mit Python sollte ich in der Lage sein, einen Smoke-Test zu entwickeln, der meine Anwendung automatisch ausführt, während ich die Abdeckung messe und hoffentlich ein Aggregat von 100 % erhalte, wenn ich den Smoke-Test mit den Unittest-Zahlen kombiniere.

3voto

user17222 Punkte 1691

Aus den verschiedenen Best-Practice-Papieren zu Engineering Excellence, die ich gelesen habe, geht im Allgemeinen hervor, dass 80 % des neuen Codes in Unit-Tests den größten Nutzen bringen. Eine Überschreitung dieses Prozentsatzes führt zu einer geringeren Anzahl von Fehlern im Verhältnis zum Aufwand, der betrieben wird. Dies ist eine bewährte Praxis, die von vielen großen Unternehmen angewendet wird.

Leider sind die meisten dieser Ergebnisse unternehmensintern, so dass es keine öffentliche Literatur gibt, auf die ich Sie verweisen kann.

3voto

Tony Pitale Punkte 1172

Wenn Sie seit geraumer Zeit Unit-Tests durchführen, sehe ich keinen Grund, warum es nicht 95%+ sein sollte. Mindestens jedoch habe ich immer mit 80 % gearbeitet, selbst wenn ich neu beim Testen war.

Diese Zahl sollte nur den im Projekt geschriebenen Code umfassen (ohne Frameworks, Plugins usw.) und vielleicht sogar bestimmte Klassen ausschließen, die vollständig aus Code bestehen, der aus Aufrufen von externem Code geschrieben wurde. Diese Art von Aufrufen sollte gespottet/gestubbt werden.

3voto

user11087 Punkte 282

Kurze Antwort: 60-80%

Lange Antwort: Ich denke, das hängt ganz von der Art Ihres Projekts ab. Ich beginne ein Projekt in der Regel mit Unit-Tests für jedes praktische Teil. Bei der ersten "Veröffentlichung" des Projekts sollten Sie einen ziemlich guten Basisprozentsatz haben, der auf der Art der Programmierung basiert, die Sie vornehmen. An diesem Punkt können Sie beginnen, eine Mindestcodeabdeckung "durchzusetzen".

2voto

Don Kirkby Punkte 46803

Überprüfen Sie Crap4j . Es ist ein etwas anspruchsvollerer Ansatz als die reine Codeabdeckung. Er kombiniert Codeabdeckungsmessungen mit Komplexitätsmessungen und zeigt Ihnen dann, welcher komplexe Code derzeit nicht getestet wird.

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