您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
APP流水线测试领域探索与最佳实践
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
APP流水线测试领域探索与最佳实践
自猿其说Tech
2022-12-28
IP归属:未知
11440浏览
# 1 背景 APP端UI自动化因其特殊性(需连接测试机)一般都在本地执行,这种执行方式的局限性有以下弊端: 1. 时效性低:研发每次打包后都需要通知测试,测试再去打包平台取包,存在时间差 1. 研发自测或产品验收无法使用自动化脚本:研发自测及产品验收时如果想用自动化脚本需要搭建相应的运行环境并准备测试机,繁琐的步骤导致研发/产品放弃使用自动化。而手工验证的过程中经常需要测试协助下单、改数据,效率低 1. 本地执行的结果没有持久化存储,不利于进行结果度量 # 2 方案分析 为解决以上问题需要搭建流水线,CI/CD领域常用的流水线平台非Jenkins莫属,Jenkins功能强大、可二次开发,但执行APP自动化需要windows执行机、模拟器/真机,这些要求无疑增加了测试成本。与之相比,Bamboo平台是基于Jenkins开发的流水线平台,不仅继承了Jenkins的众多功能,且支持图形化配置,并对接了赛博平台等其他平台。 从下图对比中可以看出,复用现有的Bamboo平台成本更低,同时需要做以下改变:一、自动化框架需要改为airtest框架;二、需要对测试报告进行处理以符合预期。 ![](//img1.jcloudcs.com/developer.jdcloud.com/7de5208d-2e61-429c-a013-0710c1f65e5820221226154136.png) # 3 方案实施 架构图: ![](//img1.jcloudcs.com/developer.jdcloud.com/c2ab67f1-7587-412f-9c67-04053b3ad34320221226154154.png) 流程图: ![](//img1.jcloudcs.com/developer.jdcloud.com/a62bdcc9-f0c1-44f1-8194-a2b481518a8920221226154207.png) 执行结果: ![](//img1.jcloudcs.com/developer.jdcloud.com/3d15d234-d25e-4d81-8989-e820238a67c820221226154223.png) # 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框架 影响:需要对原框架进行改动,成本较高。与赛博平台负责产品沟通过,赛博平台后期会开发对接其他框架的功能。 1. 手动配置的数据比较多:模块、用例、用例集 影响:除了测试脚本外还需单独配置模块、用例、用例集,人工成本较高。后需可考虑coding平台代码合并后触发定时任务自动生成对应的模块、用例、用例集。 1. 无法指定机型 影响:无法指定机型进行兼容性测试,与赛博平台分则产品沟通过,暂未有计划修改此项。 1. 京管家未接入线上打包平台 影响:测试过程中需要本地保留apk包,占本地内存且容易混淆;无法进行版本管理,需要复现问题时不能及时提供历史版本;UED走查或产品验收时只能京ME联系研发取包,时效性差;无法接入流水线。 # 6 预期收益 流水线不仅解决了环境配置及测试机不足的问题还有以下优势: 1. 学习成本低,操作简单,预计可节省三分之二的工时 1. 执行结果可以做持久化存储,后期可与自动化度量平台相结合进行数据分析 1. 流水线中可加入Sunglasses原子,UI自动化测试过程中监控Flutter异常 1. 线上版本可做日常化监控,及时发现问题 ------------ 自猿其说Tech-JDL京东物流技术与数据智能部 **作者:范文君**
原创文章,需联系作者,授权转载
上一篇:HTTP请求:requests使用 一 基础篇
下一篇:一种基于闭包函数实现自动化框架断言组件的设计实践
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号