一、背景
小程序发版前进行人工冒烟回归时,存在成本较大的问题,并且该工作较为机械化,因此希望借助自动化测试来替代人工冒烟,以提高测试效率、降低人力成本。
二、现有技术方案
(一)腾讯Utest 优测
- 定义:腾讯Utest优测是由腾讯公司团队自主研发,并联合 WeTest 云真机能力共同推出的小程序自动化测试服务。该服务基于云真机,拥有千台真实手机,覆盖99%市场主流机型,支持7X24小时设备在线服务,真实听感、视感、触感模拟操作,快速定位机型问题。
- 支持功能:随时随地进行设备调试,真机租用+命令行无缝操作,快速发现问题、报告完整,提供截图、日志数据文件,支持视频输出,方便问题定位。
- 优点:具备实现比较复杂用例场景的能力。大厂背书,随时随地客服服务。
- 缺点:输出的报告不够详细
(二)miniprogram-automator 测试框架
- 定义:该框架能够与市面上流行的任意 Node.js 测试框架结合使用,进而实现测试小程序用例的目标。
- 优点:具备实现比较复杂用例场景的能力。
- 缺点:编写测试用例的成本较高。
(三)小程序开发者工具的录制/回放功能
- 定义:开发者可将测试操作提前录制好,之后通过执行录制脚本来实现测试过程的回放。
- 优点:
- 测试用例通过录制步骤来实现,操作比较简单方便。
- 上手和使用推广成本低。
- 缺点:
- 测试用例比较粗,更适合用于做冒烟测试。
- 依赖本地的开发者工具。
(四)MiniTest 云测试
- 定义:MiniTest 微信小程序云测是由微信测试团队自主研发,并联合 WeTest 云真机能力共同推出的小程序自动化测试服务。该服务基于云真机,支持开发者简单快捷地实现小程序真机自动化测试和性能分析等能力。
- 支持功能:
- 零代码接入智能化 Monkey 测试:智能化 Monkey 基于微信团队自研的一套智能探索算法,程序会自动识别小程序中可操作的节点,建立探索路径,从而实现对小程序页面的智能遍历。这种模式非常适合页面较少、功能简单的小程序,也推荐大多数开发者选用这种模式来实现零代码、低成本的快速冒烟测试或回归测试。此外,云测支持自定义 Monkey 模式,支持用户使用指定的 Page+Query 参数,直接定位到小程序页面,提升页面覆盖率。在跑测同时,云测服务会自动检测黑白屏、JsError、Crash 等异常情况。当发现这些异常情况时,测试结果将标记为失败,并在报告中提供相关信息帮助用户排查问题。
- 录制回放:录制回放可以比智能化 Monkey 更进一步地指定测试场景,极大地提升了测试覆盖率。开发者可以通过开发者工具操作提前录制好,然后在云测服务上使用真机执行录制脚本来实现测试过程的回放。
- 自定义测试(Minium):小程序测试框架 Minium 是微信团队为开发者提供的一套测试接口,可以简单快捷地实现对小程序的自定义测试。开发者可以使用这套框架来编写测试用例,执行自动化测试,以达到完全自主定制测试场景的目的。云测服务支持直接在真机跑测 Minium 脚本。和用户本地跑测相比,云测服务无需用户部署和维护真机环境,在跑测过程自动获取性能数据,并生成详细的测试报告,方便开发者排查问题。
- 优点:拥有丰富的自动化测试能力、远程真机跑用例的能力以及方便集成到 devops 流程的能力。
- 缺点:存在时间限制,云测服务为小程序开发者只提供每周 150 分钟免费测试时长,超出时长需要花钱购买。
(四)技术方案对比表格
技术方案 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
腾讯Utest 优测 | 随时随地进行设备调试,真机租用+命令行无缝操作,快速发现问题、报告完整,提供截图、日志数据文件,支持视频输出,方便问题定位 | 报告不够详细 | 适合需要真机调试、测试过程复杂的场景。提供全方位服务 |
miniprogram-automator 测试框架 | 可实现复杂用例场景 | 编写测试用例成本高 | 需要测试复杂场景的小程序 |
小程序开发者工具的录制/回放功能 | 测试用例通过录制实现,简单方便;上手和推广成本低 | 测试用例较粗,适合冒烟测试;依赖本地开发者工具 | 对测试用例精细度要求不高,且主要进行冒烟测试的小程序 |
MiniTest 云测试 | 具备丰富的自动化测试能力、远程真机跑用例能力和方便集成到 devops 流程的能力 | 有时间限制,每周免费 150 分钟,超出需购买 | 希望实现较为全面的自动化测试,且有集成到 devops 流程需求的小程序 |
三、使用流程
使用流程参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/minitest/replay.html
四、使用过程
(一)开发人员和测试人员的协作
因为需要用到微信小程序开发者工具,所以首先帮助测试同学安装了本地开发套装。目前应用阶段比较初级,仅使用云测的录制回放能力。每次上线之前都会跑一遍用例,查看结果没问题后,再进行上线发布。具体流程如下:
- 开发人员或测试人员使用微信小程序开发者工具录制测试用例。
- 将录制好的测试用例同步到云测平台。
- 在云测平台上执行测试用例。
- 查看测试结果,若结果没问题,则进行上线发布。
(二)使用过程中遇到的问题及解决方法
问题 | 解决方法 |
---|---|
本地录制的用例同步不到云测平台 | 首先在云测平台-账号管理,查看自己账号是否已经授权或者过期,若存在此类情况,都需要进行重新授权,这样才能将自己账号的测试 case 同步到云测平台 |
用例涉及到定位 | 可通过虚拟账号配置,mock 地理位置 |
本地 case 没问题,在云测跑不通 | 先查看自己的免费时间是否用完,另外,有些场景本地能实现,但云测不能跑通,比如支付场景,这种情况下需要根据实际情况进行处理 |
(三)使用心得
目前使用录制回放能力上手成本比较低,能在一定程度上代替人工冒烟,减轻测试人员的工作负担。后续需要进一步探索云测的其他能力,如智能化 Monkey 测试、自定义测试(Minium)等,期望能实现更细致用例的应用,进一步提高测试的覆盖率和准确性,更好地保障小程序的质量。