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

Cucumber 使用Gems或Jenkins(或两者)在多台机器上并行化Cumber BDD测试,cucumber,jenkins,watir,selenium-grid,parallel-testing,Cucumber,Jenkins,Watir,Selenium Grid,Parallel Testing,我正在运行一个使用BDD的项目,其中包含Cucumber(带有page_object gem)、Watir和Jenkins。现在,我们正在寻找并行化测试的最佳方法,以减少使用不同导航器等的多个虚拟机上的测试时间 我认为有两种方法: 要使用Ruby工具,如parallel_test、Hydra、TestJour、TestBot 或者通过Jenkins组织一切,使用路径、标记等 以某种方式使用两者 为了使你的方法正确,你认为詹金斯是一个很好的选择,可以在多台机器上进行并行测试吗?或者我应该给另一

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

我认为有两种方法:

  • 要使用Ruby工具,如parallel_test、Hydra、TestJour、TestBot
  • 或者通过Jenkins组织一切,使用路径、标记等
  • 以某种方式使用两者

为了使你的方法正确,你认为詹金斯是一个很好的选择,可以在多台机器上进行并行测试吗?或者我应该给另一个工具一个机会吗?欢迎您提出建议:)

我使用Jenkins将作业分割到不同的从机。当不需要并行测试时,这还允许不同用户对不同环境进行测试(测试人员测试、开发人员故障排除等)。非常容易设置

詹金斯只是解决方案的一部分。您可以使用并行_测试同时运行多个CUK(只要Jenkins服务器不在Windows上运行),但您仍然需要更多

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


需要注意的一点是,为了使其正常工作,您需要有一个良好的测试数据管理策略。每个测试都需要能够独立运行。此外,他们应各自负责设置测试运行所需的数据,然后在测试执行后清理这些数据。

您可以通过将测试分发到不同的标记中,然后在每个测试机器上运行不同的标记集来并行化

require 'rubygems'
  require 'cucumber'

  require 'cucumber/rake/task'

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

在开放空间部分的测试自动化集市上,我们对此进行了一些很好的讨论。在Google GroupScheezy上的Watir组和Cucumber组中,这可能也是一个很好的问题(因为这是对潜在方法等的更一般性的讨论)——如何配置它,使相同的测试同时在多个节点上运行?目前,我有您上面描述的设置,但节点运行不同的测试,我希望节点运行完全相同的测试(测试不同的OS/broswer组合)如果您想要测试的实时预览以及录制和播放运行视频的能力,请查看Zalenium作为常规selenium grid的替代方案。使用并行cucumber也可以很好地工作,但是您可能希望使用
--groupbyscenarios
选项来获得更好的效率