目前在应用稳定性测试中,经常用长时间的Monkey压测来发现一些时序上的问题,保证发版项目的稳定性,但是Monkey测试存在的问题就是随机性操作带来测试范围的偏差,记录下如何验证Monkey测试的有效性,如何优化Monkey稳定性测试,提高测试效率。
这边的测试验证以测试时长、代码覆盖率、单台和多台设备多次测试采集覆盖率数据来分析。
一、统计代码覆盖率的方式
Java层的覆盖率数据统计使用Jacoco,C++层的代码覆盖率使用gcov,gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具,关于Jacoco和gcov这边不做过多的介绍,自行搜索了解即可。
二、单台设备不同测试时长的代码覆盖率
因为目前测试的应用Java层的代码很少,可以忽略不计,以下的覆盖率数据是基于C++层的代码覆盖率。不同的应用测试数据可能会有区别,本文的数据只是给出一个测试参考方式,不具备直接套用应用的价值,最好实际测试下手上的应用看看实际的数据怎样。
这边分别测试了半小时、4小时和8小时不同时长的代码覆盖率数据,从不同测试时长的覆盖率分布图可以看出,测试时长对Monkey覆盖率并没有多大的影响。整体的分布区间在9%-30%,而且在20%左右的覆盖率有很大的一个断层。
半小时和4小时的数据都采集了100份左右,但是8小时的覆盖率采集的比较少,而且因为设备掉线关机或者其他的原因导致8小时的覆盖率数据不太好采集,只采集了15份,从这些少量样本来看,覆盖率并没有因为测试时长的增加而提高,继续测试采集下去并没有多大的意义。
三、多设备覆盖率汇总采集
接下来是使用多台设备一起测试,汇总覆盖率数据,看看分布的曲线是怎样的,横轴是设备量,纵轴是设备覆盖率产物汇总之后的行覆盖率数据,从分布图可以看到,随着设备量的增加,覆盖率增长已经逐渐趋于平缓。
再把上面单台设备半小时Monkey测试的产物汇总起来,可以当作是100台设备汇总之后的覆盖率,和上图的数据放在一起做对比,就可以看出随着设备数量的增加,整体覆盖率的增长曲线大体是怎样的趋势。
100份覆盖率产物汇总之后的行覆盖率是39.13%,从下图可以看出,20台设备半小时Monkey测试可以达到35%的覆盖率,之后要往上增加覆盖率就要增加的很多的设备量。
四、Monkey优化策略
1、降低Monkey测试的时长
因为Monkey测试主要是为了发现一些因时序错误引发的潜在问题,长时间的压测也是为了保证应用的稳定性,降低Monkey测试的时长QA一般情况下是不会答应,除非是节省下来的时间做一些比Monkey更有价值的测试,这些测试能发现更多潜在的问题。
2、增加Monkey测试的覆盖范围
经过基础版的常规测试和压测,到发版的阶段用常规的方式测试已经不太能发现问题,最好能用一些伪随机的测试制造一些可能导致时序问题的场景。
这边可以使用自动化界面遍历+adb Monkey的方式来提高Monkey测试的覆盖率,因为Monkey测试有很高的随机性,一些界面在测试的时候很可能不会走到,自动化界面遍历跳转到指定的界面之后再触发Monkey测试,保证测试的覆盖范围。
转载请注明出处:陈文管的博客 – Monkey测试有效性验证及测试策略优化
扫码或搜索:文呓
微信公众号 扫一扫关注