yegortokmakov/phprtest

PHP应用程序的资源使用简单测试

0.2.0 2015-06-30 15:46 UTC

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 文件