APP流水线测试领域探索与最佳实践

1 背景

APP端UI自动化因其特殊性(需连接测试机)一般都在本地执行,这种执行方式的局限性有以下弊端:

  1. 时效性低:研发每次打包后都需要通知测试,测试再去打包平台取包,存在时间差
  2. 研发自测或产品验收无法使用自动化脚本:研发自测及产品验收时如果想用自动化脚本需要搭建相应的运行环境并准备测试机,繁琐的步骤导致研发/产品放弃使用自动化。而手工验证的过程中经常需要测试协助下单、改数据,效率低
  3. 本地执行的结果没有持久化存储,不利于进行结果度量

2 方案分析

为解决以上问题需要搭建流水线,CI/CD领域常用的流水线平台非Jenkins莫属,Jenkins功能强大、可二次开发,但执行APP自动化需要windows执行机、模拟器/真机,这些要求无疑增加了测试成本。与之相比,Bamboo平台是基于Jenkins开发的流水线平台,不仅继承了Jenkins的众多功能,且支持图形化配置,并对接了赛博平台等其他平台。

从下图对比中可以看出,复用现有的Bamboo平台成本更低,同时需要做以下改变:一、自动化框架需要改为airtest框架;二、需要对测试报告进行处理以符合预期。

在这里插入图片描述

3 方案实施

架构图:

在这里插入图片描述

流程图:

在这里插入图片描述

执行结果:

在这里插入图片描述

4 执行过程中遇到的问题及解决方案

1.bamboo打debug包成,release包不成功

解决:证书管理中上传 sign.properties 文件,该文件中去掉绝对路径信息,使用相对路径

2.赛博平台无法输入汉字

解决:用poco().set_text()替代text()方法

3.跑脚本失败提示 RuntimeError: unable to launch AndroidUiautomationPoco

解决:赛博的机器有ATX,会影响poco初始化。poco初始化前加代码:

# 停止ATX
try:
shell("am force-stop com.github.uiautomator")
shell("/data/local/tmp/atx-agent server --stop")
except Exception as e:
print("兼容非赛博机器")

5 待解决问题

1、接入coding平台,只支持airtest框架

影响:需要对原框架进行改动,成本较高。与赛博平台负责产品沟通过,赛博平台后期会开发对接其他框架的功能。

2、手动配置的数据比较多:模块、用例、用例集

影响:除了测试脚本外还需单独配置模块、用例、用例集,人工成本较高。后需可考虑coding平台代码合并后触发定时任务自动生成对应的模块、用例、用例集。

3、无法指定机型

影响:无法指定机型进行兼容性测试,与赛博平台分则产品沟通过,暂未有计划修改此项。

4、京管家未接入线上打包平台

影响:测试过程中需要本地保留apk包,占本地内存且容易混淆;无法进行版本管理,需要复现问题时不能及时提供历史版本;UED走查或产品验收时只能京ME联系研发取包,时效性差;无法接入流水线。

6 预期收益

流水线不仅解决了环境配置及测试机不足的问题还有以下优势:

  1. 学习成本低,操作简单,预计可节省三分之二的工时
  2. 执行结果可以做持久化存储,后期可与自动化度量平台相结合进行数据分析
  3. 流水线中可加入Sunglasses原子,UI自动化测试过程中监控Flutter异常
  4. 线上版本可做日常化监控,及时发现问题

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值