SpeedTrap은 콘솔에서 바로 느리게 실행되는 PHPUnit 테스트를 보고합니다.
많은 요인이 테스트 실행 시간에 영향을 미칩니다. 가변 대기 시간(데이터베이스, 네트워크 등) 및 테스트 시스템의 기본 로드로부터 적절하게 분리되지 않은 테스트로 인해 테스트 실행 시간이 변동될 수 있습니다.
SpeedTrap은 느린 테스트를 식별하는 데 도움이 되지만 해당 테스트가 느린 이유를 설명할 수는 없습니다. 느린 코드를 구체적으로 식별하기 위해 Blackfire.io를 사용하여 테스트 스위트를 프로파일링하는 것을 고려해 보십시오.
SpeedTrap은 Composer를 사용하여 설치됩니다. require-dev
종속성으로 추가하세요.
composer require --dev johnkary/phpunit-speedtrap
프로젝트의 phpunit.xml
파일에 다음 코드를 추가하여 모든 기본값을 활성화합니다.
<phpunit bootstrap="vendor/autoload.php"> ... <확장자> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </확장자> </phpunit>
이제 테스트 스위트를 실행해 보세요. 하나 이상의 테스트 실행이 속도 저하 임계값(기본적으로 500ms)을 초과하는 경우 SpeedTrap은 모든 테스트가 완료된 후 콘솔에 해당 테스트에 대해 보고합니다.
SpeedTrap은 다음 매개변수도 지원합니다.
SlowThreshold - 테스트가 "느린" 것으로 간주되는 밀리초 수(기본값: 500ms)
reportLength - 보고서에 포함된 느린 테스트 수(기본값: 10개 테스트)
각 매개변수는 phpunit.xml
에 설정됩니다.
<phpunit bootstrap="vendor/autoload.php"><!-- ... 여기에 다른 제품군 구성 ... --><extensions> <extension class="JohnKaryPHPUnitExtensionSpeedTrap"> <인수> <배열> <element key="slowThreshold"> <integer>500</integer> </element> <요소 키="보고서 길이"> <integer>10</integer> </element> </배열> </인수> </확장> </확장자> </phpunit>
일부 프로젝트에는 실행하는 데 오랜 시간이 걸리는 몇 가지 복잡한 테스트가 있습니다. 개별 테스트 사례에 대해 서로 다른 속도 저하 임계값을 설정할 수 있습니다.
@slowThreshold
주석은 각 테스트 케이스에 대한 사용자 지정 속도 저하 임계값을 설정할 수 있습니다. 이 숫자는 기본 임계값보다 높거나 낮을 수 있으며 해당 특정 테스트에 대한 기본 임계값 대신 사용됩니다.
클래스 SomeTestCase는 PHPUnitFrameworkTestCase를 확장합니다. {/** * @slowThreshold 5000 */공용 함수 testLongRunningProcess() {// 실행하는 데 시간이 더 오래 걸리는 코드} }
@slowThreshold 0
설정하면 해당 테스트가 느린 것으로 보고되지 않습니다.
phpunit.xml에서 활성화된 경우 느린 테스트를 위한 SpeedTrap 프로필. 그러나 PHPUNIT_SPEEDTRAP
이라는 환경 변수를 사용하면 확장 기능을 활성화하거나 비활성화할 수 있습니다.
$ PHPUNIT_SPEEDTRAP="disabled" ./vendor/bin/phpunit
Travis CI는 새 코드를 저장소에 푸시한 후 클라우드에서 테스트를 실행하는 데 널리 사용됩니다.
1단계) phpunit.xml에서 SpeedTrap을 활성화합니다. 그러나 테스트를 실행할 때 프로파일링을 비활성화하려면 PHPUNIT_SPEEDTRAP="disabled"
설정합니다.
<phpunit bootstrap="vendor/autoload.php"> ... <php> <env name="PHPUNIT_SPEEDTRAP" value="disabled" /> </php> <확장자> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </확장자> </phpunit>
2단계) Travis CI에서 실행할 때 느린 테스트를 위해 프로파일링하도록 PHPUNIT_SPEEDTRAP="enabled"
로 .travis.yml
구성합니다.
언어: phpphp: - 7.3환경: - PHPUNIT_SPEEDTRAP="활성화됨"
3단계) Travis CI 빌드 출력을 보고 콘솔에 인쇄된 속도 저하 보고서를 읽습니다.
Travis CI 문서 - 환경 변수
1단계) phpunit.xml에서 SpeedTrap을 활성화합니다. 모든 테스트 스위트 실행 중에 속도 저하 보고서가 출력됩니다.
<phpunit bootstrap="vendor/autoload.php"> ... <확장자> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </확장자> </phpunit>
2단계) Travis CI에서 실행할 때 프로파일링을 끄려면 PHPUNIT_SPEEDTRAP="disabled"
로 .travis.yml
구성합니다.
언어: phpphp: - 7.3환경: - PHPUNIT_SPEEDTRAP="비활성화"
3단계) Travis CI 빌드 출력을 보고 속도 저하 보고서가 콘솔에 인쇄되지 않는지 확인합니다.
가끔 느린 테스트를 프로파일링하려는 경우에 유용합니다.
1단계) SpeedTrap을 활성화하도록 phpunit.xml을 설정하지만 다음과 같이 PHPUNIT_SPEEDTRAP="disabled"
설정하여 속도 저하 프로파일링을 비활성화합니다.
<phpunit bootstrap="vendor/autoload.php"> ... <php> <env name="PHPUNIT_SPEEDTRAP" value="disabled" /> </php> <확장자> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </확장자> </phpunit>
2단계) 명령줄에서 phpunit
실행할 때 다음과 같이 환경 변수 PHPUNIT_SPEEDTRAP="enabled"
전달하여 이 실행에 대해서만 속도 저하 프로파일링을 활성화합니다.
$ PHPUNIT_SPEEDTRAP=활성화됨 ./vendor/bin/phpunit
Symfony Framework에는 자체 PHPUnit 버전을 설치하고 프로젝트의 작곡가.json 또는 작곡가.lock 파일에 정의된 내용을 무시하는 Symfony/phpunit-bridge 패키지가 함께 제공됩니다. ls vendor/bin/.phpunit/
명령을 사용하여 설치되는 PHPUnit 버전을 확인하세요.
Symfony/phpunit-bridge를 사용하면 SYMFONY_PHPUNIT_REQUIRE
환경 변수를 사용하여 phpunit을 설치하는 동안 추가 종속성을 정의할 수 있습니다.
simple-phpunit
스크립트에 대한 환경 변수를 설정하는 가장 쉬운 방법은 phpunit.xml.dist를 사용하는 것입니다.
<phpunit bootstrap="vendor/autoload.php"> <php> <env name="SYMFONY_PHPUNIT_REQUIRE" value="johnkary/phpunit-speedtrap:^4"/> <env name="SYMFONY_PHPUNIT_VERSION" 값="9"/> </php> <확장자> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </확장자> </phpunit>
위의 예를 사용하여 vendor/bin/simple-phpunit
실행하면 이제 최신 PHPUnit 9가 설치되고 최신 phpunit-speedtrap v4가 필요합니다.
새로운 기능을 추가하거나 자신만의 포크를 개발하려면 다음 단계를 따르세요.
# Get source code (or replace with your fork URL) $ git checkout https://github.com/johnkary/phpunit-speedtrap.git phpunit-speedtrap # Install dev dependencies $ cd phpunit-speedtrap $ composer install # Run test suite to verify code runs as expected $ vendor/bin/phpunit
SpeedTrap은 느린 테스트에 대한 피드백을 표시하는 RSpec의 --profile
옵션에서 영감을 받았습니다.
phpunit-speedtrap은 MIT 라이선스에 따라 사용할 수 있습니다.