专栏文章 微信小程序自动化测试——智能化 Monkey

微信小程序云测服务 · 2022年07月13日 · 6150 次阅读

微信小程序云测服务 提供了丰富的自动化测试能力供用户选择,其中最简单,最方便的就是智能化 Monkey服务。用户接入后即可使用,非常适合页面较少,功能简单的小程序,可以实现零代码、低成本的快速冒烟测试。

智能化 Monkey

智能化 Monkey 整体测试流程是在测试中通过智能化点击的方式,自动建立探索路径,实现对小程序页面的智能遍历。在遍历过程中,会自动获取性能数据,并检测异常情况,如是否出现 JsError,黑白屏等情况,最后生成完善的测试报告。

目前对于智能化 Monkey 测试来说,是否出现异常情况是判断测试是否通过的标准,后续会优化 Monkey 服务的测试维度,将真机体验评分数据整合在一起,敬请期待~

下图展示了某个项目的 Monkey 测试报告的样例,可以看出本次测试中发现了小程序体验版本中的一些 JsError 的报错情况,这时测试同学可以通知开发及时修复

智能点击策略

这里我们为什么叫智能化 Monkey,它和普通 Monkey 有哪些不同呢?

通常的 Monkey 测试是通过随机点击的方式,尽可能点击到更多的元素,测试是否会出现 crash 等情况。

通过智能化 Monkey 的介绍可以发现,小程序 Monkey 测试目的是做页面维度的冒烟测试,发现页面是否存在 JsError,黑白屏等异常问题,所以小程序智能化 Monkey 的目标是希望尽可能覆盖更多页面,而不是将页面所有元素都点击一次

一般来说 Monkey 流程是:

  • 元素解析,识别页面有哪些可以点击的元素,
  • 选取一个元素点击
  • 点击不下去时进行回溯 云测服务针对小程序的特点,对上面各个步骤都进行进行了定制优化,并且还增加了历史经验累积和分布式策略,来提高覆盖率

元素解析

在元素解析方面,我们开始使用了使用机器学习的方式,针对 1000 多个小程序进行打标,通过 yolov3 训练了一套模型来识别可点击的元素。近期我们进行了改进,通过 JS 注入的方式获取小程序当前页面的 DOM 树,通过解析 DOM 树的方式识别元素。从图中可以看到 JS 注入方式,可以更加准确的识别小程序可点击元素,更加贴近人的感知

选取点击元素

选取点击元素方面,我们根据页面 DOM 树中元素渲染后的属性特征进行筛选和过滤。如优先选择绑定了点击或滑动事件的元素,过滤不在当前可视区域或不可见元素。

页面回溯

当点击进行不下去需要页面回溯时,可以针对小程序特性,直接通过拼 path+query 直接回到某个状态的页面

历史经验累积

在每次测试结束后,后台会记录每次测试中页面跳转成功的情况,画成有向图,用作历史经验,为后续测试的元素选取作为参考。所以一般来说,跑测次数越多,覆盖率越高。

分布式策略

用户提交多台机器同时跑测时,如提交 10 台安卓机器同时测试时,后台会尽量让不同的机器去覆盖点击不同的页面,这样提升整体任务成功率

目前效果

从目前的统计结果看,目前 20 分钟安卓和 ios 的平均页面覆盖率都在30%左右。

后续云测服务将进一步优化算法,并结合现网页面访问情况,比如小程序有 100 个页面,可能现网访问多的只有 10-20 个页面,那么在有限的测试时间里面,尽量优先去点击现网用户访问多的页面,更加符合业务的实际需求

总结

智能化 Monkey 可以帮助用户进行快速冒烟测试,并且都是零代码,接入云测服务即可使用。

但是智能化 Monkey 也有一定缺点,比如:

  • 部分小程序可能需要进行特定操作,才能进去,如需要登录,这时候智能化 Monkey 无法完成
  • 不支持输入,上传图片等非点击类型操作
  • 不校验页面逻辑校验,比如断言某个元素是否存在等

那怎么解决这些问题,敬请参考《微信小程序自动化测试》后续系列文章
微信小程序自动化测试——录制回放
微信小程序自动化测试——自定义测试
微信小程序自动化测试——智能化 Monkey 扩展

需要帮助

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册