小程序自动化测试-选型

1,321 阅读4分钟

为什么要进行小程序自动化测试

我们的小程序从2017年开始迭代一直持续到现在,主要功能几乎和APP保存一直,页面足够多,功能足够复杂。

我们每两周发一个版本,每个版本都需要测试同学手工验证测试用例,回归需要花费测试挺长时间,而且容易出现漏测。

那能否使用一些自动化工具即减轻测试工作量,又能避免漏测了?

答案是有,而且还不止一套,那哪一种最能符合我们的要求,帮助我们解决问题了?

无编码方案

无编码的方案主要是使用小程序开发者工具中的“云测”插件。

云测插件主要提供了三块能力

  1. Monkey
  2. Minium
  3. 录制回放

Monkey里有分了 智能化Monkey和自定义Monkey。

image.png

智能化Monkey

智能化 Monkey 是基于算法,自动识别可操作的节点,简历探索路径,实现对小程序页面的智能遍历,比较适合页面较少,功能简单的小程序。

自定义Monkey

自定义 Monkey 支持开发者通过配置Path+Query参数,直接打开小程序指定页面,以提升 Monkey 的覆盖率。

不管是哪一种Monkey的方式都无法做到我们想要的全面、精细化的覆盖测试。

不过测试结果中会有一些性能和体验评分,会给到一些不合规的提示,这样可以有针对性的进行性能和体验优化。

image.png

录制回放

录制回放可以通过开发者工具操作提前录制好,然后通过在云测服务中执行录制脚本来实现测试过程的回放,操作的过程中还可以保存数据,用于下一次回放时的Mock数据。

理论上该方式可以做到录制完一次测试流程后,基于相同的数据进行回放,到达自动化测试的目的,但现实是使用起来问题太多,基本不可行。

有如下问题:

  1. 录制时卡顿很严重,导致录制效率低下
  2. 录制时会出现丢失操作步骤的情况,导致用例丢失
  3. 回放时定位授权弹窗无法自动点击,需依靠手动点击,无法做到自动化
  4. 回放时也存在跟不上录制用例、步骤的问题,导致后续用例都校验失败

总体而言稳定性太差,不适合使用(调研时间为2022年5月),当然也有可能后续微信小程序团队不断优化,使用会逐步完善。

Minium

Minium 是微信团队开发的一套测试框架,可以自己编写测试用例,上次到云测,在云测服务中执行自动化测试,以达到完全自主定制测试场景的目的。

这个会是我们接下来要讲的重点,不过这个方案还是要自己编码,不算是无编码的方案。

无编码的方式由于以上的种种局限性,都不太适合我们这种业务量比较庞大的小程序。

编码方案

编码的方案,微信提供了两种,miniprogram-automatorminitest

miniprogram-automator是基于NodeJs的,minitest是基于Python的,那我们应该使用哪一种了。

我们做了一个对比表

决策项minitestminiprogram-automator
语言pythonjavascript
DOM获取支持支持
mock支持支持
api hook支持不支持
文档基于unittest,参考文档多只有官方的api简短介绍
授权支持授权操作api需要手动点击授权
模拟坐标点击支持不支持
测试报告自动生成网页版测试报告需要ide录制生成报告
assertapi支持手动记录
集成到云测支持(使用说明)不支持

结论

  • miniprogram-automator只支持基于dom的操作,不支持点击模拟,native功能受限,测试报告简单信息少,可参考文档少。
  • minitest支持模拟点击,native功能完整(除短信验证码获取),基于unittest,参考文档多,测试报告信息多。

另外我们和微信团队沟通他们后续的重点也会基于minitest。

综上选择minitest作为小程序的自动化测试更为合适。

下一章我会基于minitest在讲解我们整个自动化脚本的框架设计。