1、Monkey定义:
Monkey是google提供的一个命令行工具,可运行在模拟器或实际设备中,它向系统发送伪随机的用户事件,模拟用户的按键输入、触屏输入、手势输入等。从而对正在运行的应用程序进行
压力测试,目的是看设备多长时间会出现异常,并观察系统的稳定性和容错性能。
2、Monkey环境搭建
Monkey是由adb命令来启动的,古只需要配置好adb环境即可。
(1)、安装Andriod SDK和JDK
(2)、将SDK下面的tools和platform-tools配置到环境变量中path中;
(3)、cmd命令行输入adb,如果可以显示help信息,则配置成功。
3、Monkey命令参数
monkey [option] <count>---option可选,count必选
option参数分类:
(1)、基本配置参数,包括 --help,-v-v-v(二级)
(2)、事件类型和频率参数
-s<seed> 例如:adb
shell monkey -s1111-v10
--throttle <毫秒数> 事件之间插入固定延迟
--pct-touch<百分比> 调整触摸事件的百分比
--pct-motion<百分比> 调整动作事件的百分比
--pct-pinchzoom<百分比>调整二指缩放事件的百分比
--pct-trackball<百分比>调整轨迹事件的百分比
--pct-rotation<百分比>调整屏幕旋转事件的百分比
--pct-nav<百分比>调整基本导航事件的百分比
--pct-majornav<百分比>调整主要导航事件<百分比>
--pct-syskeys<百分比>调整系统按键事件的百分比
--pct-appswitch<百分比>调整启动Activity的百分比
--pct-flip<百分比>调整键盘事件的百分比
--pct-anyevent<百分比>调整其他类型事件的百分比
(3)、约束限制类参数
-p<包名>
-c<类别名>
(4)、调试类参数
--dbg-no-events
--hprof 生成内存快照
--ignore-crashes 崩溃发送事件
--ignore-timeouts 忽略超时
--ignore-security-exceptions 忽略安全异常
--kill-process-after-error
--monitor-native-crashes
--wait-dbg
(5)、官方隐藏类参数
--pkg-blacklist-file<黑名单文件>
--pkg-whitelist-file<白名单文件>
-f<脚本文件>
4、Monkey事件
1、触摸事件
:Sending Touch (Action_DOWN)
:Sending Touch (Action_UP)
2、手势事件
:sending Touch (Action_DOWN)
:Sending Touch (Action_MOVE)
:Sending Touch (Action_UP)
3、二指缩放事件
4、轨迹事件
5、屏幕旋转事件
6、基本导航事件
7、主要导航事件
8、系统按键事件
9、启动Activity事件
10、键盘事件
11、其他类型事件
4、Monkey启动
adb shell monkey [opition] <count>
5、Monkey停止
adb shell ps|grep monkey
adb shell kill pid
6、Monkey测试方法
(1)、常规的稳定性测试
(2)、自定义的脚本稳定性测试
(3)、结合辅助命令、获取更多的信息
7、Monkey日志分析
日志分析非常重要,可以定位问题和解决问题。
首先需要知道如何保存日志:
(1)、Monkey日志保存的3个方法:
adb shell monkey [option] <count> >e:\monkeyLog.txt
将日志保存到monkeyLog.txt文件中
(2)、adb shell monkey [option] <count> /mnt/sdcard/monkeyLog.txt
将日志保存到手机sdcard中
(3)、Monkey [option] <count> 1>/sdcard/monkeyLog.txt 2>/sdcrad/errorLog.txt
分别保存日志和错误日志,错误日志
记录崩溃或应用程序无响应错误日志。
其次,如何解析日志?,需要先明确日志的构成:测试命令信息、伪随机事件流信息、异常信息、Monkey执行结果信息。
(1)、测试命令信息
例如 :Monkey: seed=1501203071005 count=10,
// Event percentages:
// 11: 13.0%
(2)、伪随机事件,主要包括上面提到的11大事件
例如::Switch:
:Sending Touch (ACTION_DOWN): 0:(954.0,1300.0)
:Sending Touch (ACTION_UP): 0:(962.5436,1295.4299)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,2.0)
(3)、异常信息
Crash:....
(4)、执行结果信息,如果有失败则显示失败原因。
Events injected: 10
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=8211ms (0ms mobile, 0ms wifi, 8211ms not connected)
// Monkey finished
再者,可以把自己关心的日志信息,用bat脚本提取出来并收集到一个日志中。