验收/功能测试中的性能分析
Posted
技术标签:
【中文标题】验收/功能测试中的性能分析【英文标题】:Performance profiling in acceptance/ functional tests 【发布时间】:2016-06-03 09:28:50 【问题描述】:我使用了一个简单的验收测试,它执行以下操作:
加载网站的起始页; 执行授权尝试; 执行注销尝试; 执行注册尝试。每个功能都通过几个步骤进行测试,例如 -
...
$I->wantTo('Try to login with right credentials'); // step 1
$I->amOnPage('/user/login'); // step 2
$I->fillField('#login-form-login','admin'); // step 3
$I->fillField('#login-form-password','admin'); // step 4
$I->click('#login-form button[type=submit]'); // step 5
$I->seeCurrentUrlEquals('/user/admin'); // step 6
...
我想知道每组步骤/单个步骤执行了多长时间。
由于所有功能都集中在一个测试中,因此运行此命令的结果会显示一份报告,显示整个测试所花费的时间。
codecept run acceptance --html
是否可以在 Codeception 中制作一组步骤(一些标记,可能是..)并显示执行这些组所花费的时间?
【问题讨论】:
【参考方案1】:您可以将以下代码添加到FunctionalTester
或助手类中:
class FunctionalTester extends \Codeception\Actor
...
private $firstTimeTag;
private $secondTimeTag;
public function markFirstTimeTag()
$this->firstTimeTag = new DateTime();
public function markSecondTimeTag()
$this->secondTimeTag = new DateTime();
public function calculateTheDiffFor($step)
echo $step.": ". round($this->secondTimeTag->getTimestamp() -
$this->firstTimeTag->getTimestamp(), 3). " s\n";
...
然后在 Cept/Cest 文件中使用此操作:
$I->wantTo('Try to login with right credentials'); // step 1
$I->markFirstTimeTag();
$I->amOnPage('/user/login'); // step 2
$I->fillField('#login-form-login','admin'); // step 3
$I->fillField('#login-form-password','admin'); // step 4
$I->click('#login-form button[type=submit]'); // step 5
$I->markSecondTimeTag();
$I->calculateTheDiffFor("Login attempt");
$I->seeCurrentUrlEquals('/user/admin'); // step 6
例如,可以在 Jenkins 的日志中看到输出。
【讨论】:
以上是关于验收/功能测试中的性能分析的主要内容,如果未能解决你的问题,请参考以下文章