设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

干货分享:Totoro 在自动化测试领域的深耕与收获

2019-7-26 17:53 发布者: admin 评论 0 查看 1353
自动化测试框架 Totoro 是由蚂蚁金服终端工程技能部实验平台技能组自主研发的一套自动化测试框架,支持 Android、iOS、HTML5、小步伐、Weex、Cube 等移动端自动化测试场景。 为了确保蚂蚁金服移动测试平台在集群

自动化测试框架 Totoro 是由蚂蚁金服终端工程技能部实验平台技能组自主研发的一套自动化测试框架,支持 AndroidiOSHTML5小步伐WeexCube 等移动端自动化测试场景。

为了确保蚂蚁金服移动测试平台在集群环境下可以或许稳固、高效运行自动化使命,并机动快速支持多场景域内业务,Totoro 履历了从 0 到 1,从 1 到 2,并渐渐演进到现在支持阿里域内 10+ BU 一样平常自动化测试及联合移动开辟平台 mPaaS 对外输出,成为团体内使用面最广、性能最为稳固的自动化测试框架之一。

本文将围绕 Totoro 一起踩坑、迭代完满成熟的过程,从沉淀总结的一些方法论息争决方案睁开分享:

  • Totoro C/S 架构模子计划
  • 全链路稳固性构建
  • 安卓 App 全自动智能安装
  • 全场景的非常弹窗管理
  • Totoro 告急里程碑及未来规划

 

Totoro C/S架构模子计划

蚂蚁金服移动测试平台最开始引用了 Appium 开源管理方案,但由于其摆设复杂、接口不稳固、装备掉线、多层服务链路、社区维护不敷敏捷等种种标题,综合评估业内雷同框架都有共性的痛点,因此我们决定重新计划一套得当云测集群环境、满意域内差别业务需求快速迭代更新的管理方案。

基于已有的痛点,我们以为 Totoro 从计划上必要满意“调用链路尽大概短”、“项目布局尽大概简朴透明”等特点,从而确保测试链路上的不稳固因素尽大概少。同时,综合思量非常环境下,我们必要可以或许快速定位标题,并具备肯定的自修复本领。联合业内多个框架广泛采取三层或多层的计划,Totoro 终极被计划成了 C/S 模子的两层架构。

两层架构的计划理念实际上为 Totoro 带来许多长处,好比:

  1. 服务同一集成到了手机端,缩减了 PC 端的繁杂调用:只要 Client 端与手机链接,就可以开始自动化流程,制止了中心服务的下令中转及服务自己资源管理;
  2. 真正的 C/S 架构模子:无论在自动化的调用速率照旧链路的稳固性上都有了质的提升,别的简朴的架构模子确保了近些年框架快速迭代的可行性。

 

全链路稳固性构建

面临蚂蚁云测集群自动化严格的要求,稳固性的标题依然浮出水面,成为 Totoro 不得不管理的一道困难。

在自动化使命的任何链路节点都有大概发生非常,以是稳固性实际上覆盖多个层面,好比:

  • 框架自己 API 功能稳固性;
  • 宿主服务稳固性;
  • 装备链接在线稳固性;
  • 装备网络稳固性;
  • 硬件 Hub 稳固性。

接下来我们从以上 5 个方面论述在整个调用链路上我们都做了那些积极。

1. 步伐非常全面管理

Totoro 框架在前期开辟中,一样平常维护必要投入极大精力,逐日要面临框架自身缺陷引起的非常和各种业务自身的非常标题。同时,各类非常标题要求人工筛选,从而推动框架自身及业务方去管理。由此带来的结果是,大部分云测使命由于这类代码标题而引起停止,导致测试开辟不敷稳固。

为了改善使命非常带来的不稳固因素,杜绝框架自身 SDK 标题,而且业务非常可以或许做到智能分类,我们起首做了一次全范例非常堆栈的上报统计。根据配景统计数据可以大概分为“业务层逻辑非常”和“SDK 层非常”,针对发现标题,我们会合投入专项研发精力,修复框架逻辑不公道引起的非常,杜绝 SDK 自身标题;针对海量业务非常,我们做了一层抽象归类,将业务非常逻辑归类为明文提示并给予肯定推动发起,而且添加检测点状态校验;针对某些偶现非常,重脚步层做一次重试提示用例结果乐成率。

在步伐非常管理过程中,我们发现业务用例大多都必要在步伐各个运行阶段封装一些业务逻辑,然而 SDK 层也会有肯定的初始化过程,通过 JUnit run 起来的用例一旦业务封装或SDK层接口调用实际不对,就有大概引起步伐不稳固征象。因此,Totoro 框架更加现有的业务需求近况,及一样平常已发现的标题,自身定制了一套规范的 Totoro 用例生命周期,业务用例可以在钩子方法中封装各个节点的逻辑。

 

 

2. 手机宿主服务稳固性保障

Totoro 框架在手机中的焦点服务(TotoroUiautomator/TotoroWDA)在用例实行过程中,会发现链接失败、服务不可用等环境,这种不稳固因素更多是体系限定造成的,能做的就是在恰其时间重启服务,保障整个自动化流程正常举行。

  • API 接口级别非常分析,过滤服务非常环境,触发重启。而且可以或许生存或规复用例现场。
  • Agent daemon 进程服务轮训监控,动态启动非常服务(针对 TotoroWDA)。
  • 端口转发失效的假性非常分析,通过网络探测,触发假重启逻辑。

 

3. 手机稳固链接计谋

手机掉线标题是自动化使命流程中必须面临的标题,Totoro 团结蚂蚁云测平台采取了一套软硬件全链路的装备在线保障服务。

Ⅰ. 软件链路上的掉线规复本领

软件链路上的本领是指集成在 Totoro Client 端的一套装备规复方案,嵌入在底层通讯接口处,一旦发现装备掉线,可以通过远程网络服务,发送消息得手机中的焦点服务,通过装备 owner 权限重启手机 ADB,如果仍旧失败将举行 PC 端链路的 usbreset。

正常环境下,三次重启内手机 ADB 险些都能规复。个别环境规复失败的,会有现场详细信息上报,且会触发 changedevices 计谋更换手机重新实行测试使命,保障流程正常。如果根据汗青上报数据统计,分析老旧装备处于常常掉线的不稳固状态,会采取降级步伐,变更到对链接要求低的装备池中(如 monkey 池)或下线操纵。

Ⅱ. 硬件链路上的装备链接护航本领

在硬件链路的稳固性构建中,大多云测平台选择购买质量较好的 USB Hub。然而蚂蚁云测平台现在要面临逐日 7k+ 级别的自动化使命和 mPaaS 金融云级别的用例稳固性挑衅,颠末实验,市面上再好的装备也无法到达的全部工程必要的质量标准,而且缺少智能控制模块。因此蚂蚁终端工程技能部实验平台组自研了一套 SmartHub,具备独立稳固的供电模块,每个端口可远程步伐自动控制(电压/电源/重置等)。现在为止 SmartHub 已经全面量产并投入使用,结果图如下:

4. 装备网络稳固性

设置网络服务的稳固提供,我们重要做了以下几方面实验:

  • 用例失败检测点的网络探测快照,快速定位用例失败现场是否有网络标题;
  • SLM 云终端服务管理手机网络,可以或许自动链接指定网络,并具备网络非常后重置链接本领;
  • 云测平台集群环境升级机柜,隔离网络,保障网络热门稳固性。(终端实验室的集群服务将以规范化的屏蔽机柜为单位,提供稳固的移动自动化服务)。

 

5. 多维度计谋 提升用例乐成率

在真实的用例构建环境中,必要有许多细节计谋点保障整个服务的稳固运行,这里重要摆列几条重要的方案:

  • 针对顽固偶现的不稳固因素,采取 DeviceChange(更换装备)计谋。
  • 针对手机内存、资源等体系限定,会采取 DeviceReboot(重启手机)计谋。
  • 针对偶现的既定的几种抽象非常范例,采取重新实行计谋,有用进步乐成率。
  • 针对全场景的非常点,钉钉报警,实时发布补丁。

 

安卓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 接口方案。但是我们实际使用中发现,这个接口回调不是稳固的,更加官方表明,当自动化过程中查找一个控件失败时间才会触发回调。

为了可以或许构建多场景的监听机制,必须要有一套页面监听的稳固回调接口。颠末翻看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 赋能,继续深挖落地场景;
  • 构建开辟者社区,拥抱开辟者,支持域内更多的业务线,最大代价化项目标业务代价。

 



路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:基于二级C语言的一些经典小程序下一篇:java基础:基础类型和多态

相关阅读

一周热门

头条攻略!

日排行榜

相关分类