專案資訊:
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__ );
如果測試、設定、拆卸或其他相關方法執行此程式碼,秒錶將無縫測量其執行時間和計數,並將在測試輸出中顯示結果。
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
元素:^10.1.0phpunit/phpunit:^11.0.0
上的extensions
元素:^11.0.0 <phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
>
+ <extensions>
+ <bootstrap class="TQTestingExtensionStopwatchExtension"/>
+ </extensions>
<testsuites>
<testsuite name="unit">
<directory>test/Unit/</directory>
</testsuite>
</testsuites>
</phpunit>
使用時將擴充引導為 PHAR
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
調整你的phpunit.xml
設定檔並配置
extensionsDirectory
屬性與extensions
元素phpunit/phpunit:^10.0.0
phpunit/phpunit:^11.0.0
上的extensionsDirectory
屬性與extensions
元素 <phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
+ extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+ <extensions>
+ <extension class="TQTestingExtensionStopwatchExtension"/>
+ </extensions>
<testsuites>
<testsuite name="unit">
<directory>test/Unit/</directory>
</testsuite>
</testsuites>
</phpunit>
到目前為止,此擴充功能還沒有配置設定。
引導擴充後,您可以像平常一樣執行測試。例如:
vendor/bin/phpunit
當該擴充功能在程式碼中的某個位置使用時,它會給您一個報告:
該專案使用 MIT 許可證。
這個包的靈感來自ergebnis/phpunit-slow-test-detector
。