当前位置: 首页>>技术解读>>正文


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

webfans 技术解读 , , 去评论

问题描述

大家好,

我想听听其他人使用WordPress作为平台向用户提供复杂的non-blog解决方案,以及它们用于自动化Regression Testing的平台吗?

对于不熟悉术语”regression testing”的人,维基百科将其定义为:

Regression testing is any type of software testing that seeks to uncover software errors after changes to the program (e.g. bugfixes or new functionality) have been made, by retesting the program. The intent of regression testing is to assure that a change, such as a bugfix, did not introduce new bugs.

更有说服力的维基百科说下面的内容正是我现在在项目中遇到的问题:

Experience has shown that as software is fixed, emergence of new and/or reemergence of old faults is quite common. Sometimes reemergence occurs because a fix gets lost through poor revision control practices (or simple human error in revision control). Often, a fix for a problem will be “fragile” in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Frequently, a fix for a problem in one area inadvertently causes a software bug in another area. Finally, it is often the case that when some feature is redesigned, some of the same mistakes that were made in the original implementation of the feature were made in the redesign.

随着动作和过滤器的全局性,我发现复杂性开始增加,因为我添加了更多的client-requested功能,并且很难使复杂的插件稳定,特别是如果它使用大量的WP_Query调用并更新数据库。

在我看来,解决方案是使用一系列”test cases”设置回归测试,以构成“测试套件”。在概念上,当您测试HTTP GET请求的HTML输出时,并不难。但是,当您通过管理控制台登录和/或测试jQuery交互时必须测试时,它会变得更复杂一些。

我将其设置为社区维基,希望我们可以在这里收集最佳实践,但我真的很想听到任何其他WordPress专业人士正在使用的流程。

最佳解决方法

如果WP测试套件没有那么破坏,并且WP的设计和编写方式可以实际测试,那么PHPUnit会浮现在脑海中。 😉

更严重的是,您可以通过单元测试等从功能角度测试您想要的所有插件。问题是这些测试不能保证它们能够捕获WP升级引入的微妙机会,更不用说它们一旦插入定制的WP安装就会继续工作。

在我见过的丰富多彩的事情中:

  • WP API中的细微更改会影响插件的功能,例如您用来获取术语ID的钩子,现在它正在获得术语分类ID。 (很可能你的测试术语方便地具有相同的id)。

  • WP API中的细微更改会导致您收到WP_Error对象而不是之前预期的false值作为错误输入。

  • 您的插件是从mu-plugins文件夹中添加的,导致代码流略有不同。

  • 你的插件工作正常,直到memcached或其他一些持久存储启用。

  • 你的插件工作正常,直到被鄙视的 switch_to_blog()被调用。

  • 插件在调用时更改它所驻留的钩子,并且在不知不觉中将其作为副作用中断。

  • 一个插件(un?)明知故意地将你的输入或输出数据弄得乱七八糟,即使你没有过错,事情看起来也很糟糕。

我可以继续扩展列表,但那些将是破坏我自己的插件的关键项目。这两个项目可以通过单元测试来获取。接下来的两个,如果你足够耐心,但我认为WP不应该改变它们发生时的工作方式。没有多少测试可以解决 switch_to_blog()的错误实现。最后两个是无可救药的无可争辩的。

哦,而且……甚至没有让我开始关注附件,自动草稿,修订,菜单项以及最终存储在posts表中的内容。

祝好运… :-)

次佳解决方法

你应该强烈考虑Selenium

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

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2182.html,转载请务必附带本地址声明。