1. Monkey进行压力测试的命令?
adb shell monkey -p <packagename> <count>
说明:packagename:被测试APP包名;count:执行的随机事件数
2.如何重现Crash、ANR过程?
跑Monkey目的就是想发现APP在这种随机操作过程中可能出现的Crash或者ANR现象,一旦出现这种Crash或者ANR现象后一定会抛出一些Crash信息或ANR信息。这种信息对开发来说是非常重要的,开发当拿到这些信息之后会进行修复,把APP问题修复之后可能会让测试人员复现一下执行场景。
在Android里面Monkey随机操作过程,其实是一个伪随机的过程,它是基于某一个数据值生成的一系列随机操作,这个数据的值称为种子 ( seed ),这个seed是给Monkey用的,Monkey依据于这个种子值生成一个固定序列,如果你在第一次运行的时候带上一个自定义的Seed值,下一次想重新复现这个执行场景时候就用相同 seed值就可以了,两次Monkey所执行随机操作事件是完全一样的。
- 添加参数 -s ( seed )
adb shell monkey -s <seed值> -p <packagename> <count>
例如:adb shell monkey -s 6789 -p com.android.calculator2 100
3.如何提取Crash、ANR的信息?
将monkey执行过程中的日志重定向到文件里面,之后再从文件里面去过滤,自己去提取日志相对麻烦。
# 最详细的日志情况就是加上三个 -v; >是重定向输出符
adb shell monkey -v -v -v -s 6789 -p com.android.calculator2 100 > 日期.log
建议使用测试版APP连接第三方统计平台,去收集所有Crash和ANR信息,通过平台自动归类会便于测试过程中对Crash和ANR信息的收集。
4.如何设置monkey运行8个小时?
- 添加参数 -- throttle
注意:是两个小横杠,throttle后面会跟上事件之间执行时间间隔的毫秒数
# 每300毫秒触发点击事件
adb shell monkey -v -v -v -s 6789 --throttle 300 -p
com.android.calculator2 100 > 日期.log
5.在Crash/ANR后,如何继续执行?
- 添加忽略Crash参数 --ignore-crashes
- 添加忽略ANR参数 --ignore-timeouts
adb shell monkey -v -v -v -s 6789 --throttle 300 --ignore-crashes
--ignore-timeouts -p com.android.calculator2 100 > 日期.log
6.如何让monkey执行指定的事件?
触摸事件 --pct-touch
动作事件 --pct-motion
轨迹球事件 --pct-trackball
基本导航事件 --pct-nav
主要导航事件 --pct-majornav
系统导航事件 --pct-syskeys
应用启动事件 --pct-appswitch
其它类型事件 --pct-anyevent
注意:指定事件后需要跟着需要执行事件数
# 指定执行触摸事件--pct-touch 100次
adb shell monkey -v -v -v -s 6789 --throttle 300 --ignore-crashes
--ignore-timeouts --pct-touch 100 -p com.android.calculator2 100 > 日期.log