Monkey是一个命令行工具,它向正在开发的应用程序发送随机的用户事件流(如按键输入、触摸屏输入、手势),用于Android应用程序的压力测试。
Monkey命令参数:
1、主要参数
--help: 显示帮助信息
-v: 设置输出信息的详细级别(-v越多,信息越详细)
2、事件类型和频率
-s: 设置随机数生成的种子值,相同的种子值会产生相同的事件序列
--throttle: 设置每个事件之间的延迟时间(毫秒)
--pct-touch: 设置触摸事件的百分比
--pct-motion: 设置动作事件的百分比
--pct-trackball: 设置轨迹球事件的百分比
--pct-nav: 设置导航事件的百分比(上下左右)
--pct-majornav: 设置主要导航事件的百分比(如回退键)
--pct-syskeys: 设置系统按键事件的百分比(如Home键、Back键)
--pct-appswitch: 设置启动Activity的百分比
--pct-anyevent: 设置其他类型事件的百分比
3、过滤参数
-p: 设置只对指定的应用程序进行测试
--exclude-app: 设置不对指定的应用程序进行测试
--pkg-blacklist-file: 设置包黑名单文件,不对黑名单中的应用程序进行测试
--ignore-crashes: 设置忽略应用程序崩溃
--ignore-timeouts: 设置忽略应用程序响应超时
--ignore-security-exceptions: 设置忽略安全异常
--monitor-native-crashes: 设置监控本地代码的崩溃
--kill-process-after-error: 设置在出现错误后停止应用程序进程
--hprof: 设置设备的CPU和内存分析信息
4、运行环境
--setup: 设置运行Monkey的设备
--port: 设置连接到设备的端口
5、会话参数
--install-apk: 设置要测试的应用程序的apk文件路径
6、调试选项
--dbg-no-events: 设置不生成任何事件
--hprof: 设置启用分析记录
--wait-dbg: 设置在接收到调试器连接后暂停
以下是一个实际的Monkey命令示例,该命令对com.example.demo应用程序进行100次随机事件的压力测试:
adb shell monkey -p com.example.demo --throttle 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 100
在这个命令中,-p com.example.demo 表示测试对象是com.example.demo应用程序,--throttle 500 表示每个事件之间的延迟是500毫秒,--ignore-crashes 和 --ignore-timeouts 表示忽略应用程序崩溃和响应超时,--monitor-native-crashes 表示监控本地代码的崩溃,-v -v 表示输出信息的详细级别为2,100 表示触发事件的总数。
触发事件次数算法:
需要控制monkey执行的实景,可以通过设置执行时长/事件发送延时,计算出需要执行的次数。如果想要monkey运行24小时,每100毫秒发送一个事件。
24*60*60*1000 / 100 = 864000次
注:执行命令出现这个报错时 Count is not a number,注意检查一下throttle前面的两条”-“,其他参数也可能忽略,注意细节。