• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

陈文管的博客

分享有价值的内容

  • Android
  • Affiliate
  • SEO
  • 前后端
  • 网站建设
  • 自动化
  • 开发资源
  • 关于

Monkey测试有效性验证及测试策略优化

2021年1月24日发布 | 最近更新于 2023年8月28日

目前在应用稳定性测试中,经常用长时间的Monkey压测来发现一些时序上的问题,保证发版项目的稳定性,但是Monkey测试存在的问题就是随机性操作带来测试范围的偏差,记录下如何验证Monkey测试的有效性,如何优化Monkey稳定性测试,提高测试效率。

这边的测试验证以测试时长、代码覆盖率、单台和多台设备多次测试采集覆盖率数据来分析。

一、统计代码覆盖率的方式

Java层的覆盖率数据统计使用Jacoco,C++层的代码覆盖率使用gcov,gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具,关于Jacoco和gcov这边不做过多的介绍,自行搜索了解即可。

二、单台设备不同测试时长的代码覆盖率

因为目前测试的应用Java层的代码很少,可以忽略不计,以下的覆盖率数据是基于C++层的代码覆盖率。不同的应用测试数据可能会有区别,本文的数据只是给出一个测试参考方式,不具备直接套用应用的价值,最好实际测试下手上的应用看看实际的数据怎样。

这边分别测试了半小时、4小时和8小时不同时长的代码覆盖率数据,从不同测试时长的覆盖率分布图可以看出,测试时长对Monkey覆盖率并没有多大的影响。整体的分布区间在9%-30%,而且在20%左右的覆盖率有很大的一个断层。

半小时Monkey测试代码覆盖率分布

4小时Monkey测试代码覆盖率分布

半小时和4小时的数据都采集了100份左右,但是8小时的覆盖率采集的比较少,而且因为设备掉线关机或者其他的原因导致8小时的覆盖率数据不太好采集,只采集了15份,从这些少量样本来看,覆盖率并没有因为测试时长的增加而提高,继续测试采集下去并没有多大的意义。

8小时Monkey测试代码覆盖率分布

三、多设备覆盖率汇总采集

接下来是使用多台设备一起测试,汇总覆盖率数据,看看分布的曲线是怎样的,横轴是设备量,纵轴是设备覆盖率产物汇总之后的行覆盖率数据,从分布图可以看到,随着设备量的增加,覆盖率增长已经逐渐趋于平缓。

多设备覆盖率汇总统计分布

再把上面单台设备半小时Monkey测试的产物汇总起来,可以当作是100台设备汇总之后的覆盖率,和上图的数据放在一起做对比,就可以看出随着设备数量的增加,整体覆盖率的增长曲线大体是怎样的趋势。

100份覆盖率产物汇总之后的行覆盖率是39.13%,从下图可以看出,20台设备半小时Monkey测试可以达到35%的覆盖率,之后要往上增加覆盖率就要增加的很多的设备量。

多设备覆盖率汇总统计分布曲线

四、Monkey优化策略

1、降低Monkey测试的时长

因为Monkey测试主要是为了发现一些因时序错误引发的潜在问题,长时间的压测也是为了保证应用的稳定性,降低Monkey测试的时长QA一般情况下是不会答应,除非是节省下来的时间做一些比Monkey更有价值的测试,这些测试能发现更多潜在的问题。

2、增加Monkey测试的覆盖范围

经过基础版的常规测试和压测,到发版的阶段用常规的方式测试已经不太能发现问题,最好能用一些伪随机的测试制造一些可能导致时序问题的场景。

这边可以使用自动化界面遍历+adb Monkey的方式来提高Monkey测试的覆盖率,因为Monkey测试有很高的随机性,一些界面在测试的时候很可能不会走到,自动化界面遍历跳转到指定的界面之后再触发Monkey测试,保证测试的覆盖范围。

转载请注明出处:陈文管的博客 – Monkey测试有效性验证及测试策略优化

扫码或搜索:文呓

博客公众号

微信公众号 扫一扫关注

文章目录

  • 一、统计代码覆盖率的方式
  • 二、单台设备不同测试时长的代码覆盖率
  • 三、多设备覆盖率汇总采集
  • 四、Monkey优化策略
    • 1、降低Monkey测试的时长
    • 2、增加Monkey测试的覆盖范围
博客公众号

闽ICP备18001825号-1 · Copyright © 2025 · Powered by chenwenguan.com