- Monkey工具的使用
- Monkey基本参数设置
- 调试参数
- Monkey黑白名单
- 寻找程序异常报错
- Monkey测试策略介绍
- 综合应用
- 常见问题
官网:https://developer.android.google.cn/studio/test/monkey?hl=zh_cn
是Android系统自带的命令行工具,由java语言编写,它可以向被测应用发送用户事件(比如点击、手势、触摸等),对软件进行稳定性与压力测试。
Monkey.jar程序是由一个名为“Monkey”的shell脚本来启动执行。由adb shell命令启动。
adb shell Monkey {+命令参数}
Monkey基本参数设置-v 只打印启动信息,测试完成信息和最终结果信息 -v -v 提供有关测试在运行时的更多详细信息,例如发送到您的Activity的各个事件 -v -v -v 打印最详细的信息,例如已选择或未选择用于测试的Activity
adb shell
##进入shell
ls |grep monkey
## 浏览文件
cat monkey
##adb shell Monkey {命令参数}
如果系统崩溃或收到任何未处理的异常,Monkey会报错
adb logcat|findstr "Displayed " net.onest.portablecheckoutdevice/net.onest.ui.CheckoutActivity adb shell monkey -p net.onest.portablecheckoutdevice -v 500 > d:/demo/monkey.log monkey -p net.onest.portablecheckoutdevice -v 500 >/mnt/sdcard/m20210930.txt ls |grep 2021
标准流和错误流分开 重点关注错误流信息。
monkey -p net.onest.portablecheckoutdevice -v 500 1>/mnt/sdcard/1scard.txt 2 >/mnt/sdcard/errorcard.txt
adb shell monkey --help adb logcat |findstr "Displayed " ##得到包名com.example.myapplication0922/.MainActivity: ## 多个选项就多个-p adb shell monkey -p com.example.myapplication0922/.MainActivity -pcom.example.myapplication0922/.MainActivity
## -s 随机数种子 种子数 adb shell monkey -s 1234 -p net.onest.portablecheckoutdevice -v 500 ## 100毫秒 停顿的时间 adb shell monkey -s 1234 --throttle 100 -p net.onest.portablecheckoutdevice -v 500 ##时间之间加入随机延迟 ##--randomize--throttle adb shell monkey -p net.onest.portablecheckoutdevice -s 1234 --randomize-throttle 100 -v 500 ## --pct-touch调试参数触摸屏幕时间 adb shell monkey -p net.onest.portablecheckoutdevice -s 1234 --randomize-throttle 100 --pct-touch 100 -v 500 ## 对于一部分倾向于滑动与长按的app 可以调用 这一部分 touch命令
常见错误类型:
ANR:5秒内没有响应
Crash: 异常停止、异常退出。
忽略参数
##--ignore-crasges 忽略异常 adb shell monkey -p net.onest.portablecheckoutdevice --ignore-crasges -v 500 ##--ignore- ## ## --ignore-native-crashes 忽略android底层C/C++崩溃Monkey黑白名单
黑名单:不测试的应用
白名单:只测试包含在白名单中的应用。
## 白名单先上传到设备 adb shell pm list packages > e:/demo/list.txt adb -s 127.0.0.1:60021 shell pm list packages > d:demo/list2021.txt adb push d:demo/list2021.txt /data/local/temp
## 白名单上的应用执行100次 adb shell monkey --pkg--whitelist-file /data/local/tmp/list2021.txt -v 100 ##-v -v -v 打印最详细的信息。 adb shell monkey -p com.example.myapplication0922 --ignore-crashes -v -v -v 500寻找程序异常报错
在文本里面直接搜索“Exception”
运行次数越多 越容易出现内存溢出异常。
adb shell monkey -p net.onest.portablecheckoutdevice -s 1234 --randomize-throttle 100 --pct-touch 100 -s ignore-timeouts -v -v -v 500 > d:/demo/monkey0930011.txtxMonkey测试策略介绍
策略例子1:整机测试,而不测试拨号应用,忽略所有错误,次数100万次 adb shell monkey --ignore-crashes --ignore-timeouts --pkg-blacklist-file /data/local/tmp/blacklist.txt -v -v 1000000 策略例子2:测试计算器30万次,随机种子为100,随机延迟0-1秒,忽略所有错误 adb shell monkey -p com.android.calculator2 -s 100 --throttle 1000 --randomize-throttle --ignore-crashes --ignore-timeouts -v -v 300000 策略例子3:测试计算器,触摸事件30%,其他按键50%,错误停止,延时200 adb shell monkey -p com.android.calculator2 --throttle 200 --pct-touch 30 --pct-anyevent 50 -v -v 100000 策略例子4:对计算器进行旋转压力测试,事件延时2秒,10万次 adb shell monkey -p com.android.calculator2 --pct-rotation 100 --throttle 2000 100000 策略例子5:仅对整机的应用开启测试,事件延时5秒,10万次 adb shell monkey --pct-appswitch 100 --throttle 5000 100000综合应用
命令的组合:
选取策略+随机种子策略+事件策略+异常策略+延时策略+事件数量
应用选取策略: 单应用 多应用组合 黑白名单组合
异常策略: 1.跑完,全部异常忽略 2.专门测试某个异常 3.出现异常马上终止
应用选取策略: 1、 单应用 2、 多应用组合 3、 黑白名单组合 4、 整机测试 随机种子策略: 1、 固定种子,从小到极大的种子 2、 随机种子 事件策略: 1、 用户故事策略:依据常见的用户场景划分各事件百分比 2、 应用特性策略:依据应用策略对Monkey各事件进行划分百分比 3、 专项测试策略:对某个事件提高到很高的百分比,对应用进行专项测试常见问题
1.连接真机不稳定:检查是否接触不良
2.Monkey执行过程中有时候会触碰到通知栏等其他地方, 如何避免? 官网下载Monkey源代码,进行二次开发。 Monkey命令的使用需要组合多种参数方式来实现覆盖
应用特性策略:依据应用策略对Monkey各事件进行划分百分比
3、 专项测试策略:对某个事件提高到很高的百分比,对应用进行专项测试



