문제

은 무엇인 코드 범위와 어떻게 그것을 측정하는가?

나는 이 질문에 대한 우리의 자동화 테스트 코드를 커버합니다.그것은 것 같다는,외부에 자동화 도구,그것은 더 예술보다는 과학.이 있습의 실제 예제 코드를 사용하는 방법을 범위는?

도움이 되었습니까?

해결책

코드 적용 범위는 자동화 된 테스트가 실행중인 동안 코드의 몇 줄/블록/아크 수를 측정 한 것입니다.

코드 커버리지는 특수 도구를 사용하여 바이너리를 계측하여 추적 통화를 추가하고 계측 된 제품에 대한 전체 자동 테스트 세트를 실행하여 수집합니다. 좋은 도구는 실행 된 코드의 백분율뿐만 아니라 데이터를 드릴링하고 특정 테스트 중에 어떤 코드 라인이 실행되었는지 정확하게 볼 수 있습니다.

우리 팀이 사용합니다 마젤란 - 사내 코드 커버리지 도구 세트. .NET Shop 인 경우 Visual Studio에는 코드 범위를 수집하는 도구가 통합되어 있습니다. 당신은 또한 몇 가지 사용자 정의 도구를 굴릴 수도 있습니다 이 기사 설명합니다.

C ++ 상점이라면 인텔에는 일부가 있습니다. 도구 나는 그것을 사용하지 않았지만 Windows와 Linux 용으로 실행됩니다. 또한 GCC 용 GCOV 도구가 있다고 들었지만 그것에 대해 아무것도 모르고 링크를 줄 수는 없습니다.

우리가 그것을 사용하는 방법 - 코드 커버리지는 각 이정표에 대한 출구 기준 중 하나입니다. 실제로 3 개의 코드 커버리지 메트릭 (개발 팀의 단위 테스트), 시나리오 테스트 (테스트 팀) 및 결합 된 범위가 있습니다.

BTW, 코드 커버리지는 얼마나 많은 테스트를하는지에 대한 좋은 지표이지만, 제품을 얼마나 잘 테스트하는지에 대한 좋은 지표는 아닙니다. 품질을 보장하기 위해 코드 커버리지와 함께 사용해야하는 다른 지표가 있습니다.

다른 팁

코드 적용 범위는 기본적으로 테스트에서 커버되는 코드의 양을 테스트합니다. 따라서 90% 코드 범위가있는 경우 테스트 중에 적용되지 않는 코드의 10%가 있음을 의미합니다. 코드의 90%가 다루어졌지만 다른 각도에서 살펴 봐야한다고 생각할 수도 있습니다. 100% 코드 커버리지를 받기 위해 무엇을 중지합니까?

좋은 예는 다음과 같습니다.

if(customer.IsOldCustomer()) 
{
}
else 
{
}

이제 위의 코드에는 두 개의 경로/분기가 있습니다. 항상 "예"지점을 치는 경우 다른 부분을 다루지 않으며 코드 커버리지 결과에 표시됩니다. 이제는 다루지 않은 것을 알고 다른 부분을 커버하기 위해 테스트를 작성할 수 있기 때문에 이것은 좋습니다. 코드 커버리지가 없다면 시한 폭탄에 앉아 폭발하는 것입니다.

ncover 코드 커버리지를 측정하는 좋은 도구입니다.

그냥 기억,"100%코드 범위는"의미하지 않는 모든 것이 완전히 테스트-는 동안 그것은 모든 줄의 코드를 테스트하고,그것이 의미하지 않는다 그들은 시험에서 매(일반)습니다.

내가 사용하는 코드 범위를 강조하는 비트 코드는 아마 테스트를 작성한다.예를 들면,무엇이든 코드 검사 도구를 보여줍니다 myImportantFunction()지 않 실행 실행하는 동안 현재 장치-테스트,그들은 아마도 개선 할 수 있습니다.

기본적으로,100%코드 범위를 의미하지 않는 코드가 완벽하다.으로 사용 가이드를 쓰는 더 포괄적(단위)테스트합니다.

많은 이전 답변에 대해 몇 가지 포인트를 보완합니다.

코드 적용 범위는 테스트 세트가 소스 코드를 얼마나 잘 포괄하는지를 의미합니다. 즉, 일련의 테스트 사례에 의해 다루는 소스 코드가 어느 정도까지.

위의 답변에서 언급 한 바와 같이, 경로, 조건, 기능, 진술 등과 같은 다양한 적용 범위 기준이 있지만 추가 된 추가 기준은 다음과 같습니다.

  1. 조건 커버리지 : True 및 False에 대해 평가할 모든 부울 표현.
  2. 의사 결정 범위 : 부울 표현뿐만 아니라 한 번에 대해 평가할 수있는 것이 아니라 모든 후속 IF-ELSEIF-ELSE 본체를 다루는 것입니다.
  3. 루프 커버리지 : 평균, 가능한 모든 루프가 한 번, 한 번 이상, 0 시간 이상 실행되었습니다. 또한 최대 한도에 대한 가정이 있다면, 가능하면 최대 제한 시간과 최대 한도 시간보다 1을 테스트하십시오.
  4. 입장 및 종료 보장 : 가능한 모든 통화 및 반환 값을 테스트하십시오.
  5. 매개 변수 값 커버리지 (PVC). 매개 변수에 대한 가능한 모든 값이 테스트되었는지 확인합니다. 예를 들어, 문자열은 일반적으로 다음 중 하나 일 수 있습니다. ) 이중 바이트 문자열. 가능한 각 매개 변수 값을 테스트하지 않으면 버그가 남을 수 있습니다. 이 중 하나만 테스트하면 각 라인이 다루어지면서 100% 코드 커버리지가 발생할 수 있지만 7 가지 옵션 중 하나만 테스트되므로 매개 변수 값의 14.2% 적용 범위 만 의미합니다.
  6. 상속 범위 : 객체 지향 소스의 경우, 기본 클래스에서 참조하는 파생 된 객체를 반환 할 때, 형제 객체를 반환하는 경우 평가를 위해 적용 범위를 테스트해야합니다.

참고 : 정적 코드 분석에는 도달 할 수없는 코드 또는 교수형 코드가 있는지, 즉 다른 기능 호출이 다루지 않는 코드가 있는지 확인합니다. 그리고 다른 정적 커버리지. 정적 코드 분석에 따르면 100% 코드가 다루어 졌다고해도 가능한 모든 코드 적용 범위를 테스트 한 경우 테스트 세트에 대한 보고서를 제공하지 않습니다.

코드 적용 범위는 이전 답변에서 잘 설명되었습니다. 따라서 이것은 질문의 두 번째 부분에 대한 대답입니다.

코드 커버리지를 결정하기 위해 세 가지 도구를 사용했습니다.

  1. Jtest - 주니트를 통해 구축 된 독점 도구. (단위 테스트도 생성합니다.)
  2. 코베르 투라 - Junit 테스트와 쉽게 결합하여 보고서를 생성 할 수있는 오픈 소스 코드 커버리지 도구.
  3. 엠마 - 또 다른 - 이것은 단위 테스트와 약간 다른 목적으로 사용했습니다. 최종 사용자가 웹 응용 프로그램에 액세스 할 때 커버리지 보고서를 생성하는 데 사용되었습니다. 이는 웹 테스트 도구 (예 : CANOO)와 함께 일반적인 최종 사용자 사용 중에 다루는 코드의 양을 알려주는 매우 유용한 커버리지 보고서를 제공 할 수 있습니다.

우리는이 도구를 사용합니다

  • 개발자가 좋은 단위 테스트를 작성했음을 검토하십시오
  • 블랙 박스 테스트 중에 모든 코드가 통과되었는지 확인하십시오

코드 적용 범위는 단순히 테스트 된 코드의 척도입니다. 측정 할 수있는 다양한 적용 범위 기준이 있지만 일반적으로 총 커버리지를 구성하는 프로그램 내의 다양한 경로, 조건, 기능 및 진술입니다. 코드 커버리지 메트릭은 이러한 적용 범위 기준을 각각 실행하는 테스트의 백분율입니다.

프로젝트에서 단위 테스트 범위를 추적하는 방법에 따라 정적 코드 분석 도구를 사용하여 추적합니다.

Perl의 경우 우수합니다 개발 :: 커버 내 모듈에서 정기적으로 사용하는 모듈.

빌드 및 설치가 Module :: 빌드에 의해 관리되는 경우 간단히 실행할 수 있습니다. ./Build testcover 서브, 라인 및 조건 당 범위를 알려주는 멋진 HTML 사이트를 얻으려면 멋진 색상으로 어떤 코드 경로를 다루지 않았는지 쉽게 알 수 있습니다.

이전 답변에서 코드 적용 범위가 잘 설명되었습니다. 작업중인 경우 도구와 관련된 지식을 추가하고 있습니다. iOS 그리고 OSX 플랫폼 인 Xcode는 코드 범위를 테스트하고 모니터링 할 수있는 시설을 제공합니다.

참조 링크 :

https://developer.apple.com/library/archive/documentation/developertools/conceptual/testing_with_xcode/chapters/07-code_coverage.html

https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51

둘 다 Xcode를 통한 코드 커버리지 학습 및 탐색에 유용한 링크입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top