APP流水线测试领域探索与最佳实践 | 京东物流技术团队
1 背景
APP端UI自动化因其特殊性(需连接测试机)一般都在本地执行,这种执行方式的局限性有以下弊端:
- 时效性低:研发每次打包后都需要通知测试,测试再去打包平台取包,存在时间差
- 研发自测或产品验收无法使用自动化脚本:研发自测及产品验收时如果想用自动化脚本需要搭建相应的运行环境并准备测试机,繁琐的步骤导致研发/产品放弃使用自动化。而手工验证的过程中经常需要测试协助下单、改数据,效率低
- 本地执行的结果没有持久化存储,不利于进行结果度量
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 待解决问题
- 接入coding平台,只支持airtest框架
影响:需要对原框架进行改动,成本较高。与赛博平台负责产品沟通过,赛博平台后期会开发对接其他框架的功能。 - 手动配置的数据比较多:模块、用例、用例集
影响:除了测试脚本外还需单独配置模块、用例、用例集,人工成本较高。后需可考虑coding平台代码合并后触发定时任务自动生成对应的模块、用例、用例集。 - 无法指定机型
影响:无法指定机型进行兼容性测试,与赛博平台分则产品沟通过,暂未有计划修改此项。 - 京管家未接入线上打包平台
影响:测试过程中需要本地保留apk包,占本地内存且容易混淆;无法进行版本管理,需要复现问题时不能及时提供历史版本;UED走查或产品验收时只能京ME联系研发取包,时效性差;无法接入流水线。
6 预期收益
流水线不仅解决了环境配置及测试机不足的问题还有以下优势:
- 学习成本低,操作简单,预计可节省三分之二的工时
- 执行结果可以做持久化存储,后期可与自动化度量平台相结合进行数据分析
- 流水线中可加入Sunglasses原子,UI自动化测试过程中监控Flutter异常
- 线上版本可做日常化监控,及时发现问题
作者:京东物流 范文君
来源:京东云开发者社区 自猿其说Tech

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从php5.6到golang1.19-文库App性能跃迁之路
作者 | 百度文库App 导读 本文深入浅出地分享了百度文库App服务端技术栈从PHP迁移至Go的实战经验,包含了技术选型、基础建设、流量迁移的具体方案,以及核心项目案例的重构实践。 全文6209字,预计阅读时间16分钟。 01 动机 长期以来,百度文库App服务端采用 PHP 作为主要开发语言,高效地支撑了业务迭代发展。随着平台流量的持续增长,服务端的负载越来越大逐渐接近系统瓶颈。为了提升系统的负载能力,我们采取了一些优化手段,其中最快最有效的方法是增加在线集群的实例数量。此外,还采用过lua开发项目,承接一些逻辑简单而访问量大的接口来分担负载。由于lua本身的一些局限性,不适合做复杂的业务逻辑。 伴随着IT技术的发展潮流,我们积极响应公司降本增效的号召,决定在2022年年中迁移并重构服务端技术栈。旨在升级技术架构,提升系统负载能力。 把握技术栈迁移和项目重构的时机是很难的一件事情,特别是成熟的团队要进行大的系统改动。如果没有出现真正的痛点,即使研发同学认为技术实现上已经出现诸多设计不合理和有风险的地方,往往并不被允许花大量时间去做技术项目。可一旦连业务人员(产品经理、销售、运营)也...
- 下一篇
使用第一性原理思维思考如何打造提高生产力的平台 | 京东云技术团队
引言 现在全社会都在搞数字化转型,从政府到企业,那么为什么要进行数字化转型呢?本质上还是社会治理和企业经营难度变得更大了。 以企业来说,转型的目标是为了实现有质量的活着,比如能赚更多的钱或者持续保持稳健运营,转型的核心是期望借助数字化技术构建一个管理体系,以应对外部环境动荡、企业竞争变化和技术更新发展带来的不确定性。 数字化转型会带来大量的研发需求,如何更好更快的交付这些需求成为一个突出问题,该怎么打造一个平台去解决该问题?能不能用第一性原理思维去推导出发展方向? 什么是第一性原理 第一性原理指的是,将问题拆分成最基本的事实或规律,根据这些已知信息,不断推演和计算,从而找到解决问题最优路径的方法。 该思维比较出名的应用例子有 埃隆·马斯克降低火箭发射成本的故事。将火箭发射成本进行细分,发展火箭可重复使用发射技术,简化设计和改进工艺以降低火箭制造成本 亨利·福特降低汽车制造成本的故事。将汽车拆解为最基本的部件,利用装配线和流水线工人批量制造汽车 埃隆·马斯克降低汽车电池组成本的故事。分析电池的原材料市场价格,不断逼近这个价格极限,采用自建工厂、改进电池设计、改进生产过程等措施来降低成本 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程