태그 보관물: istanbul

istanbul

이스탄불 보장 보고서를 어떻게 읽습니까? 요지는 알지만 누군가가 적절한 설명이나 적절한

저는 항상 단위 테스트에 Jasmine을 사용했지만 최근에는 Istanbul을 사용하여 코드 검사 보고서를 제공하기 시작했습니다. 내 말은 그들이 나에게 말하려는 내용 의 요점 을 알지만 이러한 각 백분율이 나타내는 것이 무엇인지 실제로는 모르겠습니다 (Stmts, Branches, Funcs, Lines). 지금까지 인터넷 검색은 확실한 설명 / 리소스를 찾을 수 없었습니다.

질문 : 내가 말했듯이 요지는 알지만 누군가가 적절한 설명이나 적절한 설명에 대한 링크를 게시 할 수 있습니까?

3 차 질문 : 코드에서 다루지 않는 특정 부분을 식별 할 수있는 방법이 있습니까? 지금까지이 보고서를 정말 괴롭히지 않고 기본적으로 추측하고 있습니다.

-------------------|-----------|-----------|-----------|-----------|
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 |
-------------------|-----------|-----------|-----------|-----------|


답변

적용 범위 기준에는 여러 가지가 있으며 주요 기준은 다음과 같습니다.

  • 기능 범위 프로그램의 각 기능 (또는 서브 루틴)이 호출 되었습니까?
  • 명령문 적용 프로그램의 각 명령문이 실행 되었습니까?
  • 분기 범위 각 제어 구조 (예 : if 및 case 문)의 각 분기 (DD-path라고도 함)가 실행 되었습니까? 예를 들어 if 문이 주어 졌을 때 참과 거짓 분기가 모두 실행 되었습니까? 이것을 말하는 또 다른 방법은 프로그램의 모든 에지가 실행 되었습니까?
  • 라인 커버리지 소스 파일의 각 실행 가능한 라인이 실행 되었습니까?

각 사례에 대해 백분율은 실행 된 코드실행 되지 않은 코드를 나타내며 백분율 형식의 각 분수와 같습니다 (예 : 50 % 분기, 1/2).

파일 보고서에서 :

  • 'E' ‘else path not taken’을 나타내며 표시된 if / else 문에 대해 ‘if’경로가 테스트되었지만 ‘else’가 아님을 의미합니다.
  • 'I' ‘if’가 테스트되지 않은 경우 인 ‘if not taken’을 의미합니다.
  • xN좌항 라인이 실행되었는지 시간의 양이다.
  • 실행되지 않은 줄이나 코드 조각은 빨간색으로 강조 표시됩니다.

이것은 Istanbul v0.4.0에 대해 확인되었습니다. 이것이 후속 버전에도 여전히 적용되는지 확실하지 않지만 라이브러리가 견고한 이론적 원칙에 기반하고 있기 때문에 새로운 버전에 대해 동작이 너무 많이 변경되어서는 안됩니다.

또한 몇 가지 색상 코드를 제공합니다.

분홍색 : 설명이 적용되지 않습니다.

주황색 : 해당 기능이 없습니다.

노란색 : 가지가 덮이지 않습니다.

전체 이스탄불 문서 :

https://istanbul.js.org

코드 커버리지에 대한 심층 이론 :

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

도움이 되었기를 바랍니다.


답변

istanbul을 실행하면 보고서에 대한 HTML 파일도 생성되어야합니다 (coverage 폴더에 있어야 함). 이 HTML은 파일 / 폴더를 클릭 할 때 드릴 다운 정보를 제공해야합니다.

포함 된 함수의 백분율은 테스트 중에 호출 된 함수 수를 총 함수 수로 나눈 값으로 계산됩니다. 행과 명령문도 마찬가지입니다 (매우 긴 명령문이 없으면 일반적으로 서로 가깝습니다). 분기는 if-else블록 과 같은 결정 지점을 의미 합니다. 예를 들어 코드에 if-else명령문이 하나만 포함되어 있고 테스트가 if부분을 통과 하지 않고 부분 만 통과 else한다고 가정하면 분기 비율은 50 % 여야합니다.

그것이 일을 더 명확하게 해주기를 바랍니다.


답변

이전 답변에 추가

% Statements는 테스트에서 다루는 문 수의 백분율을 사용하여 계산됩니다 (예 : 12/18 * 100 = 66.67 %). 이는 귀하의 테스트가 66.67 %만을 차지했음을 의미합니다.

% Branch도 같은 방식으로 계산됩니다. % Functions 및 % lines와 동일합니다.

프로젝트 루트 디렉토리에는 테스트의 HTML 출력이 포함 된 커버리지 폴더가 있습니다. 그것을 클릭하고 브라우저에서 봅니다. 다음과 같은 것이 보일 것입니다.

테스트 결과의 출력을 보여주는 이미지

이것이 당신이 그것을 더 잘 이해하는 데 도움이되기를 바랍니다.


답변