1

我有一个很大的应用程序,我想用 phpunit 进行测试。在第一步中,我想测试是否每个页面都可以访问并返回响应代码 200。

我就是这样做的:

public function testIndexActionCanBeAccessed()
{
    $this->dispatch('/');
    $this->assertResponseStatusCode(200);
}

但正如我之前所说,我的应用程序很大。所以有很多页面要测试。这些测试将需要很长时间。

有没有办法加速这些测试或者这些测试是否相关?

感谢帮助

4

2 回答 2

2

曾经遇到过因为改代码导致很少使用的页面坏了,管理层大声抱怨的情况。通过简单地请求该页面很容易发现失败wget- 这就是我当时作为常规工作添加到我们的 Jenkins 的内容。之后这项工作从未失败过,日复一日、月复一月地愉快地请求两到三页,大约两年(然后这些页面被删除了)。

如果您处于没有更好的测试可用或实施起来太麻烦的情况,那么测试 HTTP 状态代码将是一种有效的方法。但是正如您自己看到的那样,这会变得非常缓慢,因为您必须始终将整个系统作为一个大黑匣子进行测试。而且您需要在测试环境中工作的所有内容。

如果您现在有一个几乎无法测试的系统,那么使用诸如 Selenium 之类的远程控制应用程序的功能测试是快速检测故障的良好第一步。您可能希望并行执行这些测试,这需要适当的硬件电源,很可能以多台机器的形式执行 Selenium 客户端。

另一方面,你应该瞄准获得更多的单元测试。这些将运行得非常快,因为您将注入模拟对象作为数据库连接等真实事物的替代品。如果后台没有数据库,测试将不会与网络通信,也不会从磁盘读写——模拟对象在内存中,几乎可以立即给出所需的答案。

结合起来,单元测试与一组选定的功能测试(可能还有一些集成测试将一些更大的部分放在一起并单独测试它们,但不是整个应用程序)将表明一切都按预期工作。

但仅凭功能测试,情况就不会如此。

于 2013-10-30T22:46:26.333 回答
-1

从您的角度来看,为什么这样的测试应该是相关的?您正在测试环境或开发机器上运行测试套件,因此应用程序将隐式“在线”。如果您确实需要测试应用程序是否响应,请为此执行一次测试,而不是为每个页面执行一次测试。

于 2013-10-30T18:46:58.187 回答