Android测试--Monkey测试(压力稳定性测试)
Monkey意指猴子,顾名思义也就像猴子一样在软件上乱敲按键;Monkey测试是Android自动化测试的一种手段,是Android提供的一个运行在手机上的一个程序,用来伪随机地模拟点击和触摸等用户事件。Monkey可以用于对应用程序进行随机和重复的压力测试。通过统计Monkey连续无故障运行的时间,可以衡量软件稳定性。Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,
前言:一般是功能测试完成后或者测试后期会进行Monkey测试
一、Monkey测试简介
Monkey意指猴子,顾名思义也就像猴子一样在软件上乱敲按键;Monkey测试是Android自动化测试的一种手段,是Android提供的一个运行在手机上的一个程序,用来伪随机地模拟点击和触摸等用户事件。Monkey可以用于对应用程序进行随机和重复的压力测试。通过统计Monkey连续无故障运行的时间,可以衡量软件稳定性。
Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。
二、Monkey参数说明
•adb shell monkey [options]
我们需要通过电脑端cmd命令行或脚本来启动Monkey。由于Monkey运行在模拟器或真实设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入shell后直接输入Monkey命令。
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
例如: adb shell monkey -p com.xxxx.xxx(待测app包名) -v 500
•-p <allowed-package-name>
如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。
•-v
命令行的每一个-v将增加反馈信息的级别。
Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。
Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。
Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity事件。
例如:monkey -p com.xxx.xxx --ignore-crashes --ignore-timeouts --throttle 500 -v -v -v 3700000 > /sdcard/Monkeylog_`date +%Y%m%d%H%M`.txt 2>&1 &
•--ignore-crashes
指定了此选项,待测应用崩溃或发生异常时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行
•--ignore-timeouts
指定了此选项,待测应用停止响应(如弹出“应用无响应”对话框)时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行
•--throttle <milliseconds>
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。
•--pct-touch <percent>
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
•-s <seed>
伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。
例如: adb shell monkey -p com.xxxx.xxx --throttle 750 --pct-touch 50 -v -s 3000 200000 > D:\monkey_log.txt
三、Monkey测试目的
2.1 用于App压力稳定性测试
常见的问题如:ANR:(Application Not Responding) 无响应;
CRASH:崩溃,程序闪退等非正常退出;
2.1.1 环境准备
手机保持充电状态
手机保持不熄屏(设置-开发人员选项-保持唤醒状态-开启);
手机设置--显示和亮度-休眠:10分钟后
手机中尽量不要插入SIM
通知栏最好不要有通知消息 (注:可能误触跳转到非待测应用中)
2.1.2 进入shell环境后,执行命令
示例: monkey -p com.xxxx.xxx --ignore-crashes --ignore-timeouts --ignore-native-crashes --throttle 500 -v -v -v 3700000 > /sdcard/Monkeylog_`date +%Y%m%d%H%M`.txt 2>&1 &
2.1.3 停止Monkey
方法:强制长按电源(power)键重启
2.1.4 Monkey日志路径
日志路径和名称根据你喜好自己设定,示例中是放在/sdcard中,日志名称是Monkeylog_年月日时分秒
补充说明:
2>&1 表示把所有的输出都输出到前面的日志文件中;
最后一个& 表示把条命令放到后台执行;
2.2 用于手机整机稳定性测试
2.2.1 环境准备
手机保持充电状态
手机保持不熄屏(设置-开发人员选项-保持唤醒状态-开启);
手机设置--显示和亮度-休眠:10分钟后
手机中尽量不要插入SIM卡 (注:否则可能会呼出电话)
打开手机设备日志开关,如:荣耀手机(在拨号盘输入 *#*#2846579#*#* -->后台设置-->APLOG设置-->打开)
2.2.2 命令
adb shell “monkey --ignore-crashes --ignore-timeouts --ignore-security-exceptions --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 -v -v -v --throttle 500 1200000000 > /sdcard/monkeysys.log 2>&1 &”
补充说明:
--pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 这些是设定轨迹球,导航按键(上下左右) ok按钮、返回按钮、menu按钮这些在操作中占的比例为0;
1200000000 是总的次数
-v 表示monkey反馈log信息级别(3个-v这个级别的反馈信息最详细))
2.2.3 停止Monkey
方法:强制长按电源(power)键重启
2.2.4 Monkey日志路径
/sdcard
注:Monkey测试一般是在下班前挂上,然后第二天来上班再导出日志;
四、Monkey日志定位问题步骤
4.1 将日志导出到本地
4.1.1 在cmd命令行中输入adb shell,进入shell环境
进入到/sdcard目录,然后执行导出命令:
adb pull /sdcard/monkeysys.log D:\log\Monkeylog
4.2 搜索关键词
用文档编辑器(如:Notepad++)打开日志,然后在monkeysys.log日志文件搜索关键词anr、crash等,点击搜索结果,可以定位到发生anr、crash的详细堆栈信息
注:搜索结果中标记黄色的是关键词,前面几个是我们命令中的参数,不是报错信息哈~
更多推荐
所有评论(0)