monkey是adb调试工具中的一个命令,用于android设备的稳定性测试,主要是为了测试app会不会出现crash和anr,以及出现的时间和次数
adb shell monkey命令,可以查看命令所能携带的参数
crash:程序崩溃或闪退,一般会给出提示框:程序停止运行
anr:程序无响应(响应延迟),当操作在一段时间内系统无法处理的时候,弹出对话框:程序无响应,是否关闭
- -p 启动指定程序包
# 查看正在运行的包名
adb shell dumpsys window | findstr mCurrentFocus
# 启动指定程序,事件执行100次
adb shell monkey -p 包名 100
- –throttle 间隔时间
#每个事件之间间隔1s,共执行100次事件
adb shell monkey -p 包名 --throttle 1000 100
- -v 日志等级**************
-v :除启动、测试完成、最终结果外,提供较少信息
-v-v :提供较为详细的测试信息,如逐个发送Activity事件
-v-v-v :提供更加详细的设置信息,如测试中被选中或未被选中的Activity
#输出较为详细的日志
adb shell monkey -p 包名 -v-v 100
- > 路径 日志保存 **************
#保存在pc端,F盘中******************
adb shell monkey -p 包名 -v-v 100 > F:\111.log
#保存在手机上
adb shell
monkey -p 包名 -v-v 100 >/scard/111.txt
#标准流和错误流分开保存
adb shell monkey -v-v 100 1>F:\111.log 2>E:\error.log
- -s seed 随机种子,决定每次monkey执行的事件是否相同,如果不指定,则每次执行的事件都不同
***用于重现bug
#指定随机种子数,随便写个数字就行
adb shell monkey -p 包名 -s 178965 -v-v 100 > F:\111.log
- 调试命令
#忽略在应用程序发生crash时 导致Monkey停止
--ignore-crashes
#忽略在应用程序发生ANR时 导致Monkey停止
--ignore-timeout
#忽略应用程安全证书的问题导致Monkey停止
--ignore-security-exceptions
#用于指定是否监视并报告应用程序发生崩溃的本地代码
--monitor-native-crashes
注:调试命令可以配合使用,用来捕获某一种错误,如使用执行monkey时使用–ignore-timeout和ignore-security-exceptions,可以单独捕获到crash的错误
adb shell monkey -p 包名 --ignore-timeout ignore-security-exceptions 100
- 控制事件比例
eg: 共100个事件,点击事件占比30%,滑动事件占20%,曲线滑动事件占10%,屏幕旋转占5% ,其他事件占3%
adb shell monkey -p 包名 --pct-touch 30 --pct-motion 20 --pct-trackball 10 --pct-rotation 5 --pct-anyevent 3 100
eg:共100个事件,40%用于程序切换,其它事件在当前所处的程序中执行
adb shell monkey --pct-appswitch 40 100
eg:共100个事件,40%用于程序切换,其它事件均在指定程序中执行
adb shell monkey -p 包名 --pct-appswitch 40 100