微信小程序云测服务 提供了丰富的自动化测试能力供用户选择,其中最简单,最方便的就是智能化 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 扩展