Totoro 框架在自动化测试领域的深耕与收获(2)

发表于:2022-9-20 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:mPaaS    来源:稀土掘金

  三、安卓 App 全自动智能安装
  蚂蚁云测自动化执行集群环境中,应用全自动智能安装是最常见场景之一,然而 Android ROM 的碎片化和各个厂商的定制化,导致在安装过程中需要适配各种各样的弹窗;甚至部分厂商需要登录态且要求输入账号密码,导致在数以千计的机型集群环境中全自动智能安装应用成了一个挑战。如下图部分安装弹窗场景:
  1. 技术选型
  Totoro 框架的自动化服务能力是基于 Uiautomator2 深度定制的,因此整个服务会以 APK 形式安装在手机端。要做到一套完整的全自动安装方案,就必须抛弃在 Totoro 服务 APK 里实现。
  最终,我们采用了可以独立在手机中免安装直接运行的 Uiautomator1 方案进行实现,作为独立的安装弹窗处理专项进行迭代更新。
  针对国内机型及云测机房全线机型,安装弹窗专项项目,前期以全覆盖的方式抽象弹窗点击规律,dump 页面控件信息,查找关键字,做了机型纬度的适配,并且在每个任务有安全失败报警机制,研发人员能够快速兼容问题机型,及 UI 变更。
  最终实现了一套可以处理大部分 ROM 安装弹窗场景的持续迭代的智能安装弹窗处理方案。
  2. 智能盲点
  由于整个弹窗处理依赖与 dump 控件信息逻辑,某些厂商(华为、vivo、oppo 等)为了防止黑产及其他安全考量,部分安装链路上的弹窗页面会禁止 dump 功能,导致我们获取不到页面信息,而无法判断应该点击的页面坐标信息。
  针对该场景,我们对机房的手机做了大量的安装调研,发现弹窗的 button 出现的位置区域和意义是有一定规律的,有些需要服务重启才能 dump 控件信息,有些是按照版本及机型呈现规律的 UI 样式,有些需要特殊的手机 Action 才能获取相应事件。我们将这些规律进一步抽象分类,做了一套智能盲点逻辑,针对无法 dump 到的场景具备拓展兼容的能力。
  3. 算法辅助实践
  智能盲点在个别规律没有考虑周全的场景下仍然会出现失败的情况,那么,如何构建一套自适应的能力呢?
  因此,我们在思考是否可以结合 AI 能力来智能分析页面信息,由算法结果提供具体的点击路径方案,从而快速兼容遗留场景。
  目前结合 OCR 服务,Totoro 具备智能分析界面信息,精准获取点击目标坐标,完成弹窗处理的能力。后续将结合深度算法实践,采用安装场景模型数据,让算法直接给出操作建议,完成整个场景的自适应兼容方法。
  4. 云测效果视频
  目前自动化安装组件经过多纬度的场景兼容,已具备一定自适应能力,能够完成日常自动化安装任务,目前已处于极低成本的维护状态。除了应用在日常自动化任务中,该功能也嵌入了云测平台的远程租用功能,以下是安装效果:
  四、全场景的弹窗治理
  移动自动化测试过程中的各种手机弹窗是影响用例稳定性执行的重要因素之一,面对各种类型及场景的弹窗,Totoro 框架中自研了一套全场景的弹窗治理方案:
  1、深度改造安卓 Watcher 接口
  异常弹窗的处理中,安卓框架中给出了UiDevice.registerWatcher接口方案。但是我们实际使用中发现,这个接口回调不是稳定的,更加官方解释,当自动化过程中查找一个控件失败时候才会触发回调。
  /**
     * Registers a {@link UiWatcher} to run automatically when the testing framework is unable to
     * find a match using a {@link UiSelector}. See {@link #runWatchers()}
     *
     * @since API Level 16
     */
  为了能够构建多场景的监听机制,必须要有一套页面监听的稳定回调接口。经过翻看UiWatcher相关源码发现,可以通过 hook,主动触发runWatchers()。而我们需要做的,还需要在页面弹窗变化时,稳定触发该接口。
  安卓 Accessibility 服务可以通过注册,监听弹窗或者页面甚至一个细微的控件变化,为了性能均衡,只需注册弹窗变化回调事件即可。这样一套稳定的弹窗监听回调机制就构建好了。
  2. 多维度注册监听
  有了保障registerWatcher接口的回调稳定性的机制,那个我们就可以依赖这个接口去监听页面UI的变化,做到稳定处理页面弹窗。结合业务需求及日常用例场景,Totoro 框架中可以针对以下纬度来监听页面变化,做到几乎全场景的弹窗治理。
  ·注册关键字文案监听
  · 注册内容模糊匹配,精准点击目标控件
  · 注册 desc 文案
  · 注册资源 ID
  · 注册目标控件,触发一个 Action
  3. 机器学习图像检测方案
  然后面对无法 dump 到控件信息的非 Native 页面(H5 /小程序),就需要结合机器学习的方式,采用算法能力去分析页面 UI 结构,去处理页面中可能的异常弹窗。
  Totoro 算法同学自研了一套控件 dump 算法能力,脱离平台及页面渲染方式,可以将 App 截图通过算法生产页面原始控件图,满足非 native 场景的弹窗处理。
  目前机器学习的分析能力仍然在快速迭代中,除了应用在弹窗页面分析处理外,还应用在页面异常类型检测(包括加载失败、控件截断黑白屏等),已成功落地小程序日常准入和支付宝钱包日常兼容性等重要业务线中,后续会推广到更多的业务中去,让 AI 赋能不是一句空话。
  五、重要里程碑与规划
  Totoro 自动化测试框架从立项到现在已经走过近三个年头,目前仍然处于快速迭代时期。最近一年,项目自身稳定性质量有了质的提升,在与蚂蚁云测平台共同努力下,越来越多的域内 BU 选择蚂蚁云测和 Totoro 作为移动自动化云测方案。
  · 规划
  为更好的支撑域内及 mPaaS 移动自动化测试测试技术,高效输出 Totoro 实验 SDK ,我们还有很多事情可以完善。
  未来,我们将从以下几个场景发力,朝着规范化、可扩展、多语言平台、插件化方向继续努力发展。
  · 继续降低用例维护成本;
  · 完善多端脚本语言支持;
  · 标准化文档、项目配置等构建;
  · 加强 AI 赋能,继续深挖落地场景;
  · 构建开发者社区,拥抱开发者,支持域内更多的业务线,最大价值化项目的业务价值。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号