微信小程序云测服务 提供了丰富的自动化测试能力供用户选择,其中最简单、最方便的就是 Monkey 测试。用户接入后即可使用,非常适合页面较少、功能简单的小程序,实现零代码、低成本的快速冒烟测试。其中 Monkey 测试针对不一样的使用场景,提供 3 种模式:智能化 Monkey 测试、自定义 Monkey 测试、快速 Monkey 测试。
智能化 Monkey 测试介绍
智能化 Monkey 测试流程是在测试中通过智能化点击的方式,自动建立探索路径,实现对小程序页面的智能遍历。在遍历过程中,会自动获取 性能数据,并检测 异常情况,例如是否出现 JsError、黑白屏等情况,最后生成完善的测试报告。
下图展示了某个项目的 Monkey 测试报告的样例,可以看出本次测试发现小程序体验版本中的一些 JsError 的报错情况,便于快速 debug。
为什么称作智能化 Monkey,它和普通 Monkey 有哪些不同呢?
普通 Monkey 测试通过随机点击的方式,尽可能点击到更多的元素,测试是否会出现 crash 等情况。
智能化 Monkey 测试目的是做页面维度的冒烟测试,发现页面是否存在 JsError、黑白屏等异常问题,所以小程序智能化 Monkey 的目标是希望尽可能覆盖更多页面,而不是将页面所有元素都点击一次。
一般来说 Monkey 流程是如下:
1、元素解析,识别页面有哪些可以点击的元素
2、选取一个元素点击
3、点击不下去时进行回溯
云测服务针对小程序的特点,对上面各个步骤都进行进行定制优化,并且增加历史经验累积和分布式策略,提高覆盖率。
1、元素解析
在元素解析方面,前期我们使用机器学习的方式,针对 1000 多个小程序进行打标签,通过 yolov3 训练一套模型来识别可点击的元素。近期我们进行改进,通过 JS 注入的方式获取小程序当前页面的 DOM 树,通过解析 DOM 树的方式识别元素。通过下图,可以看到 JS 注入方式,更加准确的识别小程序可点击元素,更加贴近人的感知
2、选取点击元素
选取点击元素方面,我们根据页面 DOM 树中元素渲染后的属性特征进行筛选和过滤。如优先选择绑定了点击或滑动事件的元素,过滤不在当前可视区域或不可见元素。
3、页面回溯
当点击进行不下去、需要页面回溯时,可以针对小程序特性,直接通过拼 path+query 直接回到某个状态的页面
在每次测试结束后,后台会记录每次测试中页面跳转成功的情况,画有向图,用作历史经验,为后续测试的元素选取作为参考。因此一般来说,跑测次数越多,覆盖率越高。除此以外,当用户提交多台机器同时跑测试时,例如提交 10 台安卓机器同时测试,后台会尽量让不同的机器去覆盖点击不同的页面,提升整体任务成功率。
智能化 Monkey 测试效果分析
从目前的统计结果看,20 分钟安卓和 iOS 的平均页面覆盖率都在 30% 左右。
后续云测服务将进一步优化算法,并结合现网页面访问情况,在有限的测试时间里面,尽量优先去点击 现网用户访问多的页面,更加符合业务的实际需求。
自定义 Monkey 测试
部分用户希望需要进一步提升 Monkey 页面覆盖率,这时候可以尝试自定义 Monkey 的方式。
在开始自定义 Monkey 测试前,用户需要前往【测试计划】页面配置指定页面列表,在测试时先直接通过配置的 path+query 方式打开指定页面列表。
打开完成后,云测服务提供多种后继模式,进行后续智能化测试:
- 自由探索:所有指定页面打开后继续原来智能化探索,进一步提升覆盖率
- 重点覆盖:所有指定页面直接打开后,重回重点页面继续点击,适合页面稳定性测试,测试页面稳定性
- 结束测试:直接结束测试任务,快速获取测试结果
快速 Monkey 测试
第三方服务商用户需要开发多个小程序,这时快速 Monkey 测试非常适合他们做多个小程序的快速冒烟测试。
快速 Monkey 测试支持一次提测最多 30 个小程序,每个小程序跑测 1 分钟智能化 Monkey,检查异常情况;也支持为每个小程序指定页面做冒烟测试。
注意:只有第三方服务商,才能使用快速 Monkey 模式
总结
以上三种 Monkey 模式适用于不同场景的快速冒烟测试,同时零代码接入云测服务即可快速应用,助力小程序开发者提升测试效率,实现测试自由。
但是智能化 Monkey 也存在不支持输入、上传图片等非点击类型操作、不校验页面逻辑登问题。对于此类情况,录制回放 能够满足这方面的需求,实现更好的测试环境。
如有更多小程序云测服务的相关问题,可点击 微信小程序云测服务专区 发帖反馈,技术专员将为大家解答及进行深度交流。
我的眼睛学会了
学习了
123
现在全力写minium定制化场景脚本,待结束后准备接入monkey作为日常发布bg之后的冒烟测试。
已阅,真不戳,测试忙的时候自己懒得测试可以用这个玩儿嘛
期待最终效果