竹笋

首页 » 问答 » 问答 » 已开源支付宝Android专项测试的
TUhjnbcbe - 2023/4/22 19:31:00

前言

移动测试1.0时代

移动测试1.0时代,也可以称之为探索期。由于厌倦了日复一日的手工操作,如何提升测试效率成为了移动测试领域最重要的课题,在此期间,除了Monkey、UiAutomator、Instruments等官方提供的工具,业界还涌现了一批优秀的开源自动化测试工具/框架,在自动化驱动能力的基础之上,不仅可以实现基本功能的验证,还可以结合性能采集方案、遍历算法等实现各类专项测试的自动化。在这个阶段,自动化测试的常见形态是在单机或本地少数几台PC上部署测试环境,再利用Jenkins等工具实现持续集成。

移动测试2.0时代

伴随着测试技术的持续发展、又得益于STF的开源,业界开始出现了云测平台的概念,将真机设备、任务管理、自动化框架以及专项测试方案打包在平台中作为服务提供出去,给用户带来了一站式的测试体验。另一方面,远程调试、设备调度等技术的引入极大的提升了设备的利用率,测试人员不再需要为缺少测试设备或测试任务排队耗时而担心。对于云测平台用户而言,在此阶段常见的测试形态是:在本地PC上开发测试脚本,再上传至云测平台执行,最后可在平台中查看测试报告,测试流程简单且清晰。

移动测试2.0+

在保留了上述“云测”的玩法之外,移动测试2.0+时代下的测试技术提供的往往不再是某一个独立的小工具,更多的是带来一套完整的解决方案,例如,为用户提供一套定制化的IDE环境,结合录制回放、图像识别等技术,用户可能只需要做一些简单的框选、拖拽就能完成测试脚本的开发。另一方面,由于办公环境、硬件条件等因素的限制,越来越多的测试人员希望可以在移动端上直接发起测试,做到移动测试“移动测”。当然,无论是云端、IDE端、还是移动端,都应该做到能力互通,即“多端多通”,这样才能让测试方案更加灵活、适用于更多场景。

无线驱动的Android专项测试方案:Soloπ

“多端多通”的概念比较广,仅凭一篇文章可能无法阐述清楚,所以下面将会重点介绍为了迎接“移动2.0+”时代,我们在移动端上实现的一套无线化、非侵入、免Root的Android专项测试方案Soloπ。直接操控手机,即可实现自动化的功能、性能、兼容性、以及稳定性测试等工作。

整体架构

这套方案中,底层依赖主要是“无线ADB、系统辅助功能、Chrome调试以及图像识别技术”,后文将会介绍它们具体的应用场景。同时,在底层依赖的基础上,我们封装了一套核心能力,由“控件定位、事件驱动、性能采集以及依赖注入”组成,并在服务层实现了录制、回放、数据处理等公共服务能力。在架构的最顶端,结合界面交互逻辑包装出了各个功能的入口。

无线ADB

大家都知道,对于Android自动化,ADBshell的执行能力是一切的基础。

在PC上,通过AndroidSDK提供的ADBclient与同样运行于PC中的ADBserver通信,再由ADBserver通过USB与位于设备中的Adbd通信。要实现一套无线化的方案,必须要摆脱对USB线的依赖。好在Android系统还提供了一种基于Socket的ADB连接模式,既然是这样,那么只需要按照ADB通信协议在端上与本机的端口进行通信即可获得ADBshell的执行能力。

目前已经有一些实现ADB通信协议的Java开源项目,如AdbLib,他们封装了一套ADB的调试通信服务,能够替代PC上ADBServer的角色。我们在Soloπ应用中集成了AdbLib开源库,包装成一套ADB命令执行工具,为Soloπ后续各种专项测试能力的实现奠定了坚实的基础。下面将开始为大家介绍Soloπ的几大核心功能。

录制回放

录制回放功能基于AccessibilityService、ChromeDevToolsProtocol、图像识别三种模式实现精确查找,可以在设备本地实现回放,也可以转换为Appium/Macaca等框架的脚本,对接云测平台。另外,为了降低用例维护的成本,我们在端上还提供了用例编辑、流程控制的功能。

04:35

★实现方案

在录制过程中,Soloπ会对用户的操作进行拦截,识别用户操作的位置,高亮当前操作的控件,记录用户当前要做的操作类型,在每一步操作后,将操作类型及目标控件的各种信息都记录下来。这里的控件信息包括控件的ID、文字等基本信息,以及相对布局、截图信息等。

在回放时,Soloπ会逐条解析之前录制的数据,通过智能查找算法,综合各种属性,定位目标控件,找到控件后,就会执行相应的操作,如点击、滑动等。在所有步骤执行后,会展示本次回放的结果,包括日志、截图等信息,作为本次回放的总结。

★控件查找能力

对于传统的Native应用,通过UiAutomatordump获取的属性就足以实现自动化了。然而,随着移动端动态化能力的稳步发展,越来越多的应用采用了“Native+H5/小程序”这种混合开发的方案。再考虑到近年来手游行业的飞速发展,手机游戏自动化测试的需求也越来越多。为了尽可能的适配各种场景,Soloπ提供了三种查找模式:

第一种方案不必多说,核心就是基于AccessbilityService生成当前控件视图树,并记录下id、文字等属性,适用于Native场景。第二种方案基于Chrome的调试协议,通过注入js可以获得页面布局以及各元素属性,控件的定位思路与辅助功能这一套方案是一致的。适用于H5/小程序场景。第三种方案是图像匹配方案,Soloπ在端上实现了一套图像比对能力,结合了模板匹配、特征匹配等算法,并做了一定的适配和调优。适用于游戏自动化的场景。此外,在Soloπ目前的方案中,图像匹配能力还会作为前两种定位方式的兜底方案,进一步的提升控件查找的准确率。

★回放能力

通过Soloπ录制的用例会以JSON的形式存储起来,用例不仅可以向上述视频演示的一样在设备本地直接回放,还可以通过Soloπ的解析器将用例转换为Appium、Macaca等目前主流自动化测试框架的脚本,轻松打通云测平台。另外,得益于文本抓取和图像识别能力,Soloπ还实现了在Android端录制一遍用例,生成的脚本能够同时在Android、iOS双端回放的能力。

★更多功能

Soloπ还提供了用例步骤的插入、删除、修改等用例编辑功能,可以有效降低用例的维护成本。另外,Soloπ还引入了循环、条件等流程控制能力,若对用例进行合理编排,可轻松实现需要重复操作的工具脚本或是需要暴力回放的稳定性测试脚本。

录制回放更多的能力还包括结合数据Mock解决用例回放不稳定的能力、打通性能测试的能力等等。

一机多控

在各类专项测试中,兼容性测试是最为耗时费力的一项,测试人员需要

1
查看完整版本: 已开源支付宝Android专项测试的