【问题标题】:Create a unit or functional php test automatically by simulating it on browser通过在浏览器上模拟自动创建单元或功能 php 测试
【发布时间】:2015-07-23 07:35:01
【问题描述】:

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

我在考虑类似 Firefox 中的 iMacros 插件,我们可以记录我们对任何元素的点击,它会自动创建宏。但相反,我想将这些宏行解析为 php 代码行。

好吧,基本上,如果问题是“是否有办法通过在浏览器上模拟来自动生成 php 代码'

有可能吗?

【问题讨论】:

  • 像 Gatling 这样的工具有用于构建测试的记录/回放模式;但这旨在生成性能测试而不是功能或单元测试....但是自动生成 PHP 代码?您的浏览器根本没有直接连接到 PHP....您记录的只是针对网络服务器的一系列请求
  • @MarkBaker 是的,它不必生成 php 代码。但相反,它可以只获取元素的 xpath 或与之相关的任何内容,并且可以轻松地将其编辑为 php 代码。

标签: php unit-testing selenium-webdriver functional-testing


【解决方案1】:

是的,有。有几种工具专为这类事情而设计。

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

Sahi 和 Selenium 都可以与 PHP 测试框架集成。我过去在Mink 上取得了成功。然而,没有真正需要使用与 PHP 相关的任何东西进行功能测试,因为浏览器环境与 PHP 后端完全分离,因此您可以轻松地坚持使用 Sahi/Selenium 的本机脚本工具。

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

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

最后,值得注意的是,功能测试运行起来确实很慢。他们正在模拟真实的用户体验,因此您必须考虑页面加载时间。如果您想使用合理大小的功能测试套件来全面测试您的系统,测试将需要很长时间才能运行(我见过功能测试需要一个多小时才能完成的网站,我确信在那里是否还有其他需要更长的时间)。这意味着每次更改任何内容时都运行全套功能测试变得不切实际。

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

【讨论】:

  • 我非常了解您的注意事项,无论哪种方式我都会碰巧这样做。我将尝试这些工具.. tyvm
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2021-10-13
  • 2016-01-27
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2015-02-20
相关资源
最近更新 更多