微信小程序自动化测试——智能化 Monkey

微信小程序云测服务 提供了丰富的自动化测试能力供用户选择,其中最简单,最方便的就是智能化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测试前,用户需要前往测试计划页面配置指定页面列表,在测试时先直接通过配置的path+query方式打开指定页面列表。

在这里插入图片描述

打开完成后,云测服务提供多种后继模式,进行后续智能化测试:

  • 自由探索:所有指定页面打开后继续原来智能化探索,进一步提升覆盖率
  • 重点覆盖:所有指定页面直接打开后,重回重点页面继续点击。这个模式非常适合部分项目希望做页面稳定性测试,希望在几个重点页面反复点击,测试页面稳定性
  • 结束测试:直接结束测试任务,快速获取测试结果

快速Monkey

除了普通小程序开发者,还有一些是小程序第三方服务商,帮助授权他们的商户代开发小程序,比如有赞,微盟,明源云等。

对于第三方服务商用户,有非常多个小程序授权给他们开发,这时快速Monkey就很适合他们做多个小程序的快速冒烟测试

它支持一次提测最多30个小程序,每个小程序跑测1分钟智能化Monkey,检查异常情况,也支持向自定义Monkey一样,为每个小程序指定页面做冒烟测试

请注意,只有第三方服务商,才能使用快速Monkey模式!

总结

以上介绍了三种Monkey模式,可以帮助用户进行快速冒烟测试,并且都是零代码,接入云测服务即可使用。

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

  • 不支持输入,上传图片等非点击类型操作
  • 不校验页面逻辑校验,比如断言某个元素是否存在等

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

需要帮助

猜你喜欢

转载自blog.csdn.net/WXMiniTest/article/details/126712224