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

这篇具有很好参考价值的文章主要介绍了APP流水线测试领域探索与最佳实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 背景

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

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

2 方案分析

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

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

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

3 方案实施

架构图:

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

流程图:

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

执行结果:

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

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. 线上版本可做日常化监控,及时发现问题

作者:京东物流 范文君

来源:京东云开发者社区 自猿其说Tech文章来源地址https://www.toymoban.com/news/detail-594381.html

到了这里,关于APP流水线测试领域探索与最佳实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【物联网】继续深入探索ADC模拟转数字的原理——Flash ADC&流水线ADC&逐次逼近型SAR ADC

    这篇文章主要弥补上一篇关于ADC的不足,更加深入了解ADC数模转换器的工作原理,举例常见的三种ADC,分别为Flash ADC流水线ADC逐次逼近型SAR ADC。 【物联网】深入了解AD/DA转换技术:模数转换和数模转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不

    2024年02月05日
    浏览(29)
  • 在 CI/CD流水线中运行自动化单元测试的4个原因

    目录 什么是单元测试? C#中的单元测试示例 我需要在CI/CD 流水线中运行自动化测试吗? 开发人员代码验证反馈循环 预验证 步步为营 减少“另一个开发人员写了这段代码”的问题 单元测试 什么是单元测试? 单元测试是一小段代码,用于测试应用程序编写的代码的逻辑。单

    2024年02月16日
    浏览(63)
  • 如何使用CodeceptJS、Playwright和GitHub Actions构建端到端测试流水线

    介绍 端到端测试是软件开发的一个重要方面,因为它确保系统的所有组件都能正确运行。CodeceptJS是一个高效且强大的端到端自动化框架,与Playwright 结合使用时,它成为自动化Web、移动甚至桌面 (Electron.js) 应用程序比较好用的工具。 在本文中,作者探讨如何使用 CodeceptJS、

    2024年02月05日
    浏览(61)
  • 1.6流水线:流水线、流水线周期、流水线执行时间、流水线吞吐率、流水线加速比

    相关参数计算:流水线执行时间计算、流水线吞吐率、流水线加速比等。 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均

    2024年02月09日
    浏览(39)
  • 8位加法器的流水线设计(2级流水、四级流水)

    思考:流水线的设计是为了提高频率,在一个耗时比较长的组合逻辑中,加入寄存器, 可以将这个较长的组合逻辑分裂几份,从而提升主频,缺点是增加了寄存器的资源。 二级流水线的加法器的设计思想如下: 在第一个周期完成低四位的加法计算,使用一个四位加法器即可

    2024年02月11日
    浏览(31)
  • 云效-流水线(基本教程)

    阿里云效地址: https://accountid-devops.aliyun.com/ 代码在码云, 服务器在腾讯云, 代码是个聚合代码 1. 选择适合自己的模板 2. 创建码云链接 3. 选择代码仓库, 分支即可下一步 4. 部署,主机部署 5. 保存运行(获取打包路径) 6. 完善部署命令 按自己的需求进行填写, 包括打包成docker镜像

    2024年02月09日
    浏览(43)
  • jenkins流水线

    1、 二、 三、 四、 五、 六、  

    2024年02月05日
    浏览(46)
  • 【Jenkins】pipeline流水线

    流水线既能作为任务的本身,也能作为jenkinsfile,使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同事参与进来,同时也可以编辑开发jenkinswebui不能完成的复杂的构建逻辑,作

    2024年02月09日
    浏览(57)
  • Jenkins流水线怎么做?

    问CHAT:Jenkins流水线怎么做? CHAT回复:Jenkins流水线是一种创建、测试和部署应用程序的方法。以下是为Jenkins创建流水线的步骤: 1. 安装Jenkins:首先你需要在你的服务器上安装Jenkins。这个过程可能会根据你的操作系统有所不同。 2. 安装必要的插件:为了使流水线工作,你需

    2024年01月24日
    浏览(42)
  • UnityShader(一)渲染流水线

    目录 一、什么是渲染流水线 二、渲染流程的三个概念性阶段 1.应用阶段(Application Stage) 一、准备好场景数据 二、粗粒度剔除 三、设置渲染状态 2.几何阶段(Geometry Stage) 3.光栅化阶段(Rasterizer Stage) 三、CPU和GPU的通信 1.把数据加载到显存中 2.设置渲染状态 3.调用Draw Ca

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包