项目信息:
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
+
+
+
test/Unit/
使用时将扩展引导为 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
元素 + extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+
+
+
test/Unit/
到目前为止,此扩展还没有配置设置。
引导扩展后,您可以像平常一样运行测试。例如:
vendor/bin/phpunit
当该扩展在代码中的某个位置使用时,它会给您一个报告:
该项目使用 MIT 许可证。
这个包的灵感来自ergebnis/phpunit-slow-test-detector
。