webentwicklung-frage-antwort-db.com.de

Wie lese ich einen Istanbul Coverage Report?

Ich habe Jasmine immer für meine Unit-Tests verwendet, aber kürzlich habe ich mit Istanbul angefangen, um mir Berichte zur Code-Abdeckung zu geben. Ich meine, ich bekomme das Gist von dem, was sie mir zu sagen versuchen, aber ich weiß nicht wirklich, was jeder dieser Prozentsätze (Stmts, Branches, Funcs, Lines) darstellt. Bisher konnte ich keine guten Erklärungen/Ressourcen finden. 

Frage : Wie ich schon sagte, ich bekomme den Gist davon, aber kann jemand entweder eine richtige Erklärung oder einen Link zu einer richtigen Erklärung posten?

Tertiärfrage : Gibt es eine Möglichkeit zu ermitteln, welche Teile Ihres Codes nicht abgedeckt sind? Ohne diesen Bericht wirklich zu verachten, schätze ich im Grunde.

-------------------|-----------|-----------|-----------|-----------|
File               |   % Stmts |% Branches |   % Funcs |   % Lines |
-------------------|-----------|-----------|-----------|-----------|
   controllers/    |      88.1 |     77.78 |     78.57 |      88.1 |
      dashboard.js |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files          |      88.1 |     77.78 |     78.57 |      88.1 |
-------------------|-----------|-----------|-----------|-----------|
83
Scott Sword

Es gibt eine Reihe von Abdeckungskriterien, die wichtigsten sind:

  • Funktionsabdeckung Wurde jede Funktion (oder Subroutine) im Programm aufgerufen?
  • Anweisungsüberdeckung Wurde jede Anweisung im Programm ausgeführt?
  • Branch-Coverage Wurde jeder Zweig (auch als DD-Pfad bezeichnet) jeder Kontrollstruktur (wie in if- und case-Anweisungen) ausgeführt? Wurden beispielsweise bei gegebener if-Anweisung sowohl der wahre als auch der falsche Zweig ausgeführt? Eine andere Möglichkeit, dies zu sagen, ist, wurde jeder Edge im Programm ausgeführt?
  • Line cover Wurde jede ausführbare Zeile in der Quelldatei ausgeführt?

In jedem Fall stellt der Prozentsatz ausgeführten Code vs. nicht ausgeführten Code dar, der jedem Bruch im prozentualen Format (z. B. 50% ige Zweige, 1/2) entspricht.

Im Dateibericht:

  • 'E' steht für "else path not taken", also "else path not taken". Dies bedeutet, dass für die markierte if/else-Anweisung der "if" -Pfad getestet wurde, nicht aber "else".
  • 'I' steht für "Wenn Pfad nicht verwendet", was der umgekehrte Fall ist: Das "Wenn" wurde nicht getestet.
  • Die Variable xN in der linken Spalte gibt an, wie oft diese Zeile ausgeführt wurde.
  • Nicht ausgeführte Zeilen oder Code-Teile werden rot hervorgehoben.

Dies wurde für Istanbul v0.4.0 verifiziert. Ich bin nicht sicher, ob dies für nachfolgende Versionen weiterhin gilt. Da diese Bibliothek jedoch auf soliden theoretischen Prinzipien basiert, sollte sich das Verhalten für neuere Versionen nicht allzu sehr ändern.

Es enthält auch einige Farbcodes - 

Pink: Anweisungen nicht abgedeckt.

Orange: Funktionen werden nicht behandelt.

Gelb: Zweige nicht abgedeckt.

Vollständige Dokumente von Istanbul hier:

https://gotwarlost.github.io/istanbul/public/apidocs/index.html

Für eine ausführlichere Theorie zur Codeabdeckung:

https://en.wikipedia.org/wiki/Code_coverage

Ich hoffe es hilft!

131
Amy Pellegrini

Beim Ausführen von Istanbul sollte auch eine HTML-Datei für den Bericht erstellt werden (sollte sich im Abdeckungsordner befinden). In diesem HTML-Code erhalten Sie detaillierte Informationen, wenn Sie auf Dateien/Ordner klicken.

Der Prozentsatz der abgedeckten Funktionen wird anhand der Anzahl der Funktionen berechnet, die während des Tests aufgerufen wurden, geteilt durch die Gesamtzahl der Funktionen. Dasselbe gilt für Zeilen und Anweisungen (die normalerweise nahe beieinander liegen, es sei denn, Sie haben sehr lange Anweisungen). Zweige bedeuten Entscheidungspunkte wie if-else-Blöcke. Angenommen, Ihr Code enthält beispielsweise nur eine if-else-Anweisung, und Ihre Tests durchlaufen nur den Teil if, nicht jedoch den Teil else. In diesem Fall sollte der Prozentsatz der Zweige 50% betragen.

Hoffe das macht die Dinge klarer.

6
yarons

Hinzufügen zu den vorherigen Antworten

Die% -Anweisungen werden berechnet, indem ein Prozentsatz der Anzahl der von Ihrem Test abgedeckten Anweisungen verwendet wird, z. Dies bedeutet, dass Ihr Test nur 66,67% abdeckte.

Der% -Zweig wird auf dieselbe Weise berechnet. Gleiches für Ihre% Functions und % Zeilen.

In Ihrem Projektstammverzeichnis befindet sich ein Abdeckungsordner, der die HTML-Ausgabe Ihres Tests enthält. Klicken Sie darauf und betrachten Sie es im Browser. Sie sollten so etwas sehen

Bild, das die Ausgabe Ihrer Testergebnisse zeigt

Ich hoffe, das hilft dir, es besser zu verstehen.

0
Samuel Pinheiro