Php 完整应用程序生命周期的功能测试

Php 完整应用程序生命周期的功能测试,php,functional-testing,Php,Functional Testing,我想用功能测试来介绍我们的应用程序。我对大多数示例都很熟悉,但它们不适合我,因为它们太简单,无法解释如何描述测试的依赖关系。假设我们有一个博客应用程序,我们想测试博客文章的创建。首先,只有经过身份验证和授权的用户才能创建博客文章。其次,为了创建博客文章,他们必须创建博客本身。第三,为了创建博客,他们必须注册帐户等。所有这些操作也必须包含测试,因此测试之间存在依赖关系,如 class SigningUpTest { ... } class LoginTest { ... } // depends

我想用功能测试来介绍我们的应用程序。我对大多数示例都很熟悉,但它们不适合我,因为它们太简单,无法解释如何描述测试的依赖关系。假设我们有一个博客应用程序,我们想测试博客文章的创建。首先,只有经过身份验证和授权的用户才能创建博客文章。其次,为了创建博客文章,他们必须创建博客本身。第三,为了创建博客,他们必须注册帐户等。所有这些操作也必须包含测试,因此测试之间存在依赖关系,如

class SigningUpTest { ... }
class LoginTest { ... } // depends on SigningUpTest
class CreatingBlogTest { ... } // depends on LoginTest, here I should get something like session_id
在简单的应用程序中,我可以将所有这些情况放在1类中,并使用PHPUnit的@depends注释。由于应用程序变得复杂,在我们不得不将测试分解到不同的类之前,它工作得非常好


如何测试复杂的应用程序?

功能测试!==单元测试。对于功能测试,您可能最好使用诸如或Sure之类的工具。但问题是一样的。Codeception显示了一个太简单的示例,当我必须设置URL并进行断言时。但问题是我如何设置具有数百页的复杂测试?如何设置测试的依赖关系?您可以使用codeception(或Behat)构建它们,但是如果测试运行到数百页,那么您没有正确地进行测试-用户将无法通过数百页来获得结果。。。您运行一套
单独的
测试,每个测试针对一项特定的功能而设计;没有一个测试尝试做所有的事情为了测试一个特定的功能,我有时不得不做同样的动作来达到这个功能。正如我上面所说的,我不能在没有创建这个博客、没有注册的情况下测试博客文章的创建。在Codeception方面,我希望在所有测试中以正确的顺序注入相同的WebGuy实例。否则,每次我想测试一小部分功能时都必须登录,这看起来是错误的。