APP稳定性测试利器 Monkey介绍、实战使用、日志分析

第一、Monkey简介
Monkey是什么?

Monkey 是安卓官方提供的一个命令行工具,可以运行在Android模拟器和实体手机上。通过Monkey 来模拟用户的触摸、点击、滑动、系统按键的操作,来对APP进行压力测试、稳定性测试。换句话说,就是在乱点一通的情况下,来验证APP程序的稳定性。

Monkey主要作用

通过发送伪随机的用户事件流,在压力情况下来验证app的稳定性。Monkey主要用来发现崩溃、无响应等影响用户使用的问题。

Monkey执行原理

软件测试工程师必知必会—APP稳定性测试Monkey(一)

Monkey 的局限

1、一般只适用于Android 的app;

2、执行的操作随机,只能控制比例;

第二、Monkey命令及参数
本文给大伙介绍Monkey的详细命令和使用参数。

Monkey命令主要分为基本参数、事件类、调试类。

Monkey基本参数

-h:打印帮助信息。如下图,把monkey支持的所有命令及参数都打印出来了,在你一时想不起命令的时候可以参考。

-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。最多支持-v -v -v,也就是最详细的日志输出。

-p:指定运行的包名。指定包之后,monkey将只允许系统启动指定的app。如果指定多个包,需要使用多个-P。

-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的

--throttle:每个事件结束后的间隔时间。如:--throttle 100

Monkey 命令大全如下图:

软件测试工程师必知必会—APP稳定性测试Monkey(二)

Monkey事件类命令

事件类命令是Monkey最重要的命令,共11个事件类命令。

--pct-touch:指定触摸事件的百分比,如:--pct-touch 5%

--pct-motion <percent> 滑动事件

--pct-trackball <percent> 轨迹球事件

--pct-nav <percent> 导航事件 up/down/left/right

--pct-majornav <percent> 主要导航事件 back key 、 menu key

--pct-syskeys <percent> 系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl

--pct-appswitch <percent> app间切换

--pct-anyevent <percent>任意事件

--pct-flip <percent>键盘轻弹百分比,如点击输入框,键盘弹 起,点击输入框以外区域,键盘收回

--pct-pinchzoom <percent> 放大、缩小事件

--pct-rotation <percent> 屏幕旋转

备注:轨迹球事件、导航事件、主要导航事件这三个事件已经很少用了。

Monkey调试类命令

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

--wait-dbg:知道连接了调试器才执行monkey测试

第三、Monkey实例执行
简单命令实例:

adb shell monkey -p com.netease.cloudmusic -v 10 对指定应用跑10条事件

软件测试工程师必知必会—APP稳定性测试Monkey(三)

简单命令

复杂命令实例:

该命令也是对指定应用跑10条事件,只不过我自己指定了一系列的参数(参数记不住,可以去我的山一篇文章)

软件测试工程师必知必会—APP稳定性测试Monkey(三)

复杂命令

指定保存路径:

软件测试工程师必知必会—APP稳定性测试Monkey(三)

保存路径

注意点:

1、命令不是写的越复杂越好,需要根据自己的需要来设计;

2、实际跑monkey的事件数肯定时巨大的(我这里做参考只用了10条事件做例子);

3、事件的时间间隔尽量设置在300-500ms ,这个比较贴近实际使用;

4、跑monkey时,手机上尽量不要有购物、支付之类的软件,不然你会后悔的,哈哈

结果分析

adb shell monkey -p com.netease.cloudmusic -v 10 运行结果如下图,我们对着结果图来分析。

软件测试工程师必知必会—APP稳定性测试Monkey(三)

monkey执行结果

第一个框就是我们发出的指令 adb shell monkey -p com.netease.cloudmusic -v 10 。

第二个框seed就是时间序列的种子值,可以通过 -s参数指定,count就是执行的事件多少,也是我们指定的。

第三个框AllowPackage 我们运行的包名。 这是网易云音乐的包名。

第四个框是允许跑的Category,通过-c参数指定,没有指定的话默认是
android.intent.category.LAUNCHER和android.intent.category.Monkey。

第五个框是11个事件类型的比例,没有指定的话就随机分配。如果记不住的话可以看我上一篇的文章,有详细解释。

第六个框就是执行的日志,发送的事件的记录。

第七个框就是monkey正常结束。

第四、Monkey日志分析
通过上面的描述,大伙应该有一个初步的理解了。可能有小伙伴会说了解是了解了,但是最重要的是我怎么知道这个monkey跑出了问题呢。我们一起来看戏对结果日志中的问题分析。

Monkey测试结果的异常分类:

1、crash 闪退崩溃

2、exception 异常

3、anr无响应

4、force close强制退出

过滤方法:

跑一晚上的Monkey跑出来的测试结果日志可能有几十M的文件,要一条一条看过去肯定会疯掉的。最简单直接的方法就是过滤关键字,比如我想看下测试结果里有没有崩溃,那就直接在测试结果里过滤关键字 crash ;我想看下测试结果里有没有ANR,就直接过滤下关键字ANR。

crash日志:

软件测试工程师必知必会—APP稳定性测试Monkey(四)

crash日志

ANR日志:

软件测试工程师必知必会—APP稳定性测试Monkey(四)

问题提交和回归

问题发现了,问题日志也有了,就可以直接提问题单给开发修改问题啦。这里要注意下,跑monkey的seed值,一定要记住。在问题回归的时候,这个参数要和之前的一致,才能保证monkey执行的操作和之前的一致,才有回归的意义。

欢迎大家共同探讨学习,共同进步。
————————————————
版权声明:本文为CSDN博主「好好求fly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33435769/article/details/116861752

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值