一, Monkey 简介
Android 系统自带 monkey 程序, 模拟用户触摸屏幕, 滑动 Trackball, 按键等操作来对设备上的程序进行压力测试, 检测程序多久的时间会发生异常.
Monkey 的使用是在产品稳定了, 没有特别多的 Bug 时候. 用 monkey 去测试待测应用的稳定性, 健壮性(是否会发生闪退, 崩溃), 手机出厂前的整机测试. Monkey 犹如其猴子的译名, 就是杂乱无章的乱点, 通过指定执行点击次数, 不断的点击安卓系统, 或者指定的 App, 给系统产生压力.
注意: 在使用 Monkey 之前, 需要利用 adb 将 PC 端与安卓设备连接.
二, monkey 常见命令
1.1, 调出说明手册
命令: adb shell monkey -help 或者 - h
这个命令可以查看 monkey 使用的说明, 如下:
1.2,monkey 基本命令格式: adb shell monkey {+ 命令参数} [执行事件次数]
例如: adb shell monkey -v 100
命令参数例如:-p,-v,-c 事件: 一个点击, 一个回退, 等就是一个事件
1.3, 命令参数
注意: 所有的参数都需要放在 monkey 和设置的事件次数之间, 参数的顺序可以调整; 若带了 - p ,-p 最好放在 monkey 之后.
例: adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v -s 300 500
1.3.1, 打印日志等级
-v: 用于指定反馈信息级别(信息级别就是日志的详细程度).
总共分 3 个级别;
一级:-v // 默认级别, 仅提供启动, 测试完成和最终结果等少量信息
二级:-v -v // 提供较为详细的日志, 包括每个发送到 Activity 的事件信息
三级:-v -v -v // 提供最详细的日志, 包括了测试中选中 / 未选中的 Activity 信息
例如: adb shell monkey -v -v -v 100
1.3.2, 指定测试 App
-p <App 包名> : 增加 App 的包名时, 可以只针对该 App 进行压力测试;
包名可同时添加多个, 同时对多个 App 测试;
不加 "-p <App 包名>" 时, 则对安卓系统进行测试.
例: 1)对一个 App 测试
adb shell monkey -p com.tecent mobileqq -v -v -v 300
2)对两个 App 进行测试
adb shell monkey -p com.lemon.lemon -p com.tecent mobileqq -v -v -v 300
1.3.3,seed 值
-s 用于指定随机数生成器的 seed 值;
如果前后两次使用 monkey 时 seed 值相同, 测两次 monkey 测试所产生的事件序列也相同. 用于问题重现;
seed 值相当于执行顺序, 可以是 300,400 等. 但是遇到问题, 需要再次使用 monkey 复现问题时, seed 必须相同. 可以直接运行上一次的命令.
格式: adb shell monkey -p <包名> -v -v -v-s <seed 值> [执行事件次数]
例: adb shell monkey -p com.tecent mobileqq -v -v -v -s 400 1000
[400:seed 的值, 1000: 执行事件次数] [复现同一问题时, 将此命令重新输一遍]
1.3.4, 操作时延
--throttle <毫秒> 用于指定用户操作 (即事件) 间的时延, 单位是毫秒.
例如: 时延为 1 秒, 在执行点击事件后等 1 秒在进行回退事件.
格式: adb shell monkey -v -v -v -p <包名> -s <seed 值> --throttle 1000 [执行事件次数]
例: adb shell monkey -v -v -v -p com.tecent mobileqq-s 300 --throttle 1000 500 [--throttle 1000 指时间间隔为一秒]
1.3.5, 忽略超时和崩溃
monkey 测试的过程中遇到 crash(崩溃)或者 timeout(超时)的情况时, 会停止测试. 如果想在遇到 crash 或者 timeout 时继续运行指令, 需要加 --ignore-crashes --ignore-timeouts 将 crash 和 timeout 忽略掉.
格式: adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts -v -v -v -s 300 500
三, 日志导出
Monkey 执行过程中产生异常时, 需要把日志导出, 将异常信息找出.
1, 直接将日志打印至 PC 端
命令: adb shell monkey -p <包名> -v -v -v [执行事件次数]> <PC 端存放目录>
可以在执行 monkey 过程中, 直接将日志存放至 PC 端.
例: adb shell monkey -p <包名> -v -v -v 200 D:\log.txt
2, 执行完 monkey 之后导出日志
命令: adb logcat -v time> D:\ log.txt 拉取的日志自带时间
3, 日志定位
当日志生成后, 我们需要进入日志当中查看是否有 App 崩溃记录或者无响应记录.
查找关键字:
A, 崩溃记录查找 "CRASH";
B, 无响应记录查找 "ANR";
C, 内存泄露问题搜索 "GC"(需进一步分析);
D, 异常问题搜索 "Exception";
来源: https://www.cnblogs.com/zdx20/p/12630971.html