小程序自动化
2023-02-20•
围观热度 888•小程序/H5/公众号
传统的 Web 应用程序拥有 Selenium 这样的测试工具,而小程序由于独特的双线程设计和原生组件渲染,开发者无法脱离开发者工具,像 Web 一样写自动化测试。即使用某个框架兼容 Web 和小程序,然后通过 Web 测试来覆盖小程序的代码场景,依然会存在很多与真实运行环境脱离的问题。
例如,京东、拼多多、微保等较大型的小程序页面多达上百个,如果每次变动都无法覆盖完整甚至是主流程的测试,就要消耗大量的人工资源来确保项目的正常运行。现在,开发者工具为小程序提供了对应的方法来实现测试的自动化。虽然开发者目前只能通过写脚本的方式来进行自动化测试,但是相信在不久的将来,官方会给开发者提供更加便利的功能。
1 小程序自动化
SDK小程序自动化 SDK 为用户提供了一套通过外部脚本操控小程序运行时的方法,从而达到小程序自动化测试的目的。
简单来说,它是一个可以让你控制小程序运行的工具,目前 SDK 主要包括以下 4个部分。
(1)Automator:该模块提供了启动及连接开发者工具的方法。
(2) MiniProgram:该模块提供了控制小程序的方法。
(3) Page:该模块提供了控制小程序页面的方法。
(4) Element:该模块提供了控制小程序页面元素的方法。
拥有了这个 SDK,我们就仿佛拥有了超能力,可以控制小程序跳转到指定页面,获取小程序页面数据,获取小程序页面元素状态,触发小程序元素绑定事件,调用wx 对象上的任意接口,甚至可以往 AppService 注入代码片段。此时此刻,你是不是跟我想的一样:我们通过这个 SDK,能做到的事情难道只有自动化测试这一件吗?发挥你的想象力吧!
2 测试框架结合
如果你之前使用过 Selenium WebDriver 或者 Puppeteer,就会知道 SDK 的工作原理是类似的。因为小程序的运行环境与浏览器有很多不一样的地方,所以我们可以使用小程序自动化 SDK 来控制小程序。SDK 本身不提供测试框架,可以结合其他的 Node.js 测试框架使用。
3 真机自动化
这套自动化 SDK 支持在开发者工具中运行,除了能够控制开发者工具中的小程序模拟器,还支持远程调试控制真机(目标机器上的基础库版本需要为 2.7.3 及以上),从而达到在真机上进行自动化测试的目的。
启动真机调试可以通过 SDK(在测试脚本开头使用 miniProgram.remote 接口)启动,也可以手动启动开发者工具的真机调试,然后再运行测试脚本来实现真机上的测试。
或许以后会出现这样的产业:提供各式各样的云真机平台,来进行小程序兼容性的自动化测试。
4 小程序自动化框架 Minium
基于小程序自动化 SDK,2019 年 8 月官方推出了小程序自动化框架 Minium 的公测。Minium 是小程序/小游戏自动化测试框架 MiniTest 的一部分,支持 IDE、iOS、Android 三端运行,旨在帮助开发人员和测试人员解决小程序的自动化测试难题。
官方文档中对 Minium 进行了详细介绍。Minium 提供了 Python 和 JavaScript 版本。使用 Minium 可以进行小程序 UI 自动化测试,但是 Minium 的功能不止是 UI 自动化,还可以用来进行函数的 mock,可以直接跳转到小程序某个页面并设置页面数据,做针对性的全面测试。这些都得益于我们开放了部分小程序 API 的能力。
Minium 主要是供测试人员使用的框架,它的便利性体现在以下 3 个方面。
1.抹除了平台差异,支持一套脚本,iOS、Android、模拟器三端运行;
2.同时支持测试 UI 和 API,可以结合 UI 和页面数据检查来验证结果;
3.打包测试框架,除了 SDK 之外,还集成了执行测试用例的命令行工具、丰富的测试配置以及一份包含截图、错误堆栈、脚本 log 和小程序 log 的简洁的测试报告。
而对于开发人员来说,更好的选择是使用自动化测试 SDK,自行用 JavaScript 或TypeScript 语言来编写