什么是 Monkey
Monkey是Android中用来做测试的工具,它可以利用 adb 启动,然后在模拟器里或实际设备中运行。
Monkey有什么用
它可以向android系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行自动化压力测试,主要测试应用是否会出现 Crash 或者 ANR 的问题,可以有效地校验一款软件的稳定性和健壮性。
Monkey 具体选项
Monkey包含很多选项,但主要分为以下四个类别:
1、 基本配置选项,如设置要尝试的事件数量。
2、 操作上的限制,比如将测试限制在一个包中。
3、 事件类型和频率。
4、 调试选项。
基本语法
$ adb shell monkey [options] <event-count>
Monkey的基本用法
让我们先跑起一个最简单的 monkey,具体做法:
1、 下载安装Android SDK 并配置好 adb 环境变量(自行 google)
2、 把手机或者模拟器链接到电脑
3、 在命令好或者 android studio 的Terminal中输入以下命令行:
adb shell monkey 1000
经过以上步骤,你会发现你的手机或者模拟器会自动运行一顿操作,那就是 Monkey 触发的随机事件流。
常用命令介绍
1、 -p (指定 Monkey 触发事件流所在的应用)
指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。
示例:
adb shell monkey -p com.android.calculator2 1000
2、-v 用于日志输出级别(就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
// Level 0:默认值,仅提供启动提示、测试完成和最终结果等少量信息
adb shell monkey -p com.android.calculator2 -v 1000
// Level 1:提供较为详细的日志,包括每个发送到Activity的事件信息
adb shell monkey -p com.android.calculator2 -v -v 1000
//Level 2:最详细的日志,包括了测试中选中/未选中的Activity信息
adb shell monkey -p com.android.calculator2 -v -v -v 1000
3、 -s(伪随机数发生器的种子),如果用相同的种子值重新运行Monkey,它将生成相同的事件序列。示例:
adb shell monkey -p com.android.calculator2 -s 10 1000
4、 --pct-touch <percent> 指定触摸事件占总事件的比例,如果想Monkey 产生的所有事件都是触摸事件,可以指定 percent 为100%,示例:
adb shell monkey -p com.android.calculator2 --pct-touch 100 100
可以利用-v 看事件占用的比例
adb shell monkey -v -p com.android.calculator2 --pct-touch 100 100
可以看到下图产生的触摸事件占比为100%
4、--ignore-crashes (忽略 Crash), 一般当应用程序崩溃或遇到任何类型的未处理的异常时,Monkey将停止产生事件。 如果你指定这个选项,Monkey将继续发送事件到系统,直到计数完成。示例:
adb shell monkey -p com.android.calculator2 --ignore-crashes 100
5、--ignore-timeouts(忽略 ANR),一般当应用程序遇到任何类型的超时错误(如弹出“应用程序未响应”对话框)时,Monkey将停止。 如果你指定这个选项,Monkey将继续发送事件到系统,直到计数完成。示例:
adb shell monkey -p com.android.calculator2 --ignore-timeouts 100
更多选项
以上是我测试常用的选项,想看更多选项,请参考https://developer.android.com/studio/test/monkey.html