프로젝트 정보:
Stopwatch는 성능 분석을 위한 필수 phpunit/phpunit
확장입니다!
테스트 실행 중 코드 실행 시간과 호출 빈도에 대한 귀중한 통찰력을 얻으세요. 이 확장은 코드 성능 분석을 향상시키도록 설계되었습니다. 표시된 코드 세그먼트의 실행 시간과 빈도를 추적하여 성능 병목 현상을 정확하게 해결합니다. 성능 병목 현상(예: 데이터베이스 정리 또는 설정)을 식별하거나 시간 경과에 따라 모니터링할 수 있습니다. 확장 프로그램은 각 테스트에 대한 스톱워치 보고서와 테스트 실행이 끝나면 요약 보고서를 생성합니다.
이 프로젝트는 composer
패키지와 Phar 아카이브를 제공합니다.
확장 기능은 다음 버전의 phpunit/phpunit
과 호환됩니다.
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
코드에 몇 가지 측정 지점을 추가하면 확장 프로그램이 감시를 중지하고 이를 계산합니다. 결과는 각 테스트에 대해 표시되며 테스트 실행이 끝나면 전체 보고서로 표시됩니다.
다음은 단일 테스트 클래스의 출력이 어떻게 보이는지에 대한 예입니다.
Stopwatch for TQTestsExampleSingleTest::testDataCalculation:
- TQTestingDatabase::deleteData 0.117secs ( 3x, Ø 0.04) TOTAL 327.026secs ( 184x, Ø 1.78)
- ...onmentTesting::cleanupInstance 0.259secs ( 1x, Ø 0.26) TOTAL 6.159secs ( 60x, Ø 0.10)
- TQTestingDatabase::import 7.889secs ( 11x, Ø 0.72) TOTAL 250.958secs ( 352x, Ø 0.71)
- Test 1.428secs ( 1x, Ø 1.43) TOTAL 1041.228secs ( 70x, Ø 14.87)
.
Stopwatch for TQTestsExampleSingleTest::testDataTransfer:
- TQTestingDatabase::deleteData 0.116secs ( 3x, Ø 0.04) TOTAL 327.142secs ( 187x, Ø 1.75)
- ...onmentTesting::cleanupInstance 0.256secs ( 1x, Ø 0.26) TOTAL 6.415secs ( 61x, Ø 0.11)
- TQTestingDatabase::import 7.573secs ( 11x, Ø 0.69) TOTAL 258.531secs ( 363x, Ø 0.71)
- Test 5.998secs ( 1x, Ø 6.00) TOTAL 1047.226secs ( 71x, Ø 14.75)
.
Stopwatch for TQTestsExampleSingleTest TearDown:
- TQTestingDatabase::deleteData 38.486secs ( 6x, Ø 6.41) TOTAL 365.511secs ( 190x, Ø 1.92)
- ...onmentTesting::cleanupInstance 0.256secs ( 1x, Ø 0.26) TOTAL 6.415secs ( 61x, Ø 0.11)
- TQTestingDatabase::import 7.573secs ( 11x, Ø 0.69) TOTAL 258.531secs ( 363x, Ø 0.71)
- Test 5.998secs ( 1x, Ø 6.00) TOTAL 1047.226secs ( 71x, Ø 14.75)
테스트 실행이 끝나면 사용된 모든 스톱워치에 대한 요약을 얻게 되며 다음과 같이 표시됩니다.
Stopwatch TOTALS:
- Test TOTAL 1047.246secs ( 78x, Ø 13.43)
- TQTestingDatabase::deleteData TOTAL 365.511secs ( 190x, Ø 1.92)
- TQTestingDatabase::import TOTAL 258.531secs ( 363x, Ø 0.71)
- ...onmentTesting::cleanupInstance TOTAL 6.416secs ( 62x, Ø 0.10)
- TQProductionMonitoring::ping TOTAL 17.967secs ( 7x, Ø 2.57)
스톱워치는 사용하기 매우 쉽습니다. 측정하려는 코드를 감싸는 한 줄의 코드만 있으면 됩니다.
예를 들어, 테스트 속도가 꽤 느린데, 범인이 누구인지 모른다고 가정해 보겠습니다. 각 테스트마다 수행해야 하는 데이터베이스 설정이 아닐까 의심됩니다. 의심되는 코드 블록을 다음과 같이 래핑하면 됩니다.
Stopwatch:: start ( __METHOD__ );
self :: initializeDatabase (
$ db -> getConnection (),
... static :: createData ()
);
Stopwatch:: stop ( __METHOD__ );
테스트, 설정, 분해 또는 기타 관련 메서드에서 이 코드를 실행하면 Stopwatch는 실행 시간과 횟수를 원활하게 측정하고 테스트 출력 내에 결과를 표시합니다.
composer
와 함께 설치달리다
composer require --dev teqneers/phpunit-stopwatch
teqneers/phpunit-stopwatch
composer
패키지로 설치합니다.
최신 릴리스에서 phpunit-stopwatch.phar
다운로드하세요.
확장 프로그램이 phpunit/phpunit
에서 느린 테스트를 감지하려면 먼저 부트스트랩을 수행해야 합니다. 부트스트래핑 메커니즘은 사용 중인 phpunit/phpunit
버전에 따라 다릅니다.
composer
패키지로 부트스트래핑 사용할 때 확장 기능을 composer
패키지로 부트스트랩하려면
phpunit/phpunit:^10.0.0
phpunit/phpunit:^11.0.0
phpunit.xml
구성 파일을 조정하고
phpunit/phpunit:^10.1.0
의 extensions
요소phpunit/phpunit:^11.0.0
의 extensions
요소
+
+
+
test/Unit/
사용할 때 확장을 PHAR로 부트스트랩하려면
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
phpunit.xml
구성 파일을 조정하고
phpunit/phpunit:^10.0.0
의 extensionsDirectory
속성 및 extensions
요소phpunit/phpunit:^11.0.0
의 extensionsDirectory
속성 및 extensions
요소 + extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+
+
+
test/Unit/
지금까지 이 확장 프로그램에 대한 구성 설정이 없습니다.
확장을 부트스트랩한 후에는 평소대로 테스트를 실행할 수 있습니다. 예:
vendor/bin/phpunit
코드 어딘가에서 확장 기능을 사용하면 다음과 같은 보고서가 제공됩니다.
이 프로젝트는 MIT 라이센스를 사용합니다.
이 패키지는 ergebnis/phpunit-slow-test-detector
에서 영감을 받았습니다.