回归测试WordPress网站的最佳实践?

时间:2010-12-02 作者:MikeSchinkel

Hi all,

我想听听其他人是如何使用WordPress作为平台向客户提供复杂的非博客解决方案的,他们正在使用什么来实现自动化Regression Testing?

对于那些不熟悉术语“回归测试”的人,维基百科将其定义为:

回归测试是任何类型的软件测试,旨在通过重新测试程序,在对程序进行更改(如错误修复或新功能)后发现软件错误。回归测试的目的是确保更改(如错误修复)不会引入新的错误

更具说服力的维基百科说,以下正是我目前在一个项目中所经历的:

经验表明,由于软件是固定的,出现新的和/或重新出现旧的故障是很常见的。有时,由于糟糕的修订控制实践(或修订控制中的简单人为错误)导致修复丢失,因此会再次出现。通常,对问题的修复是“脆弱的”,因为它在最初观察到的狭窄情况下修复了问题,但在软件生命周期内可能出现的更一般情况下却没有修复。通常,修复一个区域中的问题会无意中导致另一个区域中出现软件错误。最后,通常情况下,当重新设计某个功能时,在重新设计时也会犯一些与该功能的原始实现中相同的错误

随着操作和过滤器的全局性,我发现随着我添加更多客户端请求的功能,复杂性开始上升,很难使复杂的插件稳定,尤其是如果它使用大量调用WP_Query 并大量更新数据库。

在我看来,解决方案是用一系列“测试用例”建立回归测试,以组成一个“测试套件”从概念上讲,测试HTTP GET请求的HTML输出并不难。但当您必须在通过管理控制台登录时进行测试和/或测试jQuery交互时,情况会变得更加复杂。

我将此设置为一个社区wiki,希望我们可以在这里收集最佳实践,但如果其他WordPress专业人员正在使用,我真的很想听听流程。

3 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

如果WP测试套件没有那么坏,如果WP的设计和编写方式确实能够正确地进行测试,PHPUnit就会出现在脑海中

更严重的是,您可以通过单元测试等从功能角度测试插件。问题是,这些测试不能保证它们能抓住WP升级带来的细微机会,更不用说一旦插入定制的WP安装,它们还能继续工作。

在我看到的五彩缤纷的事情中:

WP API中的细微变化会影响插件的功能,例如,您使用的钩子用于获取术语id,而它现在正在获取术语分类id。(很有可能您的测试术语方便地同时具有相同的id)。

WP API中的细微变化会导致您收到WP_Error 对象,而不是以前期望的值false 作为错误输入。

您的插件是从mu plugins文件夹中添加的,因此产生了细微不同的代码流。

在启用memcached或其他持久存储之前,您的插件工作正常。

您的插件运行良好,直到被鄙视的switch\\u to\\u blog()被调用。

当插件被调用时,它会改变它所在的钩子,并作为副作用在不知不觉中中断它。

插件(un?)故意将输入或输出数据弄乱,使事情看起来很糟,即使你没有错。

我可以不断扩展列表,但这些都是破坏我自己插件的关键因素。这两个项目可以通过单元测试来捕获。如果你有足够的耐心,接下来的两个也是一样,但我认为WP不应该改变事情发生时的工作方式。对于switch\\u to\\u blog()的错误实现,再多的测试也无济于事。最后两个是无可救药的不稳定。

哦,还有。。。甚至不要让我开始了解附件、自动草稿、修订、菜单项以及最终存储在posts表中的其他内容。

祝你好运…:-)

SO网友:Ethan Seifert

您应该强烈考虑Selenium.

它允许您记录操作(例如,将数据输入表单、单击链接),然后您可以执行断言。它还与PHPUnit集成。我强烈建议您查看两分钟的演示。

SO网友:J.D.

硒可能是有用的,但我认为在现代你会发现Codeception 更好、更易于使用。对于最简单的视觉回归测试,它甚至有an extension that will take screenshots 并自动为您比较它们。

当然,共同认知WebDriver 测试可以进一步执行功能回归测试。您可以填写并提交表单、单击网站上的按钮和链接、执行任何JS等。您可以在测试中使用Firefox或Chrome等真实浏览器,也可以使用PhantomJS. 这意味着您甚至可以为插件运行WebDriver测试as part of its build process on Travis CI 如果你想的话。

甚至有几个特定于WordPress的库可以帮助您入门:

结束

相关推荐