답변:
코드 적용 범위는 자동화 된 테스트가 실행되는 동안 코드의 라인 / 블록 / 아크가 얼마나 많이 실행되는지를 측정 한 것입니다.
코드 범위는 특수 도구를 사용하여 바이너리를 계측하여 추적 호출을 추가하고 계측 된 제품에 대해 전체 자동화 테스트를 실행하여 수집됩니다. 좋은 도구를 사용하면 실행되는 코드의 백분율뿐만 아니라 데이터를 드릴하고 특정 테스트 중에 실행 된 코드 줄을 정확하게 볼 수 있습니다.
우리 팀은 사내 코드 커버리지 도구 인 Magellan을 사용 합니다. .NET 상점 인 경우 Visual Studio에는 코드 적용 범위를 수집하는 통합 도구가 있습니다. 다음과 같은 일부 사용자 정의 도구를 굴릴 수도 있습니다.이 기사에서 설명하는 .
C ++ 상점 인 경우 인텔은 Windows 및 Linux에서 실행되는 도구 를 사용하지만 아직 사용하지는 않았습니다. 또한 GCC를위한 gcov 도구가 있다고 들었지만 이에 대해 아무것도 몰라 링크를 제공 할 수 없습니다.
우리가 그것을 사용하는 방법에 관해서-코드 범위는 각 이정표에 대한 출구 기준 중 하나입니다. 실제로 단위 테스트 (개발 팀의), 시나리오 테스트 (테스트 팀의) 및 결합 된 범위의 3 가지 코드 범위 메트릭이 있습니다.
BTW, 코드 범위는 얼마나 많은 테스트를 수행하고 있는지에 대한 좋은 척도이지만 제품을 얼마나 잘 테스트하고 있는지에 대한 좋은 척도는 아닙니다. 품질을 보장하기 위해 코드 적용 범위와 함께 사용해야하는 다른 메트릭이 있습니다.
코드 적용 범위는 기본적으로 테스트 중 코드의 양을 테스트합니다. 따라서 코드 적용 범위가 90 % 인 경우 테스트 대상이 아닌 10 %의 코드가 있음을 의미합니다. 코드의 90 %가 적용된다고 생각할 수도 있지만 다른 각도에서 봐야합니다. 100 % 코드 커버리지를 얻는 데 방해가되는 것은 무엇입니까?
좋은 예는 다음과 같습니다.
if(customer.IsOldCustomer())
{
}
else
{
}
위의 코드에는 두 개의 경로 / 분기가 있습니다. 항상 "YES"분기를 치면 else 부분을 덮지 않고 코드 적용 결과에 표시됩니다. 이것은 다루지 않은 것을 알았으므로 else 부분을 다루는 테스트를 작성할 수 있기 때문에 좋습니다. 코드 적용 범위가 없다면 폭발하기 위해 시한 폭탄에 앉아있는 것입니다.
NCover 는 코드 적용 범위를 측정하는 좋은 도구입니다.
"100 % code-coverage"가 모든 것을 완벽하게 테스트한다는 것을 의미하지는 않습니다. 모든 코드 라인이 테스트되었다는 것을 의미하지만 모든 (일반적인) 상황에서 테스트되는 것은 아닙니다.
코드 커버리지를 사용하여 테스트를 작성해야 할 코드 비트를 강조 표시합니다. 예를 들어, 현재 단위 테스트를 실행하는 동안 myImportantFunction ()이 실행되지 않는 코드 범위 도구가 표시되면 개선해야합니다.
기본적으로 100 % 코드 범위가 코드가 완벽하다는 것을 의미하지는 않습니다. 보다 포괄적 인 (단위) 테스트를 작성하기위한 안내서로 사용하십시오.
x
반환 한 함수가 있고 x/x
my_func (2)를 사용하여 테스트를 실행했다면 100 % 적용 범위를 갖지만 (함수 코드가 실행됨에 따라) 0이 매개 변수 일 때 큰 문제를 놓쳤습니다. 즉 , 100 % 적용 범위로도 필요한 모든 시나리오를 테스트 하지 않았습니다 .
이전 답변 중 몇 가지를 보완하면 다음과 같습니다.
코드 범위는 테스트 세트가 소스 코드를 얼마나 잘 포함하고 있는지를 의미합니다. 즉, 일련의 테스트 사례에 의해 소스 코드가 어느 정도까지 적용 되는가.
위의 답변에서 언급했듯이 경로, 조건, 기능, 진술 등과 같은 다양한 범위 기준이 있습니다. 그러나 추가 기준은 다음과 같습니다.
참고 : 정적 코드 분석은 도달 할 수없는 코드 또는 행잉 코드 (예 : 다른 함수 호출에서 다루지 않는 코드)가 있는지 확인합니다. 또한 다른 정적 범위. 정적 코드 분석에서 100 % 코드가 적용된다고보고하더라도 가능한 모든 코드 적용 범위가 테스트 된 경우 테스트 세트에 대한 보고서를 제공하지 않습니다.
코드 범위는 이전 답변에서 잘 설명되었습니다. 따라서 이것은 질문의 두 번째 부분에 대한 답변입니다.
코드 적용 범위를 결정하기 위해 세 가지 도구를 사용했습니다.
우리는 이러한 도구를 사용하여
Perl의 경우 모듈에서 정기적으로 사용 하는 우수한 Devel :: Cover 모듈이 있습니다.
빌드 및 설치가 Module :: Build에 의해 관리되는 ./Build testcover
경우 서브, 라인 및 조건 별 적용 범위를 알려주는 멋진 HTML 사이트를 얻기 위해 간단하게 실행할 수 있습니다 .
이전 답변에서 코드 범위는 잘 설명되었습니다. Xcode는 코드 작업 을 테스트하고 모니터링 할 수있는 기능을 제공하면서 플랫폼 iOS
과 작업중 인 경우 도구와 관련된 지식을 추가 하고 OSX
있습니다.
참조 링크 :
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
둘 다 Xcode를 사용하여 코드 적용 범위를 학습하고 탐색하는 데 유용한 링크입니다.
PHP의 경우 Sebastian Bergmann의 Github를 살펴보십시오.
PHP 코드 적용 정보에 대한 수집, 처리 및 렌더링 기능을 제공합니다.