自动化测试框架 Totoro 是由蚂蚁金服终端工程技能部实验平台技能组自主研发的一套自动化测试框架,支持 Android、iOS、HTML5、小步伐、Weex、Cube 等移动端自动化测试场景。 为了确保蚂蚁金服移动测试平台在集群环境下可以或许稳固、高效运行自动化使命,并机动快速支持多场景域内业务,Totoro 履历了从 0 到 1,从 1 到 2,并渐渐演进到现在支持阿里域内 10+ BU 一样平常自动化测试及联合移动开辟平台 mPaaS 对外输出,成为团体内使用面最广、性能最为稳固的自动化测试框架之一。 本文将围绕 Totoro 一起踩坑、迭代完满成熟的过程,从沉淀总结的一些方法论息争决方案睁开分享:
Totoro C/S架构模子计划蚂蚁金服移动测试平台最开始引用了 Appium 开源管理方案,但由于其摆设复杂、接口不稳固、装备掉线、多层服务链路、社区维护不敷敏捷等种种标题,综合评估业内雷同框架都有共性的痛点,因此我们决定重新计划一套得当云测集群环境、满意域内差别业务需求快速迭代更新的管理方案。 基于已有的痛点,我们以为 Totoro 从计划上必要满意“调用链路尽大概短”、“项目布局尽大概简朴透明”等特点,从而确保测试链路上的不稳固因素尽大概少。同时,综合思量非常环境下,我们必要可以或许快速定位标题,并具备肯定的自修复本领。联合业内多个框架广泛采取三层或多层的计划,Totoro 终极被计划成了 C/S 模子的两层架构。 两层架构的计划理念实际上为 Totoro 带来许多长处,好比:
全链路稳固性构建面临蚂蚁云测集群自动化严格的要求,稳固性的标题依然浮出水面,成为 Totoro 不得不管理的一道困难。 在自动化使命的任何链路节点都有大概发生非常,以是稳固性实际上覆盖多个层面,好比:
接下来我们从以上 5 个方面论述在整个调用链路上我们都做了那些积极。 1. 步伐非常全面管理 Totoro 框架在前期开辟中,一样平常维护必要投入极大精力,逐日要面临框架自身缺陷引起的非常和各种业务自身的非常标题。同时,各类非常标题要求人工筛选,从而推动框架自身及业务方去管理。由此带来的结果是,大部分云测使命由于这类代码标题而引起停止,导致测试开辟不敷稳固。 为了改善使命非常带来的不稳固因素,杜绝框架自身 SDK 标题,而且业务非常可以或许做到智能分类,我们起首做了一次全范例非常堆栈的上报统计。根据配景统计数据可以大概分为“业务层逻辑非常”和“SDK 层非常”,针对发现标题,我们会合投入专项研发精力,修复框架逻辑不公道引起的非常,杜绝 SDK 自身标题;针对海量业务非常,我们做了一层抽象归类,将业务非常逻辑归类为明文提示并给予肯定推动发起,而且添加检测点状态校验;针对某些偶现非常,重脚步层做一次重试提示用例结果乐成率。 在步伐非常管理过程中,我们发现业务用例大多都必要在步伐各个运行阶段封装一些业务逻辑,然而 SDK 层也会有肯定的初始化过程,通过 JUnit run 起来的用例一旦业务封装或SDK层接口调用实际不对,就有大概引起步伐不稳固征象。因此,Totoro 框架更加现有的业务需求近况,及一样平常已发现的标题,自身定制了一套规范的 Totoro 用例生命周期,业务用例可以在钩子方法中封装各个节点的逻辑。
2. 手机宿主服务稳固性保障 Totoro 框架在手机中的焦点服务(TotoroUiautomator/TotoroWDA)在用例实行过程中,会发现链接失败、服务不可用等环境,这种不稳固因素更多是体系限定造成的,能做的就是在恰其时间重启服务,保障整个自动化流程正常举行。
3. 手机稳固链接计谋 手机掉线标题是自动化使命流程中必须面临的标题,Totoro 团结蚂蚁云测平台采取了一套软硬件全链路的装备在线保障服务。 Ⅰ. 软件链路上的掉线规复本领 软件链路上的本领是指集成在 Totoro Client 端的一套装备规复方案,嵌入在底层通讯接口处,一旦发现装备掉线,可以通过远程网络服务,发送消息得手机中的焦点服务,通过装备 owner 权限重启手机 ADB,如果仍旧失败将举行 PC 端链路的 usbreset。 正常环境下,三次重启内手机 ADB 险些都能规复。个别环境规复失败的,会有现场详细信息上报,且会触发 changedevices 计谋更换手机重新实行测试使命,保障流程正常。如果根据汗青上报数据统计,分析老旧装备处于常常掉线的不稳固状态,会采取降级步伐,变更到对链接要求低的装备池中(如 monkey 池)或下线操纵。 Ⅱ. 硬件链路上的装备链接护航本领 在硬件链路的稳固性构建中,大多云测平台选择购买质量较好的 USB Hub。然而蚂蚁云测平台现在要面临逐日 7k+ 级别的自动化使命和 mPaaS 金融云级别的用例稳固性挑衅,颠末实验,市面上再好的装备也无法到达的全部工程必要的质量标准,而且缺少智能控制模块。因此蚂蚁终端工程技能部实验平台组自研了一套 SmartHub,具备独立稳固的供电模块,每个端口可远程步伐自动控制(电压/电源/重置等)。现在为止 SmartHub 已经全面量产并投入使用,结果图如下: 4. 装备网络稳固性 设置网络服务的稳固提供,我们重要做了以下几方面实验:
5. 多维度计谋 提升用例乐成率 在真实的用例构建环境中,必要有许多细节计谋点保障整个服务的稳固运行,这里重要摆列几条重要的方案:
安卓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 框架中可以针对以下纬度来监听页面变革,做到险些全场景的弹窗管理。
3. 呆板学习图像检测方案 然背面临无法 dump 到控件信息的非 Native 页面(H5 /小步伐),就必要联合呆板学习的方式,采取算法本领去分析页面 UI 布局,行止理页面中大概的非常弹窗。 Totoro 算法同砚自研了一套控件 dump 算法本领,离开平台及页面渲染方式,可以将 App 截图通过算法生产页面原始控件图,满意非 native 场景的弹窗处置惩罚。 现在呆板学习的分析本领仍然在快速迭代中,除了应用在弹窗页面分析处置惩罚外,还应用在页面非常范例检测(包罗加载失败、控件截断优劣屏等),已乐成落地小步伐一样平常准入和付出宝钱包一样平常兼容性等告急业务线中,后续会推广到更多的业务中去,让 AI 赋能不是一句空话。
告急里程碑与规划Totoro自动化测试框架从立项到现在已经走过近三个年初,现在仍然处于快速迭代时期。近来一年,项目自身稳固性子量有了质的提升,在与蚂蚁云测平台共同积极下,越来越多的域内 BU 选择蚂蚁云测和 Totoro 作为移动自动化云测方案。 规划 为更好的支持域内及 mPaaS 移动自动化测试测试技能,高效输出 Totoro 实验 SDK ,我们尚有许多事变可以完满。 未来,我们将从以下几个场景发力,朝着规范化、可扩展、多语言平台、插件化方向继续积极发展。
! |