在多个浏览器中并行执行
Behat in Multiple Browsers in Parallel
我们目前使用 Behat 3 为我们的网站自动执行 BDD 测试。
当前设置使用 Jenkins to run Selenium which attaches to Firefox and uses XVFB 渲染(这允许我们在出现问题时保存屏幕截图)。
这非常适合测试站点(包括 JavaScript)是否正常运行以及用户是否可以成功执行每个记录的任务。
我希望扩展我们的测试设施,我想添加的一件事是检查多个浏览器的能力。这非常重要,因为我们偶尔会遇到可能破坏功能的怪癖。
由于目前测试需要一个多小时才能完成 运行(我们在 Jenkins 上为该站点提供了 4 个套件),我希望同时 运行 所有浏览器时间。如果我找不到同时执行此操作的方法,那么我可能会设置多个 Behat 配置文件并且 运行 每个系列。
我一直在寻找一种可能的解决方案是 Ghostlab。这将使我们能够同时跨多个浏览器和多个设备(包括移动设备)进行测试。问题是我找不到以有意义的方式将其加入 Behat 的方法。
我可以 运行 一个浏览器连接到 Ghostlab,这会导致在所有连接的浏览器上执行相同的操作,但是,如果不是由 Selenium 控制的浏览器崩溃,我不会知道我们将如何捕获该信息。
TL;DR:我有什么方法可以 运行 跨多个浏览器并行进行 BDD(最好是 Behat)测试,并从任何失败的浏览器中捕获信息?
这就是 multi-configuration jobs(或矩阵作业)在 Jenkins 中的设计目的。
您指定了一次作业配置,但添加了一个或多个每次都应该更改的变量,构建了一个组合矩阵(在您的例子中,矩阵只有一个维度:浏览器)。
Jenkins 然后 运行 使用多个 sub-builds 并行构建一个主构建——矩阵中的每个组合一个。然后您可以清楚地看到每个组合的结果。
这要求您的测试作业可以参数化,即您可以在 运行 时选择哪个浏览器应该 运行,而不是 运行 将所有测试集中在一个单一的工作。
Jenkins wiki 关于此功能的文档很少,但有一些关于如何设置它的好 blog posts(和 Stack Overflow 问题)。
矩阵作业将使用 Jenkins 中所有可用的 "executors",以尽可能并行 运行 构建。
在默认的 Jenkins 安装中,有两个可用的执行程序,但您可以更改它,或者通过添加 further build machines.
来扩展 Jenkins
我们目前使用 Behat 3 为我们的网站自动执行 BDD 测试。
当前设置使用 Jenkins to run Selenium which attaches to Firefox and uses XVFB 渲染(这允许我们在出现问题时保存屏幕截图)。
这非常适合测试站点(包括 JavaScript)是否正常运行以及用户是否可以成功执行每个记录的任务。
我希望扩展我们的测试设施,我想添加的一件事是检查多个浏览器的能力。这非常重要,因为我们偶尔会遇到可能破坏功能的怪癖。
由于目前测试需要一个多小时才能完成 运行(我们在 Jenkins 上为该站点提供了 4 个套件),我希望同时 运行 所有浏览器时间。如果我找不到同时执行此操作的方法,那么我可能会设置多个 Behat 配置文件并且 运行 每个系列。
我一直在寻找一种可能的解决方案是 Ghostlab。这将使我们能够同时跨多个浏览器和多个设备(包括移动设备)进行测试。问题是我找不到以有意义的方式将其加入 Behat 的方法。
我可以 运行 一个浏览器连接到 Ghostlab,这会导致在所有连接的浏览器上执行相同的操作,但是,如果不是由 Selenium 控制的浏览器崩溃,我不会知道我们将如何捕获该信息。
TL;DR:我有什么方法可以 运行 跨多个浏览器并行进行 BDD(最好是 Behat)测试,并从任何失败的浏览器中捕获信息?
这就是 multi-configuration jobs(或矩阵作业)在 Jenkins 中的设计目的。
您指定了一次作业配置,但添加了一个或多个每次都应该更改的变量,构建了一个组合矩阵(在您的例子中,矩阵只有一个维度:浏览器)。
Jenkins 然后 运行 使用多个 sub-builds 并行构建一个主构建——矩阵中的每个组合一个。然后您可以清楚地看到每个组合的结果。
这要求您的测试作业可以参数化,即您可以在 运行 时选择哪个浏览器应该 运行,而不是 运行 将所有测试集中在一个单一的工作。
Jenkins wiki 关于此功能的文档很少,但有一些关于如何设置它的好 blog posts(和 Stack Overflow 问题)。
矩阵作业将使用 Jenkins 中所有可用的 "executors",以尽可能并行 运行 构建。
在默认的 Jenkins 安装中,有两个可用的执行程序,但您可以更改它,或者通过添加 further build machines.