首页 > 代码库 > Robot Framework--11 RF结合Jenkins

Robot Framework--11 RF结合Jenkins

转自:http://blog.csdn.net/tulituqi/article/details/17846463

 

为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷保驾护航。这其中有个重要的工具Jenkins,同时也是应群里朋友们的要求,这次就来介绍一下RF如何快速便捷的结合Jenkins这一利器在windows上进行自动化测试(linux我没机器,大体步骤差不多,度娘应该有)。

 

其实个人觉得RF和Jenkins的结合很简单,概括一下就这几点:

1、下载Jenkins

2、添加节点

3、安装robotframework插件

4、配置job运行测试

 

如果你已经在使用Jenkins了,那么1、2点应该可以跳过了。因为贫道比较懒,所以推荐的也是懒人大法,OK,让我们开始吧。

 

一、下载Jenkins

下载地址:http://mirrors.jenkins-ci.org/

贫道比较推荐下载war包的,进入上面的地址,页面里有war的链接,各种类型各种版本的release,大家根据自己需要来下载吧,具体英文含义请问度娘。

如果对Jenkins版本没特别的要求,就进war的第一行release里面找最新版本用吧。

 

为啥war包最简单呢?如果你有tomcat,那么把war包放到他的webapps目录里就可以了,直接启动你的tomcat即可。

通常访问路径是http://localhost:8080/jenkins

如果你没有tomcat,那就更简单了,我不会教你怎么去安装tomcat,jenkins的war包里内置了jetty,我们直接用命令行java -jar jenkins.war就可以启动了。如下图:

当然我更推荐这样的方式,因为jetty的方式直接就可以让其他人访问了,可以看到上图倒数第5行的地址 0.0.0.0:8080,直接就把本机变成服务器了。

而在tomcat里还要修改配置ip为0.0.0.0才行。所以,对和我一样的懒人来说,这样方便了很多。

当你看到一行信息:Jenkins is fully up and running,就代表Jenkins的服务已经启动了。

推荐大家在chrome里访问,速度会快些,打开我们的jenkins地址:http://192.168.1.6:8080(IP以你本机IP为准,也可用localhost,比起tomcat来说,url还不用写jenkins),会看到如下图的页面:

 

这样一个基本的Jenkins就完成搭建了,很简单吧,一个命令行搞定。

当然,有很多的插件会使我们更方便使用Jenkins,但是这个不是我这篇文章要讲的内容,有需要可以自行度娘,刚才下载war的页面有个plugin的链接就是插件的下载地址。

我简单推荐几个常用的插件:

ant、dashboard-view、disk-usage、subversion等等,现在的Jenkins比较成熟了,插件也是有多种多样,找适合自己使用的插件安装吧。

 

二、添加节点

我们启动Jenkins服务的这台机器在Jenkins里叫做master,而其他的连到master上的机器(物理机、虚拟机都可以)都是slave,也叫节点。

1、点击系统管理,然后点击管理节点,就看到如下界面:

 

2、点击新建节点

(这是静态连接的方式,就是我先设置好节点,由slave自己去连master作为这个节点。另外也有一种动态连接的方式,不用先设置好节点,直接用slave.jar连过来,这里就不详细介绍了)

3、输入slave的名字,点确定

 

上图有几个需要注意的地方我标注了一下:

a、executors:表示在slave上可以并行执行几个线程,也可以点后面的问号看说明。对于RF来说,建议设置为1。

b、远程工作目录:在slave上创建jenkins工作目录的路径,我一般设置为D:\JK

c、标签:可以给slave加上一个或多个标签,通过标签选择slave

d、启动方法:启动slave的方法,推荐选第二个Launch slave agents via Java Web Start

注意:如果是用来执行RF自动化测试案例的slave,严禁选择windows service的方式,否则后果自负。

 

我们给这个slave加上2个标签slaveA和slaveall(节点的名字slave1也可以算做标签),设置好之后点保存。如图:

图中可以看到有多种方式来启动slave,选一种来启动吧,推荐2。然后我们再加个slave2,标签就用slaveB和slaveall,有机器的可以自己找两台来连一下,没有的话就自己本机也可以当slave连上来,这样自己的机器又当master又当slave,练习一下无所谓了。

我就是这样搞的,如图:

 

 

三、安装robotframework插件

接下来我们要安装插件了,大部分的插件安装方式都类似,主要介绍其中一种。

1、回到Jenkins首页,进入系统管理,点击管理插件

这里有可更新、可选插件、已安装和高级几个页面。

可更新和已安装没啥说的,可选插件里面列了所有的插件和简单介绍,点击他的连接可以进到插件的主页,里面有详细的介绍。

2、我们主要用的还是高级这个页面里的上传插件这个部分:

这里我们需要上传插件的hpi文件,等他提示安装完成,然后重启Jenkins就可以完成安装了。

到最开始我给的地址页面可以找到插件的下载地址,这里直接提供RF的插件下载路径http://mirrors.jenkins-ci.org/plugins/robot/

RF的插件版本建议选1.3.2,如果遇到解析xml报错的问题,可以加入qq群,那里有个修复的版本。

 

四、配置Job运行测试

接下来就是配置Job了。

1、在首页有提示我们新建任务的,或者点左边的新建链接也可以进入到新建任务的页面。

对于RF的Job来说,自由风格就可以了。多配置也可以,只不过多配置的略有不方便,看各自需要吧,比如你要把一套案例在多个不同配置的slave上执行,就可以用多配置的Job。

2、先来介绍自由风格的,点击OK后,就进入到Job的配置页面了。

可配置的地方很多,为了我们快点能先执行案例先介绍必须设置的几个地方。

a、Restrict where this project can be run: 前面的标签就在这里用上了。用来指定这个Job在哪个标签的slave上执行。多配置项目的指定slave标签不是在这里,下一篇会讲。

b、源码管理:RF的案例推荐使用SVN,本次演示不做处理了,下一篇会简单说说。

c、构建:我们要增加构建步骤-Execute Windows batch command,我先写个简单的命令,完整命令行参数大家自己在命令行输入pybot.bat --help来看

d、构建后操作:我们要增加构建后步骤-Publishes Robot Framework test results,第一个output默认可以为空,如果前面的pybot.bat指定了输出目录,那么这里也要对应进行设置,否则他找不到output.xml就没法解析结果了。

 

3、接着点击立即构建来运行Job。

可以点构建的进度条直接看到控制台输出,或者在点构建的名字在菜单里找控制台输出看结果。

 

4、RF插件的作用

RF插件主要用了解析RF运行后的output.xml文件,将解析的结果展示出来。

a、在Jenkins的首页显示Job最新的构建结果,见最后那列Robot Results

b、在Job的首页会显示运行结果的趋势图

 

 

构建的含义:感觉不需要我解释太多吧,就当作是运行了一次Job就行了,对于开发Job的构建一般是进行了一次代码的打包、编译、部署,对于RF的Job的构建,就是运行了一次RF自动化测试案例。

原本打算弄个master+slave的图,后来实在懒得画了,就是一个master为中心,很多slave连上来,大家自行脑补一下吧 微笑

 

一、slave机器的配置

你可以用物理机或者虚拟机来布置你的slave执行机,用来执行RF自动化案例的机器需要安装或配置以下内容:

1、Java环境,用来启动slave连接Jenkins

2、RF环境,和博客置顶里的一样,也就是和你本机执行的环境一样即可。如果本地安装了什么测试库,要在slave上安装相同的测试库,因为实际执行就是在slave上调用pybot.bat来执行的,所以如果漏了安装某个测试库,可能会导致案例执行失败。

3、修改RF的编码,还记得我以前提过的修改编码将cp437改成cp936么?如果不修改的话,有可能会出现控制台输出的页面看不到中文,可能是一堆????

 

二、多配置项目

前面介绍的Job是自由风格的项目,那么有些情况下可能也需要多配置项目,那么我介绍一下他和自由风格有什么不同。

1、配置不同

首先是指定标签的Restrict where this project can be run没有了,取而代之的是Configuration Matrix

点击Add axis有几个选项,通常前2个就够用了,第3个我也没用过。

第一个Label expression是输入Label的表达式,和自由风格的Restrict类似。

第二个Slaves比较省事:

这里面有Labels和nodes两种选择。

Labels就是我们之前建立节点时添加的标签,如果多个slave都有同样的Label,那么他们就是一个group了。

这种比较适合有多个Job在多台slave上执行的情况,因为如果指定具体的一个slave会出现抢占资源的情况,而指定一个group的话,那么资源会按空闲进行合理分配。

例如:我在管理部门内的十几台机器就是这样来分配的,每个测试组的机器都有单独的标签,整体上所有的机器也有统一的标签,这样在后续调用的时候可以根据情况合理分配。

Individual nodes其实就是节点管理里的那些节点,大家可以自己点进去看。

 

2、显示执行结果不同

选多配置项目和自由风格的差别除了在配置选slave标签的差别,另外就是显示执行结果上的差别了。

我先选1个标签slaveA来执行一下。

a、在Jenkins首页可以看到,多配置项目的Robot Results是空的

b、在Job的首页也没有RF的结果

因为我只配置了一个标签,所以只显示了default,点击default就能看到默认配置的运行结果。

如果设置了多个标签,那么在首页就能看到每个配置的链接。(我后加了个master,但是没运行案例,所以是灰色)

点击slaveA进去看看,这样才是自由风格那种Job首页的显示:

 

以上就是多配置和自由风格的差异,大家自己选择。

 

三、其他有用的Job配置

1、丢弃旧的构建

勾选丢弃旧的构建,有几个选项选择,如图:

保持构建的天数:每个构建能保留多少天

保持构建的最大个数:最多保留多少个构建

这样可以降低一些master的存储和Job的构建历史记录,根据自己需要进行设定吧。

 

2、源码管理

有很多种源码管理工具可以选择,如果没有的话可以下载相应的插件。下面是默认已有的几种

 

比较合适的做法是将你的RF案例用svn管理,本地提交更新,然后每次Job运行时从svn下载最新的代码来运行。

RepositoryURL就是你的svn路径,Local module directory就是下载后的本地路径,默认是当前工作目录,也可以自己定义个目录。例如下图:

我的执行命令当然也是用相对路径来写案例:

pybot.bat  --test * -v url:http://url -i REGTEST -d .\Result test\testsuite.txt

运行后再看下工作区,会整齐一些。

 

3、构建触发器

这里也是比较有用的,有几种触发方式:

a、在其他项目构建完成后才执行:这种就是持续集成时比较适合的,前一个Job负责编译部署系统,或者是执行自动化单元测试,然后来驱动当前的RF的Job执行自动化验收测试。

b、给定一个时间表达式,指定什么时间运行。具体可以参考帮助或者百度。

 

MINUTE HOUR DOM MONTH DOW
MINUTEMinutes within the hour (0–59)
HOURThe hour of the day (0–23)
DOMThe day of the month (1–31)
MONTHThe month (1–12)
DOWThe day of the week (0–7) where 0 and 7 are Sunday.

c、和前一个类似,差别我记得是当你有代码变更才会触发,通常是给开发的Job用的。

 

对于测试来说,基本上前面2个够用了。

4、工作空间workspace

在Job页面的左侧有个链接,工作空间

每次运行的输出结果都会在这里,如果指定了output目录那就可能不在这里了。

RF的插件还有一个作用就是把每次的output文件从slave拷贝到master上,如果以后你的master上空间不够了就要考虑一下是不是每次拷贝过去的文件太多太大了,也可以用丢弃旧的构建清理一下。

清理工作空间也是不错的选择,他主要是清理Slave上的这个Job的workspace。

 

5、权限管理

我目前做的演示都没有涉及到权限管理,这个具体要看你想做什么样的权限控制,如果公司里用windows的域来管理的,那么可以用Active Directory的进行配置(貌似默认有,如果没有就去下载插件安装)。

在系统管理的系统设置页面,有一个启用安全的选项(第一次设置请在系统管理页面点安全设置)

 

然后选择AD,配置上你们自己的域控制器的地址就可以了。

你也可以用Jenkins自己的用户数据库,允许用户注册,然后再授权。

但是我其实最想说的是大家要注意下面的授权策略

 

这个授权策略如果你想只允许管理员来设置的话,就要启用安全矩阵或项目矩阵授权策略。

切记:保存之前千万不要忘记把自己的用户加入到矩阵里,否则没人能进系统管理了。

这事儿我干过,后来我只能清空Jenkins的所有目录,然后重新搞。

下图的添加用户/组就是给你增加用户权限的,然后记得在矩阵里把该勾选的权限都勾选上。

小提示:这里的用户权限包括项目的用户权限都是大小写敏感的,虽然大小写的用户名都可以登录,但是如果矩阵授权的是小写,那么大写用户登录进来实际上是没有权限的。如果遇到授权用户登录后没有权限操作,极其有可能是这种情况。

 

实际上Jenkins不仅是持续集成可以用,实际上我们目前在自动化回归测试上也在使用,因为现在公司很关注每日构建(每天跑自动化测试案例)的结果以及回归日的自动化测试结果。而且因为Jenkins平台的开放性,我们并不仅仅是RF的整合,使用其他测试工具也是可以整合进来的,甚至被大家慢慢抛弃的QTP也有Jenkins的插件(我试着用了用,还不错)。

关于RF和Jenkins的融合我就介绍这么多了,基本没有怎么介绍开发的部分,这个不是我的重点了,相信网上也有很多例子,需要了解的朋友可以自己去搜索一下。

希望这部分内容能帮助到大家快速搭建自己的Jenkins服务器,让你的RF自动化测试自己跑起来。也希望在Jenkins上测试人员和开发人员融合的更好~

Robot Framework--11 RF结合Jenkins