5

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

 3 years ago
source link: https://www.chenwenguan.com/monkey-test-strategy-optimization/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2021年1月24日 | 最近更新于 下午5:10

目前在应用稳定性测试中,经常用长时间的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测试有效性验证及测试策略优化

扫码或搜索:文呓

微信公众号 扫一扫关注

Filed Under: Android


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK