PHP 테스트에서 코드 적용 범위를 측정하려면 어떻게해야합니까?
PHP의 코드 커버리지 측정에는 테스트 스위트 실행 중에 어떤 라인이나 분기가 실행되는지 추적하는 도구를 사용하는 도구를 사용하는 것이 포함됩니다. 이 계측은 일반적으로 실행 경로를 기록하는 응용 프로그램에 추가 코드를 추가하여 작동합니다. 프로세스는 일반적으로 다음 단계를 포함합니다.
계측 : 코드 커버리지 도구는 PHP 코드 (논리를 변경하지 않고)를 수정하여 실행을 추적합니다. 이것은 종종 "계측"이라는 프로세스를 통해 수행됩니다. 이 도구는 테스트 중에 어떤 부품을 기록했는지 기록하는 코드에 프로브를 삽입합니다. 테스트 실행 : 기존 PHPUNIT (또는 기타 테스트 프레임 워크) 테스트를 기기 코드에 대해 실행합니다. 프로브는 각 테스트 중에 실행 된 코드의 일부 부분을 기록합니다. 보고서 생성 : 테스트가 완료된 후 커버리지 도구는 결과를 요약 한 보고서를 생성합니다. 이 보고서는 일반적으로 코드의 어떤 라인, 기능 및 분기가 실행되었으며 그렇지 않은지를 보여줍니다. 종종이를 백분율로 표현합니다 (예 : 80% 코드 적용 범위는 테스트 중에 코드의 80%가 실행되었음을 의미합니다). 분석 및 개선 : 테스트에서 다루지 않은 코드의 영역을 식별하기 위해 보고서를 검토합니다. 이를 통해 테스트 전략의 잠재적 차이를 정확히 찾아내어보다 포괄적이고 강력한 테스트를 초래합니다. 특정 방법은 선택한 도구 (아래 설명)에 따라 다르지만 일반적인 원칙은 기기, 테스트,보고 및 개선과 동일합니다. 계측은 일반적으로 생산 환경에 영향을 미치지 않도록 코드베이스 사본에서 발생합니다.
PHP 코드 커버리지를 측정하는 데 가장 적합한 도구는 무엇입니까?
몇 가지 우수한 도구는 PHP 코드 범위를 측정 할 수 있습니다. 가장 인기 있고 널리 권장되는 것은 xdebug 입니다. Xdebug는 PHP를위한 강력한 디버깅 및 프로파일 링 도구이며 코드 커버리지 기능이 높게 평가됩니다. 그것은 PhPunit 및 기타 테스트 프레임 워크와 완벽하게 통합됩니다.
다른 도구가 있지만 Xdebug의 기능, 커뮤니티 지원 및 광범위한 채택의 조합으로 인해 주요 선택이됩니다. 일부 대안에는 다음이 포함됩니다.
-
- PHPUNIT의 내장 범위 : PHPUNIT 자체는 기본 코드 커버리지 기능이 있지만 XDEBUG에 종종 더 포괄적 인 결과를 얻기 위해 의존합니다. 이미 PHPUNIT를 사용하고 있으며 간단한 통합을 원한다면 좋은 출발점입니다.
- Clover : Clover는 상세한보고 및 분석을 제공하는 상업 코드 커버리지 도구입니다. 강력하지만 유료 옵션입니다.
- 이스탄불 : Istanbul (또는 그 파생 상품)은 JavaScript 코드 커버리지 도구이며 PHP에 직접적으로는 그렇지 않지만 PHP를 JavaScript로 전송하는 프레임 워크를 사용하는 경우 적용 할 수 있습니다 (
PHPUnit과의 힘, 유연성 및 통합으로 인한 권장 선택은 PHP에서 코드 커버리지 보고서를 어떻게 해석 하는가?
코드 적용 범위 보고서는 일반적으로 여러 가지 방법으로 데이터를 제시하는 방법 :
- 라인 커버리지 : 테스트 중에 실행 된 코드의 비율을 보여줍니다. 높은 라인 커버리지 백분율 (예 : 80% 이상)은 일반적으로 양호한 것으로 간주되지만 유일한 지표는 아닙니다.
- 기능/방법 커버리지 : 이것은 적어도 한 번은 실행 된 기능 또는 방법의 비율을 나타냅니다.
-
- 지점 범위 : 다른 경로의 비율을 측정합니다. 지점 범위는 종종 라인 커버리지보다 달성하기가 더 어려우며 시험 품질의보다 강력한 지표로 간주됩니다. 조건부 논리 (
if
, else
, switch
문)에 특히 중요합니다. - 명세서 보도 : 이것은 라인 커버리지와 유사하지만 여러 줄에 걸쳐있을 수있는 진술을 설명합니다.
귀하의 코드가 부기가 아닙니다. 코드 적용 범위가 높을 수 있지만 여전히 중요한 시나리오를 놓칠 수 있습니다. 코드의 중요한 섹션에서 높은 커버리지를 달성하는 데 중점을 둡니다 (예 : 오류 처리, 복잡한 논리). 특정 영역의 낮은 적용 범위는 누락되거나 부적절한 테스트를 가리 킵니다. 해당 영역의 적용 범위 개선 우선 순위를 정합니다. 100% 적용 범위는 거의 달성 할 수 없거나 필요하지 않으며, 노력하면 지나치게 복잡하거나 많은 가치를 부여하지 않는 글쓰기 테스트로 이어질 수 있습니다. 높은 커버리지와 실제 테스트 작성 사이의 균형을 목표로합니다.
PHP 코드 적용 범위를 개선하기위한 모범 사례가 있습니까?
PHP 코드 범위 개선을위한 체계적인 접근 방식이 필요합니다. 이는 처음부터 테스트 가능성에 대해 생각하고 있기 때문에 본질적으로 코드 적용 범위가 향상됩니다.
중요한 섹션 우선 순위 : 오류 처리, 데이터 검증 및 복잡한 알고리즘과 같은 응용 프로그램에서 가장 중요한 부분을 테스트하는 데 중점을 둡니다. 이 영역에는 버그가 포함될 가능성이 높습니다. 테스트 가능성에 대한 리팩토러 : 테스트하기 어려운 레거시 코드가있는 경우 더 테스트 할 수 있도록 리팩터를 리팩터링하십시오. 여기에는 대규모 기능을 더 작고 관리하기 쉬운 장치로 분류하는 것이 포함될 수 있습니다. 외부 의존성 (데이터베이스, API)을 처리 할 때, 조롱 및 스터브 기술을 사용하여 테스트에서 코드를 격리하고 테스트에서 종속성을 피하고 정기적으로 검토하는지에 대한 규정을 피하십시오. 적용 범위가 낮은 지역에 집중하십시오. 해당 영역의 적용 범위를 개선하기위한 목표 테스트를 작성하십시오.
100%이상 집착하지 마십시오. 코드의 가장 중요한 부분을 포괄하는 의미있는 테스트 작성에 중점을 둡니다. 일부 부품은 본질적으로 테스트하기가 어려울 수 있거나 불필요 할 수 있습니다.
정기적으로 코드 커버리지를 실행하기 위해 코드 커버리지를 CI/CD 파이프 라인에 통합하여 시간이 지남에 따라 커버리지를 모니터링하고 새로운 기능을 추가하거나 존재하는 코드를 변경함에 따라 분해하지 않도록 보장합니다.
PHP를 개선 할 수 있습니다. 신뢰할 수있는 응용 프로그램. 코드 커버리지는 목표 자체가 아니라 더 나은 테스트를 작성하는 데 도움이되는 도구입니다.
위 내용은 PHP 테스트에서 코드 커버리지를 어떻게 측정 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!