使用Pabot并行运行RF案例
一、问题引入
在做接口自动化时随着案例增多,特别是流程类案例增多,特别是asp.net的webform类型的项目,再加上数据库校验也比较耗时,导致RF执行案例时间越来越长,就遇到这样一个问题,705个接口测试案例(案例包含流程类案例,一个流程类案例可能包含3、4个单个案例,单个案例又都包含登录),通过Jenkins在单机上要跑13小时30分钟,而且目前还不是整个项目所有的接口测试案例,案例个数还在继续增长,一个系统假如有3、4000个接口那如果按照这个速度可能得跑一两天,这是很可怕的。
二、解决方案
于是就是在想有没有方法能缩短运行时间呢?一是将大的项目分成几个子模块,测试案例也是分为几个子模块,这样可以做分布式测试,二是进行并行测试,在一台机子上开启多个进程进行测试,最好的方案是一、二的结合,在网上搜了下,没想到已经有开源的类库Pabot。Pabot通过开启多个进程以Suite为单位并行运行RF测试案例,而且对于进程之间资源共享问题也有锁机制。它也兼容RF命令行参数,这样在Jenkins中修改之前RF命令也很容易,只需加几个参数就可以了。
三、测试
这里新建了一个PabotDemo,包含3个Suite,每个Suite中还有3个Test,每个Test都是执行相同的步骤sleep 10s,暂停10s。如果在RF中运行9个Test,每个Test耗时10s,那就需要90s。下图为在RF中运行的测试结果。

如果使用Pabot,开启多个进程并行运行案例,那就会减少运行时间,这里分别2个进程和3个进程。
2个进程:pabot --processes 2 PabotDemo,这里原本要90s的案例耗时63s。


3个进程:pabot --processes 3 PabotDemo,这里原本要90s的案例耗时32s。


上面简单测试了使用Pabot开启多个进程并行执行RF案例,这里没有进程间的资源共享,所以没加锁,具体使用可以参考:https://github.com/mkorpela/pabot。使用Pabot开启2个进程还是在原来单个执行机运行上面提到的705个测试案例,耗时减少5个小时,通过率也有提升,运行时间下降到8小时30分。
四、进一步优化
在开启2个进程并行运行705个案例减少5小时的运行时间,如果再多开启几个进程还是有下降的空间,除了多开几个进程外,还可以对案例进行优化。我们应该都下载过文件,有的大文件几个G,有的只有几M,小的文件很快下载完了,大的文件可能才刚开始,影响下载时间的关键因素可能就是几个大的文件,为了达到并行下载的目的,可以将大文件分为几个小文件,这样并行下载效果更好。由于Pabot并行运行是以Suite为单位运行的,因为项目的案例结构有的Suite中案例个数100多个,有的只有几个,这样就导致案例少的Suite几个可能已经运行完了,案例多的Suite可能才刚开始,并不能发挥并行运行的最大效果,分布不均,所以需要对案例进行调整,将案例多的Suite进行拆分,这样也能开启多个进程,不然总共有3个Suite开启5个进程,那也没用,还是只有3个进程在运行,上面只是举了下载文件的例子,还有好多整体与部分的关系,有点类似木桶原理。
五、优缺点
这里只是使用Pabot进行的接口案例执行,对于UI测试案例可能会杀浏览器进程的,这里没测是否能用Pabot进行测试。
六、总结
上面优化案例结构也是为了并行执行案例进行的优化,其实还有地方进行优化,比如登录,目前每个案例在执行时都会先进行登录,算是多了一个get和post请求,特别是那种json的,可能就是先get、post进行登录,然后就只有post请求就结束的,如果能模拟人的操作,同一个用户只登录一次,那效率应该也会有所提高,案例少的话可能不明显,案例多的话应该就会明显些。
使用Pabot并行运行RF案例的更多相关文章
- .NET下的并行开发(案例代码)
以下主要是通过一个报表处理程序来说明并行开发的方式.对于数据冲突和共享,可以通过对象数组解决.设计到并行的核心代码已用红色标出.在并行程序的处理上,需要把原来串行的子公司变成一个一个类的对象,让所有的 ...
- hadoop一代集群运行代码案例
hadoop一代集群运行代码案例 集群 一个 master,两个slave,IP分别是192.168.1.2.192.168.1.3.192.168.1.4 hadoop版 ...
- Robotframework(3):使用pycharm编写和运行RF脚本
转自:http://blog.csdn.net/ccggaag/article/details/77529724 我们在使用Robotframework时,经常编写脚本的人或许会不习惯,不过没关系!我 ...
- 用Parallel.For()和Parallel.For<TLocal>()方法实现并行运行迭代
Parallel类是.NET 4中新增的抽象线程类.如果你开发用的是VS2008或更低版本,那么就直接关闭吧,下面两个示例用了匿名委托,如果不知道匿名委托的语法,那么先去简单了解一下,不然很难理解示例 ...
- Oozie_03运行官方案例【20161116】
3.1官方的案例 (1)Oozie根目录下找到 oozie-examples.tar.gz (2)解压tar -zxvf oozie-examples.tar.gz 生成example文件夹 [ha ...
- ansible之并行运行
ansible之并发运行 转载 2016年07月14日 12:33:39 标签: 并发 / ansible 4474 ansible默认只会创建5个进程,所以一次任务只能同时控制5台机器执行.那如果你 ...
- Parallel Programming-使用CancellationTokenSource调度并行运行的Task
本文主要介绍使用CancellationTokenSource调度并行运行的Task. 一.使用场景 有多个Task并行运行时,如果其中一个Task所运行的程序出现异常,我们想马上终止所有待执行的Ta ...
- 运行RF测试案例,显示unable to open socket to "localhost:56505" error: [Errno 10061] 错误,且关闭RF卡死的解决办法
问题描述: 执行WEB ui测试案例后,执行请他的测试案例显示unable to open socket to "localhost:56505" error: [Errno 10 ...
- Android环境配置及运行helloWord案例
Android的环境搭建步骤,以及输出一个helloWorder 1:下载Android开发环境 及是: SDK adt-bundle-windows-x86_64-20140702 此时的版 ...
随机推荐
- docker安装radis
sudo docker search redis sudo docker pull redis sudo docker run --name redis6379 -p 6379:6379 -v /op ...
- 关于webconfig的记录恢复本
<?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...
- PHP幸运大转盘源码,支持ThinkPHP
原理 先看图 可以看到1-6等奖都只有1个 ,7等奖有6个.指针默认指向上图位置,记为0°. 每个奖项对应不同的角度,圆的角度为360°,分成12块,所以每块为30°. 为了防止指针指着相邻两个将向之 ...
- 我的idea突然没有SVN了是怎么回事
总结一下没有svn选项的几种情况: 情况1:IntelliJ IDEA打开带SVN信息的项目不显示SVN信息,项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关,叫Ena ...
- ABP框架系列之二十六:(EventBus-Domain-Events-领域事件)
In C#, a class can define own events and other classes can register it to be notified when something ...
- python 复数类型
1 Python中的算数虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数表示虚数的语法:real+imagj实数部分和虚数部分都是浮点数虚数部分必须有j或J下面是些得数:64.23 ...
- Codeforces Round #486 (Div. 3) A. Diverse Team
Codeforces Round #486 (Div. 3) A. Diverse Team 题目连接: http://codeforces.com/contest/988/problem/A Des ...
- pyinstaller打包程序 带图片
首选说一下,这种打包方式只能在本电脑上使用运行正常 准备:.py文件:你的程序 gif文件:你要用的图片 第一步: 在上面文件所在目录打开cmd 输入 pyi-makespec FP.py 会生成一个 ...
- shell 命令 zip unzip
工作当中,经常要用到zip压缩. zip 将文件夹打包: 如文件夹名 xxx zip -r xxx.zip xxx unzip unzip -o xxx.zip -o 覆盖原有的文件夹 查询更多参数: ...
- Vuejs——(8)Vuejs组件的定义
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components ...