数组的名称怎么自动增加_如何降低自动化测试脚本

作者:闲鱼技术-勤明

背景

随着app的快速迭代更新,UI自动化是提高测试效率不可少的手段。 闲鱼UI自动化之前的情况是脚本维护成本较高,因此减少脚本投入的成本是提高自动化效率的第一步

设计思路

1、monkey大家都了解,毫无顺序的随机乱点,可以用来测app的稳定性,如果能记录monkey点击的元素,那就相当于有了自动化脚本里面的操作步骤
2、有了操作步骤后,我们还需要预期结果才能算一条完整的用例,如果能把点击后,界面的元素记录下来,我们就可以作为预期结果来使用
3、然并卵,这样的脚本根本没用,范围不可控,操作路径又太长,没有mock服务端数据脚本根本跑不起来
4、改进策略,脚本按页面的维度来设计,只针对当前页面点击,跳出去后返回到当前页面继续点击下一个元素

实现方案

part1、遍历实现

获取页面元素

1、页面元素获取,使用appium自带方法getpagesource获取
2、 获取界面元素的同时需要获取页面名称,作为唯一标识,Android端能获取activity,ios只能采用hook方式拼接页面名称
3、将页面元素+页面名称记录

页面操作

1、页面判断,不在当前页面,或者appcrash等异常,重启app回到该页面,或者back会页面
2、读取元素包括,id,name,bounds,封装使用id,xpath点击方式,找不到id,就用xpath点击,保底方法
3、过滤不可点击的元素,能区分出来不可点击的元素(本地有记录,但是不对它进行点击)
4、元素属性文件解析,直接生成可点击的属性,如id,xpath等
5、页面元素点击完后,判断是否要滑动屏幕从新加载元素,页面保持不变

记录操作步骤

1、获取到的页面元素是xml格式的,本地不做转换,保存在本地时就保留xml格式,以元素名称命令
2、调用手机截屏操作,截图保存本地,以点击元素命名
3、保留一个文件一直记录操作步骤,从遍历开始到结束一直记录
4、缓存记录已点击的元素,防止重复点击

异常处理

1、app异常
2、跳出app
3、手机断开,服务断开

目前开源的框架appcrawler已支持这些功能,只需要针对操作步骤解析生成脚本就行,如果有资源可以自己重新做一套遍历框架

87335179b2acc9c590c7bd7cafbb2c9d.png

part2、脚本处理&归类

脚本按页面区分

1、如果按业务划分脚本,脚本操作步骤会很长,没有mock数据支持,脚本成功率很低
2、记录 页面名称-页面可点击元素--点击后页面元素(或者页面截图,可以用图片识别能力来做结果比对)
3、细分按模块,每个模块脚本归为一类,目前我采用统一标识moduleName值,1代码模块1,2代表模块2,如果脚本更新,只需要把模块对应的moduleName值变更下(每次脚本更新,之前的脚本保留,新的脚本改下模块值就可以)

脚本存入数据库

1、数据存入mongdb,对应关系表如下

753704e968a446b26b50839f7fcb95b0.png

part3、脚本执行&&报告生成

执行框架-基于appium框架,完善数据驱动的自动化执行框架

封装获取设备的方法

1、获取本地连接的设备,设备号,带入appium启动app
2、带入设备号,带入appium启动app

数据库脚本读取

1、mongdb链接,读取

封装case执行类

1、 数据驱动执行,指定casename,预期结果,操作步骤,截图等
2、 封装连接数据库方法,获取数据库页面元素,存入数组,读取数组数据作为脚本,每一个元素作为一个脚本执行,对应的元素执行失败,不影响其它元素执行
3、统一的去除弹框,针对app登录方法

报告生成

1、报告展示(成功脚本,失败脚本,操作步骤截图,手机日志)

目前效果

目前采用遍历的方式,我们脚本从原有的120个增加到247个,通过率提高到98%左右,覆盖11个主干页面,每次版本,纯手工更新脚本需要半天时间,现在1小时内可以完成更新,目前发现有效问题15个

d020719702d4dc67c9f1b576835f47d4.png

畅想

客户端UI自动化目前发展已经到瓶颈,大家都在尝试新的方式,传统的手动编写脚本方式成本太大,有很多解决方案,目前比较流行的是录制脚本,局限性在于回放的成功率不高,遍历解决脚本生成更方便点
通过遍历生成脚本,使用成本不高,每次在新版本发布后,可以针对对修改过的页面进行遍历,收集更新脚本,目前最大的工作量是脚本需要筛选一次,将部分动态变化的脚本去掉,运行更加稳定
每次版本更新发布,自动遍历修改过的页面,自动更新脚本,零成本脚本生成到运行出结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值