文章目录monkey介绍基本语法参数配置基本控制参数日志相关参数事件类型参数异常信息调试参数其他参数其他配置关于日志分开输出保存关于黑白名单结果分析错误信息类型查找出错activity复现问题monkey介绍monkey:由 Android SDK 提供的一个命令行工具;主要用于对 Android 应用进行压力测试和稳定性测试实现方式:向系统发送伪随机的用户事件流来模拟用户的随机操作,如点击、滑动、按键等,以检测应用程序是否会在不同测试场景下出现崩溃等异常信息特点: 单用户、快速、顺序执行、伪随机命令(注:monkey测试是一种 stress-test,但本质上不符合并发概念;性能测试上的压力测试指的是模拟多个用户高并发测试)基本语法adb shell monkey [options]
#"adb shell":确保devices已连接#"monkey":monkey命令#"[options]":可选;配置参数#"
基本控制参数-p
adb shell monkey -p com.happy.app -v 10000 > monkey_log.txt#"-v":默认级别;一级日志详细程度,显示基本的事件计数喝完成百分比;并将日志输出在 monkey_log.txt中
adb shell monkey -p com.happy.app -v-v 10000 > monkey_log.txtadb shell monkey -p com.happy.app -vv 10000 > monkey_log.txt#"-v-v 或者 -vv":二级日志详细程度,额外显示事件类型和目标包信息;并将日志输出在 monkey_log.txt中
adb shell monkey -p com.happy.app -v-v-v 10000 > monkey_log.txtadb shell monkey -p com.happy.app -vvv 10000 > monkey_log.txt#"-v-v-v 或者 -vvv":三级日志详细程度,显示每个事件的具体动作和结果等最详细信息;并将日志输出在 monkey_log.txt中
关于重定向指定:" > ":重定向,输出会覆盖" > > ":追加重定向,输出会追加在原来文件的末尾事件类型参数–pct-touch :设置触摸事件(点击屏幕)的百分比adb shell monkey -p com.happy.app --pct-touch 50 10000#"--pct-touch 50" 表示 50% 的事件是触摸事件–pct-motion :设置动作事件(滑动屏幕)的百分比adb shell monkey -p com.happy.app --pct-motion 30 10000#"--pct-motion 30" 表示 30% 的事件是滑动事件–pct-trackball :设置轨迹球事件的百分比(基本很少使用)
–pct-nav :设置导航事件(上下左右键)的百分比
–pct-majornav :设置主要导航事件(如返回键、菜单键)的百分比
–pct-syskeys :设置系统按键事件(如 Home 键、音量键)的百分比
–pct-appswitch :设置应用切换事件的百分比
adb shell monkey -p com.happy.app --pct-appswitch 10 10000#"--pct-appswitch 10" 表示 10% 的事件是启动其他应用–pct-flip :设置键盘翻转事件的百分比(适用于物理键盘设备)
–pct-anyevent :设置其他事件的百分比(包括不常用的事件)
–pct-pinchzoom :设置捏合缩放事件的百分比(双指缩放)
–pct-permission :设置权限事件的百分比(模拟权限弹窗操作)
–pct-rotation :设置屏幕旋转事件的百分比(横竖屏切换)
异常信息调试参数–ignore-crashes:忽略应用崩溃,继续执行测试
–ignore-timeouts:忽略应用无响应(ANR),继续执行测试
–ignore-security-exceptions:忽略安全异常,继续执行测试
–kill-process-after-error:当发生错误时,终止测试并杀死进程
–monitor-native-crashes:监控并报告原生代码崩溃(C/C++ 代码)
其他参数–hprof:在 Monkey 测试过程中,每隔一段时间生成内存快照(.hprof 文件);在测试结束后生成堆转储文件(用于内存分析)
–wait-dbg:等待调试器附加后再开始测试
–bugreport:在测试过程中自动生成 Bugreport 日志
–periodic-bugreport:定期生成 Bugreport 日志
–dbg-no-events:初始化测试但不发送任何事件
–setup scriptfile:运行指定的脚本文件以设置测试环境
-f :运行指定的脚本文件
–port :设置网络端口号(用于远程控制)
其他配置关于日志分开输出保存将monkey执行的标准日志和错误日志分开保存:monkey [option] 1 > [路径1\monkey.log] 2 > [路径2\error.log]
Linux预留3个文件描述符:0 ---- 标准输入(stdin)1 ---- 标准输出(stdout)2 ---- 标准错误(stderr)关于黑白名单可以通过黑名单和白名单来限制测试范围。白名单用于指定需要测试的应用,而黑名单用于排除不需要测试的应用黑名单: --pkg-blacklist-file (执行黑名单以外的apk)白名单: --pkg-whitelist-file (只执行白名单内的apk);或者通过 -p 参数来指定应用
adb shell monkey -p com.happy.app1 -p com.study.app2 10000#对 com.happy.app1 和 com.study.app2 两个包进行测试;可以多次使用 -p 参数进行指定多个应用
adb shell monkey --pkg-whitelist-file /sdcard/whitelis.txt 10000#创建白名单whitelis.txt,里面内容为 需要进行测试的包名#如: com.happy.app1 com.study.app2执行monkey:会对 com.happy.app1 和 com.study.app2 两个包进行测试
adb shell monkey --pkg-blacklist-file /sdcard/blacklist.txt 10000#创建白名单blacklist.txt,里面内容为 不需要进行测试的包名#如: com.happy.app1 com.study.app2执行monkey:会对 com.happy.app1 和 com.study.app2 两个包以外的apk进行测试
结果分析错误信息类型如果日志中出现以下关键字,则大概率出现异常信息
ANR : 程序无响应或ANR问题 CRASH : 崩溃问题 Exception : 其他问题 Native Crash:原生代码崩溃 Security Exception:安全异常查找出错activity在两个switch之间查找是哪个activity出现了问题
复现问题手动复现:查看monkey里面出错的一些事件,手动模拟执行这些事件
保持相同的seed,可以模拟上一次的monkey执行过程————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/GH_echo/article/details/145455224