使用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请求就结束的,如果能模拟人的操作,同一个用户只登录一次,那效率应该也会有所提高,案例少的话可能不明显,案例多的话应该就会明显些。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使⽤ 使⽤pabot并⾏执⾏ 并⾏执⾏robotframework⽤例 ⽤例 主要观点:使⽤pabot并⾏运⾏robotframework,可以解决:robotframework执⾏案例时间长的问题 解决执⾏案例时间长的⽅案: 解决执⾏案例时间长的⽅案: ⽬的: ⽬的: 缩短案例的运⾏时间 两种⽅法: 两种⽅法:      1. 将⼤的项⽬分成⼏个⼦模块,测试案例也是分为⼏个⼦模块,这样进⾏分布式测试 2. 在⼀台机⼦上开启多个进程进⾏测试 解决⽅案: 解决⽅案: 使⽤ 使⽤pabot类库: 类库: pabot 通过开启多个进程以Suite为单位并⾏运⾏robotframework测试案例,并且对于进程之间资源共享的问题也有锁机制。 安装: 安装: pip install robotframework-pabot pabot命令⾏参数: 命令⾏参数: --processes [NUMBER OF PROCESSES] ——> 并⾏的线程数(最⼤是机器CPU的数⽬) --pabotlib启动PabotLib远程服务器。这⽀持在并⾏测试执⾏之间进⾏锁定和资源分配。 --pabotlibhost [HOSTNAME] ——> 远程服务器的主机名(默认是127.0.0.1) --pabotlibport [PORT] ——> PabotLib远程服务器端⼝号(默认为8270) --resourcefile [FILEPATH]可以包含⽤于分配资源的共享变量的⽂件的指⽰符。这需要与pabotlib选项⼀起使⽤。 实际测试: 实际测试: 这⾥新建⼀个pabotdemo⽂件夹,下⾯包含有3个测试⽤例⽂件(即:3个Suite),每个⽂件中包含有3个Test(即:3个测试⽤ 例)。每个测试⽤例都是执⾏相同的步骤sleep 10s。如果在RF中运⾏9个Test,每个Test耗时10s,那就需要90s。 下图为在 下图为在RF中运⾏的测试结果: 中运⾏的测试结果: 使⽤ 使⽤pabot开启 开启2个进程: 个进程:pabot --processes 2 PabotDemo,耗时: ,耗时:63s 使⽤ 使⽤pabot开启 开启3个进程: 个进程:pabot --processes 2 PabotDemo,耗时: ,耗时:32s 上⾯简单测试,没有进程间的资源共享,所以没加锁,具体使⽤可以参考: 注意:Pabot并⾏运⾏是以Suite为单位运⾏的,因为项⽬的案例结构有的Suite中案例个数100多个,有的只有⼏个,这样就导致案 例少的Suite⼏个可能已经运⾏完了,案例多的Suite可能才刚开始,并不能发挥并⾏运⾏的最⼤效果,分布不均,所以需要对案例 进⾏调整,将案例多的Suite进⾏拆分,这样也能开启多个进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值