yegortokmakov / phprtest
PHP应用程序的资源使用简单测试
0.2.0
2015-06-30 15:46 UTC
Requires
- php: >=5.4
- mindplay/annotations: 1.2.0
- phpunit/phpunit-mock-objects: ~2.3
- symfony/console: ~2.5
- symfony/finder: ~2.2
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is not auto-updated.
Last update: 2024-09-28 17:38:24 UTC
README
PHPRTest 是一个针对现代 PHP 应用程序的简单资源使用测试工具。类似于 PHPUnit,它允许开发者跟踪软件关键部分的内存消耗和执行时间。PHPRTest 允许为每个测试套件设置软限和硬限,并且易于与您喜欢的 CI 解决方案集成。
用法
以下是一个对 Symfony 控制台应用程序的基本测试。在这个测试中,我们运行 import
命令,并断言执行时间小于 0.05 秒,软内存使用限制为 6 MB,硬内存使用限制为 10 MB。
<?php class ImportTest extends \Phprtest\TestSuite { /** * @assert memoryUsage 6.5M 10M * @assert timeUsage 0.05 */ public function testImportCommand() { $app = new \Symfony\Component\Console\Application('Myapp', 1); $app->add(new \Myapp\Command\Import('import')); $app->run(new ArgvInput(['myapp', 'import'])); } }
运行此测试将产生类似的结果
PHP Resources usage tests
--------------------------------
ImportTest
+-------------------------------+----------+-----------+-----------+---------+
| METRIC | RESULT | SOFTLIMIT | HARDLIMIT | STATUS |
+-------------------------------+----------+-----------+-----------+---------+
| testImportCommand:memoryUsage | 7141330 | 6815744 | 10485760 | softHit |
| testImportCommand:timeUsage | 0.0341 | 0.05 | 0.05 | ok |
+-------------------------------+----------+-----------+-----------+---------+
Warnings:
testImportCommand:memoryUsage warning assertion for memoryUsage: 7141330 > 6291456
1 tests completed. 1 warnings, 0 failures.
要提取测量中的某些代码部分(例如数据初始化),可以使用 @provider 注解
<?php class ImportTest extends \Phprtest\TestSuite { /** * @assert memoryUsage 6M 10M * @assert timeUsage 0.05 * @provider applicationProvider */ public function testImportCommand($app) { $app->run(new ArgvInput(['myapp', 'import'])); } public function applicationProvider() { $app = new \Symfony\Component\Console\Application('Myapp', 1); $app->add(new \Myapp\Command\Import('import')); return $app; } }
要多次运行相同的测试,可以使用 @repeat 注解
<?php class ImportTest extends \Phprtest\TestSuite { /** * @assert memoryUsage 6M 10M * @assert timeUsage 0.05 * @repeat 5 */ public function testImportCommand($app) { $app = new \Symfony\Component\Console\Application('Myapp', 1); $app->add(new \Myapp\Command\Import('import')); $app->run(new ArgvInput(['myapp', 'import'])); } }
安装
PHPRTest 可在 Packagist(yegortokmakov/phprtest)上找到,并可通过 Composer 安装。
php composer.phar require yegortokmakov/phprtest
或者,如果您使用 Composer 管理项目的依赖项,可以简单地将 yegortokmakov/phprtest 依赖项添加到项目的 composer.json 文件中。以下是一个仅定义开发时间依赖项的 PHPRTest 的 composer.json 文件的示例
{ "require-dev": { "yegortokmakov/phprtest": "dev-master" } }
待办事项
- etalon 测试的限制
- CPU 使用率
- 内存增益
- 计算运行的平均值
- 结果统计:如果结果不好则发出警告
- 模拟调用的时间权重
作者
Yegor Tokmakov - yegor@tokmakov.biz
还可以查看参与此项目的 贡献者 列表。
许可证
PHPRTest 根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件