通过在浏览器上模拟,自动创建一个单元或功能php测试


Create a unit or functional php test automatically by simulating it on browser

如标题所示,无论如何,我可以通过在浏览器中模拟它一次或多次自动创建单元或功能测试?

我在考虑像firefox中的iMacros插件这样的东西,我们可以记录我们在任何元素上的点击,它会自动创建宏。但是我想把这些宏行解析成php代码行。

如果问题是"是否有通过在浏览器上模拟它来自动生成php代码的方法' ",那么这就更有意义了

有可能吗?

有。有几个工具是专门为这类事情设计的。

你应该先看看Selenium和Sahi。这两种工具都允许您在任何主要的web浏览器中记录一系列的操作,并将其作为测试脚本自动回放。

Sahi和Selenium都可以与PHP测试框架集成。我以前和Mink相处得很成功。但是,实际上不需要使用任何与PHP相关的功能测试,因为浏览器环境与PHP后端完全分离,因此您可以轻松地坚持使用Sahi/Selenium的本地脚本工具。

请注意,但是,一旦脚本生成,您将很可能需要手工修改,因为记录过程并不总是以理想的方式记录内容。例如,如果记录脚本在站点中拾取唯一的id,那么这些id在下次脚本运行时可能是不同的,因此脚本将失败。这被称为测试是"脆弱的",并且是以这种方式记录的自动化测试的一个非常常见的问题。

还要注意,这种类型的测试绝对不是单元测试。这些是功能测试。为了正确地测试您的系统,除了之外,您应该编写单元测试(甚至优先于)功能测试。

最后,值得注意的是,功能测试的运行速度非常慢。它们模拟的是真实的用户体验,所以你必须考虑页面加载时间。如果您想用一个合理大小的功能测试套件对您的系统进行全面测试,那么测试将花费相当长的时间来运行(我见过一些站点的功能测试需要一个多小时才能完成,我相信还有其他站点需要更长的时间)。这意味着每次更改任何内容时都运行完整的功能测试集变得不切实际。

这也是为什么一个好的单元测试套件很重要的另一个原因;即使是具有数千个单元测试的系统,通常也可以在一分钟内运行全部单元测试。这意味着您可以在更改内容时自己运行测试,因此您可以立即看到什么时候出现问题。