去年(2019 年)7 月份,蚂蚁集团正式对外开源了客户端自动化测试工具 SoloPi ,其主要包括三大模块:录制回放(用于功能测试)、性能工具(用于性能测试)以及一机多控(服务于兼容性测试)。从开源至今,我们也陆续收到了公司内外对工具的不同声音,有的同学对这套工具能提升测试同学的效率表达了支持态度,也有同学认为脱离了代码的自动化测试可能会限制测试同学的灵活度,让这种模式很难走远,还有同学认为这套工具只是昙花一现,简单包装了一下 PC 上的工具,而缺乏实际的创新。
其实,这套工具我们从 17 年开始研发,至今已经有三年的历史了,最开始 SoloPi 本身只是一个性能测试工具,随后逐步扩展成涵盖功能测试、性能测试、兼容性测试、异常测试、Mock 测试等一系列移动端测试场景的测试框架,这一路走来,SoloPi 就像我们的孩子一样一步一步地成长,稳步且有计划的前进着。
回想当初,SoloPi 最开始想解决的诉求很简单:测试很麻烦,我们想要更简便的测试方法。所以,我们从当时最麻烦的性能测试入手,以往的性能测试工具,无外乎三种形态:PC 驱动工具、侵入式的测试模块、ROOT 工具。
PC 工具:除了 Android Studio 自带的性能测试工具,市面上大多数文档都是介绍命令行方法,而且各家方案存在差异,不少还存在错误,实际成型的工具也不多。
侵入式的测试模块:这类工具由于需要侵入到源码中,需要单独打包进行测试,工具本身也可能对性能产生影响。
ROOT 工具:首先是需要 Android 系统的 Root 权限,对于权限管控越来越严格的 Android 系统,其路必将越走越窄。
为了解决测试同学性能测试难、标准不统一的问题,我们尝试从 Android 调试能力入手,研究一种能够在 Android 手机上不需要 root 也能实现应用提权的方案。经过长时间的研究,我们最终发现了一套通过 Java 实现的 ADB 远程调试方案 (https://github.com/cgutman/AdbLib) ,这套方案与 Android 调试端口进行通信,通过本地 Socket 方式实现 shell 权限的获取,从而达到本地应用提权(下述简称无线 ADB 提权方案)。
结合无线 ADB 提权方案,SoloPi 针对每一种性能指标,进一步实现了对应的精确获取方案。测试同学不需要再费力搜寻/开发/优化性能测试工具,只需要一个 SoloPi,短短几分钟即可快速完成以往动辄数小时的性能测试工作。
在性能测试领域得到应用后,我们继续扩展 SoloPi 在无线自动化方案的适用范围。这次,我们关注点是功能测试领域。传统的功能测试通常有两种方式:一种是人工手动执行测试,另一种则是编写基于测试框架的自动化脚本。前者成本巨大,为应付不断加速的产品迭代可能需要投入大量人力;而后者则对测试同学的代码能力有不小的要求,这也导致由手动测试转化为自动化测试从而节省人力的进度相对缓慢。结合我们在性能测试方面积累的经验,我们尝试将传统上仅能用于 PC 的自动化测试能力移植到了移动平台,并根据手机的使用习惯,开发了一套简单易用且功能强大的自动化测试框架,也就是当前的录制回放。通过录制回放,我们可以自豪的说,我们能够节省功能测试高达 70% 的时间。
在功能测试的方案完成后,我们又对这套自动化测试框架有了更多的期待。由此便诞生了一机多控这样一套兼容性测试利器。关于一机多控,最开始源于一次闲聊,如果将录制回放的过程拆分开,一台机器录制用例,由其他几台乃至数十台机器进行回放,不就能够极大地降低兼容性测试的成本。以往兼容性测试一直是无线测试的老大难问题,通过一机多控,就能实现指数级的提效。通过在测试机房环境的部署,我们已逐渐培养起测试同学通过一机多控进行兼容性测试的习惯。在支付宝内部实践过程中,曾有一位测试同学反馈,没有了一机多控甚至不知道怎么测兼容性了。
为了进一步降低广大从业同学的测试成本,我们继续就整个研发流程进行挖掘、优化,并已在一些节点(如数据准备、异常场景、小程序 H5 等)上尝试和发力。围绕着测试提效的核心,SoloPi 不断地为节省人力成本开发和更新着一系列的测试工具。
随着测试技术的不断发展,智能化、简单化的测试趋势日益明显,以 19 年 MTSC 大会为例,有超过半数的议题都与 AI 相关,围绕测试提效的核心,我们也将在这方面进行进一步的挖掘,将 AI+ 测试带给每一个从业人员。
在我们开源的这一年间,我们也发现了游戏领域从业人员对类似工具的诉求,目前 SoloPi 仍然是以支持传统应用的测试能力为主,所以我们也将在游戏场景做进一步的融合,我们希望能够对类似 Unity 3D、Cocos2d-X、虚幻等引擎做进一步支持,从而也能更好地降低游戏测试成本。
SoloPi 不仅仅是一个移动测试领域的工具,我们更希望它是一个服务于广大测试从业人员的产品。同时,我们也一直在思考着一个问题:如何能进一步降低测试同学的学习和使用成本?在今年下半年,我们计划推出一套更加轻量化的测试方式,能够真正让测试同学像正常使用应用一样进行测试,做到真正的智能化和简单化。
SoloPi 贡献者活动正式开始了,不管你是代码大牛、资深用户还是入门新手,通过提交开发的功能、编写实际操作文档、整理使用过程中遇到的各种坑、或者是其他能够帮助他人更好使用 SoloPi 的方式,都可以参与到贡献者活动中来,我们也为活动中参与最积极的 5 位贡献者准备了精美礼品,更多细节可以访问 https://testerhome.com/topics/25074 。