sir*_*kvg 2 ruby selenium-grid cucumber watir-webdriver
我正在尝试设置硒网格以实现测试的并行执行。首先,我将解释我当前的情况。
我的目标是同时在多个虚拟机上运行测试。我缺少需要配置测试以并行运行的部分。网络上有一些有关网格设置的示例,因为我使用的框架与我的场景无关。
提前致谢
我能够通过将Jenkins与Selenium Grid结合使用来实现...为什么选择Jenkins?a)Jenkins是一个构建工具,默认情况下被构建为运行并行作业。我利用这种能力将测试并行发送到Selenium Grid,从那时起Grid便开始管理流程。b)Jenkins是许多开发构建过程的一部分。开发人员可以致电您的QA专家,以在他们提交/构建时启动测试。c)Jenkins提供了一个不错的UI,可以查看测试的通过/失败(以及发送失败的电子邮件通知),并且d)Jenkins有一个很棒的Cucumber报告插件。
您可以避免使用詹金斯(Jenkins),但需要将黄瓜特征与网格并行发送。如果您只是运行黄瓜,它将把作业种到网格中,但是它们将按顺序运行。您将需要一些东西来启动每个异步功能。
以下是我的完整设置。詹金斯(Jenkins)在这里基本上用于启动多个/同时黄瓜工作。详细信息如下:
我有10个虚拟机。我以VM1为主要对象。这是一个Windows服务器盒,因此我将硒网格独立放置在上面,并写了一个批处理文件,如下所示:
@echo off
“C:\[Add your Java Path Here]\java.exe” -jar “C:\[Add your Selenium Grid Jar Path]\selenium-server-standalone-2.31.0.jar” -role hub
Run Code Online (Sandbox Code Playgroud)
然后使用Windows服务器任务在VM重新启动的情况下自动运行该批处理文件。
在每个其他VM上,我通过向VM1(hub)注册它们使它们成为网格的一部分:
java -jar selenium-server-standalone-2.31.0.jar -role node -hub http://[the server name of your Selenium Hub]:4444/grid/register -browser browserName=chrome,maxInstances=5
Run Code Online (Sandbox Code Playgroud)
在Cucumber中,我在features / support文件夹中设置了一个env.rb文件。这使我可以在运行测试之前指定命令行参数,以及在停止测试时会发生什么。我添加了一个begin语句,该语句为使用浏览器以及使用Grid设置了一个值。
在env.rb文件中,我添加:
def browser_name
(ENV['BROWSER'] ||= ‘firefox’).downcase.to_sym
end
def environment
(ENV['ENVI'] ||= ‘int’).downcase.to_sym
end
Run Code Online (Sandbox Code Playgroud)
然后我添加:
Before do |scenario|
p "Starting #{scenario}"
if environment == :int
@browser = Watir::Browser.new(:remote, :url=>"http://[Your Selenium Grid Hub]:4444/wd/hub", :desired_capabilities=> browser_name)
#Optional: in the case of setting your default start page @browser.goto "http://[your start page of your test site]:8080"
elsif environment == :local
@browser = Watir::Browser.new browser_name
@browser.goto "http://[some other environment]:8080"
end
end
Run Code Online (Sandbox Code Playgroud)
现在,您可以传递一个参数,例如:Cucumber Feature / login.feature BROWSER = firefox ENV = int ,它将把所有工作都移植到Grid HUB中-它将通过浏览器支持将它传递给它所连接的Grid NODES。将login.feature的测试发送到与Firefox兼容的节点-可能不是您的所有节点都具有Firefox,如果它们都这样做,则它将去往任何一个。
此时,您一次只能获得一份工作。那么如何运行更多呢?
您将拥有一个脚本,该脚本可以通过同一浏览器配置文件启动所有功能文件(或sans-Cucumber,即您的测试),以使用Grid HUB。如果使用脚本,则需要异步进行这些调用-因此所有功能/测试都同时发送到Grid,并且Grid管理作业。
我是怎么做到的...
Jenkins用于构建/部署代码-但就我而言,我使用它来触发质量检查作业。Jenkins是一个Java JAR,您可以运行...即java jenkins.jar它在某个端口上启动本地UI,您可以开始添加作业。
我建立了詹金斯(Jenkins)职位,并有一个父职位负责所有工作-将它们发送到Grid。然后,Selenium Grid Hub将管理作业的流程。
我希望能够启动单个功能测试,浏览器的单个功能测试以及浏览器的所有测试。为此,我从浏览器开始为每个功能进行单独的工作。
在Jenkins中,我创建了“ A New Job ”并选择“ Free style software component ”,然后用“ [我的功能名称] [浏览器名称]”填写说明,即通过IE登录测试
在此Jenkins作业的Build部分中,我选择使用BATCH命令。由于这是一个Windows框,因此我选择了Windows Batch命令并输入如下内容:
bundle exec cucumber BROWSER=ie ENVI=int features/login.feature --format json -o login-results/login.json
Run Code Online (Sandbox Code Playgroud)
从--format开始的东西,都利用了Jenkins的Cucumber Reports插件。它使这些外观漂亮的图形驱动报告能够通过/失败的功能测试。您不需要它,它是可选的。
如果您“构建” Jenkins作业,它将执行该Windows批处理文件,并执行以下操作:
它尚未并行运行作业。
现在,Jenkins可以通过网格按功能和浏览器启动测试-现在我们终于可以并行运行作业了,我们只需要更多的作业即可。因此,再创建一些作业...,例如:Jenkins作业用于registration.feature,jenkins作业用于subscription.feature。每个人都有自己的Windows批处理命令,例如:
bundle exec cucumber BROWSER=ie ENVI=int features/registration.feature --format json -o registration/registration.json
Run Code Online (Sandbox Code Playgroud)
要么
bundle exec cucumber BROWSER=ff ENVI=int features/registration.feature --format json -o registration/registrationff.json
Run Code Online (Sandbox Code Playgroud)
最后一个是注册测试的副本,只是调用了另一个浏览器。
默认情况下,Jenkins限制了您可以同时运行的作业数量。我认为是10。您可以在Jenkins配置中更改它。我将我的年龄改为40。
因此,现在,您可以单击您的第一个Jenkins作业: 通过IE登录测试 ,然后单击BUILD
开始时,在第二项工作上单击“构建”: 通过IE进行注册测试
和其他工作一样...
Jenkins将并行启动每个作业,将它们种植到Grid HUB,后者将作业发送到您的相应节点!全部并行。 默认情况下,Jenkins将作业限制为5或10个并行作业。您可以更改它。根据我的需要,我将我的值修改为25到40。
詹金斯还将使用通过/失败来更新用户界面,并在每个作业的日志中提供失败的详细信息。您可以看到失败的历史记录...并且另一个Jenkins存储库(即开发存储库)可以对您的存储库进行剩余调用,以在构建它们时自动触发这些测试。
而不是手动运行您的单个作业,您可以构建父作业。在Jenkins中,父作业将是一个相同类型的“ 自由样式软件组件 ”的“ 新作业” 。您会走到最底端,并且应该有一个名为“ Build Other Projects ”的字段。在该字段中,您可以放置每个部署项目:登录,注册等。
现在,当您“构建”此父作业时,您会看到Jenkins同时启动所有作业/项目。基本上,整个测试集可以一键开始-所有测试都发送到Selenium Grid,然后由Selenium Grid管理流程。
在Jenkins中,我为测试创建选项卡... IE测试,FF测试,Chrome测试等。在每个选项卡中,我都放置了适当的功能。
然后,我创建一个新的上级工作以启动所有类型的工作,例如:所有IE测试,所有FF测试等。
如果愿意,您可以避免使用黄瓜。您只需要一些可以并行启动的工作,对我来说,我就是使用詹金斯来完成的。您可以使用运行异步作业的脚本(开始测试)。
希望张贴的内容对您的需求有用。
我已经在我的站点上记录了此文件,以及一些詹金斯流的图片...
我的有关设置黄瓜和硒网格的教程:http : //sdet.us/selenium-grid-with-watir-and-cucumber-browser-automation/
我的有关使用Jenkins设置黄瓜报告的教程:http : //sdet.us/jenkins-and-cucumber-reports/
| 归档时间: |
|
| 查看次数: |
4795 次 |
| 最近记录: |