基于luckyframe二开大规模UI自动化实践

项目背景

  1. 公司的老项目,toB项目,已经运维有十个年头,客户数量规模一百多家,目前大版本有三个主要的对外发布代码分支,加上trunk主干的分支,还有大大小小的客户个性化定制的若干版本。整个测试团队总共才十五个人左右,要想靠人工回归版本工作量巨大,所以领导决定引入UI自动化测试进行版本回归测试。

第一个UI自动化测试版本

  1. UI自动化测试第一个版本是基于testng和selenium框架做的,UI测试用例是用java代码写的,每个测试用例对应了一个class。随着UI用例数量越来越多,当时UI用例已经有一千多个class类了,用例难以管理。虽然使用了多线程,但是随着用例数量规则越来越大自动化执行速度还是越来越慢。在应对多个代码分支的时候也束手无策。基于上面的痛点,决定引入平台化的自动化测试,调研了市面上的自动化UI测试,最终选择了luckyframe,在luckyframe基础上进行二次开发,废弃了testng的老的那一套。

平台化

  1. 用例执行速度问题优化
    uckyframe自身支持执行机横向扩展,基本解决了用例执行速度问题,但是随着测试计划增多,目前有七十多个测试计划,单个代码分支版本的UI用例有1000+的数量,在测试资源不够充足的情况下,当前有四台执行机,想要执行完一次调度七十多个计划,那么每台执行机需要同时运行十几个任务计划,这会导致执行机卡死。同时,四台机器怎么分配任务计划也是个大问题,因为每个测试计划包含的用例数量不一,执行时间也不一样,怎么平均分配到每个执行机器上,理想情况是每个执行机都分配均衡。基于以上痛点,在参数管理增加一个参数,控制每个执行机同时可执行的任务数量。增加任务调度管理功能,所有的测试任务执行都通过任务调度来管理执行,如果超出客户端可执行的任务数量或者执行机不通,就排队等待执行,这样在执行一个版本回归测试的时候可以直接运行全部测试任务调度。为了解决计划执行机分配不均问题,在任务调度管理增加备选客户端IP的选择,支持多选,在主选择的客户端没有空闲的时候,选择有空闲的其他备选客户端。改造完成后,原本需要八个小时左右的运行时间,压缩到了两个小时内。

    ![!\[调度管理\](https://img-blog.csdnimg.cn/direct/554faf9899cf4b819d76b93d585c1342.png](https://img-blog.csdnimg.cn/direct/ea6311a40dc7465b8928c0ce4bdf5d68.png)
    

在这里插入图片描述
在这里插入图片描述

用例写作

  1. 引入了page object设计模式,即PO。需要规范元素命名规则,在导入页面元素或者新增页面元素后,在用例写作时候可以直接引用,这样可以很大提高用例的复用性,同时元素有变动后修改起来也很方便,只需要修改PO就行,不需要在所有涉及到的用例,这也是PO的优点所在。

在这里插入图片描述
在这里插入图片描述

不同代码分支问题

增加了一个项目复制的功能,在项目添加的时候可以选择复制项目选项,复制选择的项目的全部相关的,如测试步骤,测试计划,任务调度,PO等等,然后在此基础上就行微调就行,解决多个代码分支有些许不同的差异问题。
在这里插入图片描述

踩过的坑

  1. 在大批量测试用例执行时,selenium3.x的版本会出现socket通讯超时然后卡死的问题,需要升级到4版本,之前有在
    luckyframe提过issue: https://gitee.com/seagull1985/LuckyFrameWeb/issues/I521S8,目前官方还未升级需要自己动手升级。
    大批量用例执行时候可能会出现的这个问题,百度了下是端口满了,调大了待观察效果。
    在这里插入图片描述
    后续看情况再更新。

目前楼主测试开发岗位,专注效能这块,有感兴趣的同行可以加微信交流下
在这里插入图片描述

LuckyFrame测试平台是一款免费开源的测试平台,最大的特点是全纬度覆盖了接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试,测试关键字驱动也很大程度上解决了测试同学代码基础弱的问题。同时也集成了质量管理相关的一些功能,解决QA的日常工作中,项目过程数据的收集问题,并能展示一些简单质量报表。 LuckyFrame功能特点: 1、分布式测试:使用Web-Client的方式,Web端负责基本信息管理展示,Client负责用例执行,任意无限扩展客户端。 2、专业用例管理:自动化用例的专业管理方式,让您编写自动化用例更简单,直观。 3、质量管理:Web端不仅仅有用来管理自动化相关的模块,更可以做一些简单的质量数据收集分析以及数据的多图表展示。 4、多线程执行用例:客户端执行用例可以指定线程数量,用例运行更快速。 5、多语言驱动:支持JAVA以及Python语言编写测试驱动,自动化测试手段更加灵活多变。 6、定时任务调度:支持自定义配置调度任务,包括指定线程数,指定执行客户端,远程执行shell重启tomcat,对jenkins中的项目进行构建等。 7、测试过程监控:客户端运行用例采用命令行的方式,在客户端可以实时查看过程。Web端可以通过任务查询查看测试进度。 8、日志定位:客户端LOG4J+数据库记录测试过程日志,2种方式都可以通过Web端实时查看定位问题。 9、接口+Web UI+移动端UI多纬度自动化:支持接口+Web UI+移动端UI自动化,Web UI自动化采用WebDriver3.0封装,移动端UI自动化采用APPIUM封装,纯关键字驱动,0编码。 10、HTTP+Socket接口免编码:完全封装HTTP以及Socket接口,协议模板+纯关键字驱动,免编码,初级测试人员的福音,与其他类似开源工具相比优势明显 11、在线调试用例:用例步骤管理界面直接调试自动化用例,避免使用开发工具调试带来的麻烦,省心、省力、省脑子,但是不能不要脑子。 12、Bootstrap 小清新风格界面:整套Web系统基于Bootstrap风格,以及多种其下的插件,构建清爽界面。 13、更多...:还有更多自动化的创意,期待你的体验发现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

czx758

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值