Jak odczytać raport z relacji ze Stambułu?

Zawsze używałem Jasmine do moich testów jednostkowych, ale ostatnio zacząłem używać Istanbul do przekazywania raportów pokrycia kodu. Chodzi mi o to, że rozumiem gist tego, co próbują mi powiedzieć, ale nie wiem, co każdy z tych procentów reprezentuje (stmt, Branches, Funcs, Lines). Do tej pory w Googlach nie byłem w stanie znaleźć solidnego wyjaśnienia / źródła.

Pytanie: tak jak powiedziałem, Rozumiem sedno tego, ale czy ktoś może zamieścić odpowiednie wyjaśnienie lub link do właściwego wyjaśnienia?

Pytanie trzecie: czy jest jakiś sposób, aby określić, które konkretne części kodu nie są objęte? Jak na razie bez grokingowania tego raportu, zgaduję.

-------------------|-----------|-----------|-----------|-----------|
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 |
-------------------|-----------|-----------|-----------|-----------|
Author: Yaron Schwimmer, 2014-10-28

3 answers

Istnieje wiele kryteriów pokrycia, z których główne to:

  • zakres funkcji czy każda funkcja (lub podprogram) w programie została wywołana?
  • zakres instrukcji czy każda instrukcja w programie została wykonana?
  • Branch coverage czy każda gałąź (zwana także DD-path) każdej struktury kontrolnej (np. w poleceniach if I case) została wykonana? Na przykład, jeśli podano polecenie if, czy zarówno gałęzie true, jak i false zostały stracony? Innym sposobem na powiedzenie tego jest to, czy każda krawędź w programie została wykonana?
  • zakres linii czy każda linia wykonywalna w pliku źródłowym została wykonana?

Dla każdego przypadku procent reprezentuje wykonywany kodvs nie wykonywany kod, który jest równy każdemu ułamkowi w formacie procentowym (np. 50% oddziałów, 1/2).

W raporcie plików:

  • 'E' oznacza 'else path not taken' , co oznacza, że dla oznaczonego if / else Instrukcja, ścieżka " if "została przetestowana, ale nie "else".
  • 'I' oznacza "if path not taken", co jest odwrotnym przypadkiem: "if" nie zostało przetestowane.
  • xN w lewej kolumnie oznacza ilość razy, ile linia została wykonana.
  • Nie wykonane linie lub fragmenty kodu zostaną podświetlone na Czerwono.

To zostało zweryfikowane dla Istanbul v0. 4. 0, nie jestem pewien, czy nadal dotyczy to kolejnych wersji, ale ponieważ ta Biblioteka jest oparta na solid Zasady teoretyczne, zachowanie nie powinno się zbytnio zmieniać w przypadku nowszych wersji.

Zawiera również kody kolorów -

Pink : oświadczenia nie objęte.

Orange : Funkcje Nie objęte.

Żółty : gałęzie nie pokryte.

Pełne dokumenty tutaj:

Https://istanbul.js.org

Aby uzyskać bardziej dogłębną teorię na temat pokrycia kodu:

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

Mam nadzieję, że to pomoże!
 224
Author: Amy Pellegrini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-09 00:55:27

Uruchomiony istanbul powinien również wygenerować plik HTML dla raportu (powinien znajdować się w folderze coverage). Ten HTML powinien dać ci szczegółowe informacje po kliknięciu na pliki / foldery.

Procent objętych funkcji jest obliczany przez liczbę funkcji, które zostały wywołane podczas testów, podzieloną przez całkowitą liczbę funkcji. To samo dotyczy linii i poleceń (które zwykle będą blisko siebie, chyba że masz bardzo długie polecenia). Gałęzie oznaczają punkty decyzyjne takie jak if-else bloki. Na przykład, powiedzmy, że Twój kod zawiera tylko jedną instrukcję if-else, a testy przechodzą tylko przez część if, ale nie przez część else, wtedy twój procent gałęzi powinien wynosić 50%.

Mam nadzieję, że to wszystko wyjaśni.
 8
Author: Yaron Schwimmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-29 16:02:28

Dodawanie do poprzednich odpowiedzi

%wypowiedzi jest obliczane przez przyjęcie procentu z liczby wypowiedzi objętych testem np. 12/18 * 100 = 66,67%. Oznacza to, że twój test obejmował tylko 66,67%.

Gałąź %jest również obliczana w ten sam sposób. To samo dotyczy twoich %funkcji i % linii.

W katalogu głównym projektu znajduje się folder coverage, który zawiera wyjście HTML twojego testu. Kliknij na niego i zobacz go w przeglądarce. Powinieneś coś zobaczyć. like this

Obrazek pokazujący wynik twojego testu

Mam nadzieję, że to pomoże Ci lepiej zrozumieć.

 0
Author: Samuel Pinheiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-12 16:11:36