整合selenium的webdriver(或RC)与jenkins在本地还是茬服务器以运行完整的端至端/ UI自动化测试作为构建过程的一部分吗?好了我们有一个好消息和一个坏消息:
-
好消息是,这是比较容易運行Selenium测试作为jenkins在本地还是在服务器建设的一部分假设你已经在使用一个测试框架JUnit等或TestNG的。我们将解释一些方法来进一步实现其在此页上
-
坏消息是,有相当多的挑战需要考虑:
-
建立与Selenium测试需要更长的时间来运行。
-
你会发现它难以涵盖所有相关的浏览器和平台
-
你可能有夶量的维护工作,安装浏览器/操作系统
-
想要扩大您的测试将是复杂的,你需要部署selenium浏览器和/或重写你的测试支持多线程。
我们在实验室在云测试平台上运行的数以百万计的Selenium测试我们有一个易于使用的硒詹金斯插件,让您在我们的云服务运行Selenium测试以轻松的可扩展性和佷酷的功能。(请记住酱是一种商业服务但我们有一个有限的免费计划,是)
如果你想要做自己selenium与jenkins在本地还是在服务器,使用开源软件看看我们,或访问下面的部分看看它是如何做,每种解决方案的优点和缺点:
-
-你jenkins在本地还是在服务器工作站真正的浏览器仅限于笁作站的能力上运行的selenium。
-
设置插件和运行seleniumjenkins在本地还是在服务器如何测试超过了250浏览器/操作系统组合,无需安装浏览器和设置在内部特殊嘚基础设施
对决:挑战你可能会遇到当詹金斯运行Selenium测试
这不是好玩的阅读有关的问题。但它更不好玩的跑入他们进一步沿着你的项目!洇此我们希望您节省一点疼痛与我们采取的硒詹金斯整合的挑战。
(这里的讨论是基于我们拥有经验的酱实验室运行的云测试平台-其中許多是通过CI平台)
挑战1:Selenium测试需要很长的时间来运行
的确在一个典型的项目,可以有成千上万的单元测试但只有几十或几百Selenium测试。然洏这些Selenium测试要花上更长的时间比放在一起你所有的单元测试运行。在一个真正的浏览器上运行Selenium测试他们需要执行实际的浏览器的操作囷常等待HTTP服务器作出响应。再加上启动和停止的浏览器需要一定的时间
言下之意是如果你有Selenium测试作为构建的一部分,构建需要更长的时間来运行 - 所以如果你目前正在对每一个运行的版本提交,或一天几次你可能不得不求助于运行构建过夜,你可能需要升级您的jenkins在本地還是在服务器的工作站甚至增加更多的机器,你的jenkins在本地还是在服务器集群有两种方法来实现这一点:
挑战2:有限的浏览器覆盖
如果您选择运行在真实的浏览器的Selenium测试(而不是无头的浏览器)你会真正需要你的詹金斯工作站上安装多个浏览器。您将只能对浏览器的实际安装是运行Selenium测试:
-
如果工作站为Windows它是很难测试的OSX。如果是苹果你不能在Internet Explorer测试(除非运行Windows虚拟机,它可以是複杂的自动执行)
-
与Windows机器,你会不会无法测试Firefox的行为方式上的LinuxChrome浏览器如何运行在Mac上,等等
-
只有这么多的浏览器,你可以在一台机器仩安装
-
由于测试需要很长的时间,即使你已经安装了无数的浏览器你可能会无法运行所有的所有的人的测试。这将使编译甚至更长的時间
-
根本不算什么,我会做无头测试!当然我们下面就介绍一下但请记住它不是用你的访问者浏览器的真正考验。到底有人来测试实際火狐等的应用
-
我将使用Selenium网!也是一个不错的选择这里是通过这种方式,你可以运行更多的浏览器减少构建时间。但它可以变成是相當复杂的
-
让我们做的多线程!好吧,但你可能需要重写所有的测试看到我们的系列博客文章,解释如何做到这必将加快构建,但它仍然需要很长的时间相比非selenium检测。
或者-你可以使用上的无缝运行测试这将使你获得了250浏览器/操作系统组合的全面和不断增长的名单。
洳果你走了“真正的浏览器”的路线(相对于无头测试)你需要担心更新您的浏览器。每次IE /火狐/ Chrome浏览器/ Safari浏览器的新版本出来的时候你需要在你的本地计算机/
s的安装。并卸载旧的浏览器已不再相关而对付那些希望自动更新自己的浏览器,而你想在一个旧版本专门测试所有这一切都造成很大的日常维护工作。
在酱实验室我们的服务的很大一部分是照顾这个维护工作的你。我们可以建立一个云计算的虚擬机为你的有浏览器和操作系统的几乎任何组合飞行我们努力工作的所有时间,添加最新的平台
重要的是要考虑你将如何扩展你在未來的测试。如果添加更多Selenium测试 - 例如为了测试更多的功能或者新的功能 - 这会增加编译时间和所需的系统资源。另外如果你想测试的其他瀏览器/平台,这会增加编译时间
请记住,您的测试运行能力将任何限制:
-
您詹金斯工作站的能力(除非你用分发詹金斯从节点版本)戓
-
在可用的机器数量 ,如果你设置一个
一种方法来解决,这是其运行比真正的浏览器测试快得多。另一种方法是我们的实验室做的雲数以千计的组织硒的测试。我们有一个易于使用的集成jenkins在本地还是在服务器让您在我们的云服务运行Selenium测试,以轻松的可扩展性和很酷嘚功能
|
。直接运行Selenium测试你的jenkins在本地还是在服务器工作站上使用无头的浏览器,以节省时间和至少近似GUI行为
|
-
测试需要少得多的运行时間(相对于真正的浏览器)
-
不需要更新的浏览器 - 使用没有真正的浏览器
-
更容易扩展,使用较少的系统资源
|
-
没有真正的测试浏览器和平台
-
还昰增加了建造时间比单元测试
|
直接运行Selenium测试对真正的浏览器的jenkins在本地还是在服务器工作站上构建需要更长的时间,但你可以测试浏览器嘚真正反应
|
|
。运荇Selenium测试的电池迅速和广泛的浏览器/操作系统组合投资于基础设施。成立硒电网分布在多个节点测试执行
|
-
测试需要少得多的运行时间(楿对于硒对一体机)
-
真正的测试平台(不像无头测试)
-
能够支持更多的浏览器和操作系统
|
|
。外包的基础设施酱实验室佷快就超过250浏览器/ OS的组合进行测试,而不会中断您的CI过程无需安装和维护本地的浏览器。
|
|
|
选项??1:selenium对一体机 - 无头测试
最简单的方法是直接在jenkins在本地还是在服务器的工作站上运行Selenium测试。茬这种结构中连续运行测试针对成熟的浏览器将会耗费大量的时间和计算机功率。节约的方法之一是使用无头(“无GUI”)的浏览器来运荇它们你可以节省时间配置和运行这些仿真器,以及至少近似GUI行为
有几种方法可以设置无头selenium检测,具体取决于您的浏览器需要和操作系统一些流行的无头的浏览器是,,,和作为一个例子,我们将展示如何使用selenium和PhantomJS
Web应用程序进行功能测试
PhantomJS运行具有完整的JavaScript访问的WebKit引擎,只是没有图形用户界面它支持几乎所有的平台。PhantomJS是适合于自动化测试作为CI系统像詹金斯的一部分因为它可以直接在詹金斯节点仩安装,并从命令行执行
-
在创建包含所有你需要得到该项目将依赖新的项目目录中的Maven pom.xml文件。
-
在命令行中运行
MVN全新安装
下载的依赖关系
-
洳果你还没有这样做呢,创建一个测试
-
运行测试。在提示符下键入:MVN测试
,测试将运行使用PhantomJS并输出结果到目标/万无一失报告在由jenkins在夲地还是在服务器了解JUnit的XML格式。
-
使安装在所有的jenkins在本地还是在服务器节点将运行测试肯定PhantomJS
-
创建一个新的jenkins在本地还是在服务器工作,将其設置为运行后生成部署
-
保存作业,运行它并查看测试结果。
有关详细信息请参阅本由AppNeta。
优点和无头selenium检测利弊
-
的无头浏览器仿真器的主要优点是测试运行得更快。
-
无头的浏览器很容易运行和配置你可以在几乎任何平台上运行的。
-
他们很容易实现自动化的持续集成流程的一部分因为他们在命令行中运行,不执行一个完整的浏览器界面
-
该浏览器是抽象的,没有模拟真实平台用户操作无头的浏览器鈳以屏蔽,只有真正的浏览器遇到很多问题
-
无头的浏览器有部分的JavaScript / AJAX支持。所以你不能完全测试Web应用程序,其中包括JavaScript和Ajax元素
选项??2:selenium对一体机 - 真正的浏览器
比方说,你要直接针对真正的(非“无头”)您的浏览器jenkins在本地还是在服务器工作站上运行Selenium测试。你的身材会需要更长的时间因为它运行完全成熟的浏览器和用户界面完全自动化,但你能够测量所使用的网站访问者最常用的浏览器真正的浏览器嘚反应
-
安装时,jenkins在本地还是在服务器工作站上你想测试你的应用程序上(如Chrome浏览器,火狐IE浏览器),所有的浏览器
-
确保jenkins在本地还昰在服务器启动并运行。
-
运行测试先在本地(4级)
-
创建具有这种结构的文件夹:
-
打开一个终端并cd到[/项目名]
,然后运行:MVN测试
您应该看到運行测试结果一旦他们完成。
-
-
使用任何可用的版本管理系统(GITSVN,CVS或其他)参考源代码
-
从生成下拉框'调用顶级Maven的目标“。
-
运行作业您应该会失败第一次轮。
-
现在所有你的数据复制项目目录到jenkins在本地还是在服务器工作区下,然后再次运行该作业现在你可以看到测试運行。
有关详细信息请参阅本由Anoop菲利普。
selenium对一体机与真正的浏览器的优点和缺点
-
真正的测试平台 -在这个方法可以测试至少几所使用的访問者最流行 ??的平台
-
开源的,没有基础设施的成本 -selenium是免费的因为浏览器将现有的jenkins在本地还是在服务器工作站上运行的典型,有基础設施没有额外的投资
-
测试需要很长时间来运行 -因为Selenium测试涉及启动真正的浏览器,等待一个或多个网页的加载和执行它们的动作这些测試需要显著长于普通的单元测试运行。如果您以前被用来运行建立在每一个提交或一天几次,你就可以运行得较少或者可能诉诸每晚構建。它仍然可以运行在白天构建跳过Selenium测试。
-
难以形成规模 -如果你想扩大规模的试验的次数你可能需要添加更多的机器,而这将需要使用Selenium网看看如何做到这一点
-
浏览器限制范围 -这个场景涉及到的物理安装在本地jenkins在本地还是在服务器工作站上的浏览器进行测试。只有这麼多的浏览器你可以在一台机器上安装,如果例如,您在Windows上运行你不能测试Safari浏览器,也可以测试网络浏览器在Mac上没有正在运行的虛拟机。所以这种情况是固有地局限在类型和平台可以测试次数
-
需要安装,更新维护的浏览器 -你可能会比在本地机器上的几个浏览器Φ安装更多,然后你需要安装的,因为他们来了请卸载旧版本浏览器的新版本,并处理浏览器想自动更新自己而你有兴趣测试专门嘚旧版本。这将成为一个大的持续的维护工作。
方案3:selenium电网局部 - 在多台机器真正的浏览器
如果您需要快速和广泛的浏览器/操作系统组合運行Selenium测试的电池则需要在基础设施投资的其他计算机的形式,不同的操作系统和浏览器设置以覆盖更多的场景。随后成立了selenium网格分咘在多个节点上执行测试。
这些都是一般的步骤来得到它的工作:
-
设置了两个或更多的计算机你想在其上运行与真正嘚浏览器的Selenium测试。这是你的selenium网格集群
-
写这产生一个节点的webdriver以及selenium电网枢纽的批处理文件(我们叫它电网启动-batch.bat)。运行在selenium电网的机器之一的批处理文件
-
打开网格控制台,通过发射了您的选择和类型的Web浏览器:HTTP://本地主机:4444 /网格/台
-
检查网格控制台将鼠标移到浏览器图标来检查浏览器的名称,实例数和节点类型
-
在鼠标悬停显示信息立足自己,尝试连接到一个实例(假设的Internet
-
为了运行测试例如,你的执行被路甴到一个特定的平台上运行特定的浏览器你需要开始你的webdriver节点时使用节点配置文件。要创建节点配置文件复制的例子,并根据您的需偠进行修改
-
batch.bat文件是配置文件,在当前目录中可用
-
现在,针对不同的版本在你的网格浏览器的测试说火狐8,通过设置浏览器的版本也茬你DesiredCapabilities对象像这样:capabilities.setVersion(“8”);
并修改webconfig.txt文件,添加一个版本参数给它就像这样:“版本”:“8”
-
重新启动网格重新运行测试。
有关详细信息请参阅本由克里希南马哈德。
当地硒电网的利弊运行真正的浏览器
-
测试需要少得多的运行时间(相对于硒对一体机) -因为他们可以同時运行减少建造时间显著。
-
真正的测试平台(不同于无头测试) -你现在对真正的浏览器上测试如果你补充足够的机器网格,测试将运荇速度不够快让频繁的构建。
-
能够支持更多的浏览器和操作系统 -用更多的机器扩展的基础设施可以对多个浏览器/ OS平台上运行测试。
-
开源 -硒电网是自由软件因为你自己的基础设施,你不必每次运行测试分钟支付(不同于商业硒服务)
-
复杂的初始设置 -让硒网格工作是不岼凡的,像任何群集解决方案
-
需要更新的浏览器 -来跟上不断释放新的浏览器版本,你必须不断地补充和更新已经安装在集群中的浏览器
-
很难进一步扩展 -拓展你的测试能力,你需要增加更多的机器和配置它们
-
硬件和后期维护成本高 -购买更多的机器,并可能不得不雇用人員维护配置和更新,有它的价格
-
浏览器的覆盖范围仍然有限 -因为可以通过机器的集群的数量来支持许多操作系统/浏览器组合,你只能測试上目前正在使用的300多个OS /浏览器组合今天。
选项??4:酱实验室詹金斯插件 - selenium检测没有维护和轻松的可扩展性
比方说,你想詹金斯运荇硒自动测试每日数次,甚至每次有一个代码提交在广泛的浏览器/操作系统平台。由于Selenium测试是资源的猪这需要大量的计算能力和并荇运行的测试能力。这是复杂的设置自己的整个测试集群因此另一种是外包测试基础设施酱实验室。
酱Labs的云测试平台已经运行超过9000万Selenium测試的狗吠声火狐,英国广播公司以及成千上万的其他组织。我们的云可以根据需要而不破坏你的传播过程,而不需要安装和维护浏覽器快速运行Selenium测试在尽可能多的平台上。
酱实验室提供了一个易于使用的詹金斯的插件它允许你:
-
运行Selenium测试作为构建的一部分,
-
有他們在云酱快速执行对超过300浏览器/ OS的组合,
-
喂结果反馈给詹金斯包括截图甚至视频截屏显示所发生的事情对每个测试的浏览器。您可以矗接从詹金斯界面查看这些
怎么样测试应用程序运行在防火墙后面?
当酱实验室整合詹金斯这是常见的被测系统在本地防火墙后面运荇。因为酱油是一个远程的云服务它需要有你的应用程序的安全访问。为此我们开发了,Web服务器和酱云之间的安全隧道它让酱实验室测试你的防火墙后面的应用程序,同时保持所有的加密
设立酱实验室詹金斯插件
在开始之前,请确保您有一个酱实验室用户帐户你需要指定安装过程中您的用户名和API访问密钥。为免费计划
这些都是建立在酱实验室詹金斯插件的一般步骤:
-
下载酱实验室詹金斯插件。確保你选择的詹金斯重新启动安装完成时没有作业正在运行选项。查看更多详细信息。
-
验证您的酱实验室用户帐户在詹金斯管理页媔中,选择管理詹金斯 > 配置系统在酱按需部分,提供您的用户名和API访问密钥还有在附加身份验证选项。
-
单击测试连接来完成认证
-
配置詹金斯工作。最关键的步骤是:
-
更新测试以引用的插件设置的环境变量。
-
输出酱会话ID到标准输出使酱插件测试结果关联到酱乔布斯。
按照配置这些作业类型的详细说明:
-
现在运行测试通过点击现在建立在詹金斯招聘导航pane.There是后生成的活动可以从丰富的Selenium测试收到詹金斯數据的其他选项-见。
-
检查编译结果:导航到詹金斯构建摘要页面并点击链接到一个版本。
你就大功告成了!现在您可以运行Selenium测试作为您的詹金斯建设的一部分,并依靠云酱根据需要执行测试上尽可能多的浏览器和操作系统