使用Gems或Jenkins(或两者)在多台机器上并行化黄瓜BDD测试

时间:2012-05-29 09:25:03

标签: cucumber jenkins watir selenium-grid parallel-testing

我正在使用带有 Cucumber (带有page_object gem), Watir Jenkins 的BDD运行项目。现在,我们正在寻找并行化测试的最佳方法,以减少多个虚拟机上的测试时间,使用不同的导航器等等。

我认为有两种方法:

  • 使用像parallel_test,Hydra,TestJour,TestBot ......这样的Ruby工具。
  • 或通过Jenkins组织一切,使用路径,标签等。
  • 以某种方式使用两者

为了以正确的方式付出努力......你认为Jenkins是在多台机器上进行并行测试的好选择还是我应该给另一个工具机会?建议::)

3 个答案:

答案 0 :(得分:8)

詹金斯只是解决方案的一部分。你可以使用parallel_tests同时运行多个cukes(只要你的Jenkins服务器没有在Windows上运行),但你还需要更多。

您需要设置一个服务器网格来处理watir测试。我强烈建议您查看Selenium Grid 2(http://code.google.com/p/selenium/wiki/Grid2)。在远程VM上设置节点并在Jenkins服务器上启动集线器。然后,parallel_tests可以并行运行测试,并将它们连接到本地集线器,然后本地集线器将它们发送到远程服务器以供执行。

一个注意事项 - 为了使其正常运行,您需要制定一个良好的测试数据管理策略。每个测试都需要能够独立运行。此外,他们每个人都应负责为测试运行设置必要的数据,然后在测试执行后清理数据。

答案 1 :(得分:1)

我使用Jenkins将作业拆分到各种奴隶机器。当不需要并行测试时,这也允许不同用户测试不同的环境(测试人员测试,开发人员故障排除等)。很容易设置!

答案 2 :(得分:1)

您可以通过将测试分发到不同的标记,然后在每台测试计算机上运行不同的标记集来进行并行化。

require 'rubygems'
  require 'cucumber'

  require 'cucumber/rake/task'

  Cucumber::Rake::Task.new( :features) do |t|
    t.cucumber_opts = "features --tags @testset_1 "
end