Monkey是安卓中的一个命令行工具,可以运行在模拟器里或者实际设备中。

它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行测试,是一种为了测试软件的稳定性、健壮性的快速有效的方法。


Monkey的运行时机:产品功能稳定之后


Monkey的特征:

  1. 测试的对象仅为应用程序包,有一定的局限性

  2. 测试时使用的事件流数据流是随机的,不能进行自定义

  3. 可对MonkeyTest的对象、事件数量、类型、频率等进行设置


运行条件:基于搭建好的安卓测试开发环境


使用步骤:

1.启动模拟器or连接真机,adb devices验证

2.确定你要测试应用的PackageName

3.使用Monkey发一条测试命令


确定PackageName是关键

可以直接问开发,


或者用ui automator vierer查看,

Monkey_Monkey


Monkey_Monkey_02



或者自己找(极度不推荐)


自己找的方法如下:

在PC上的命令行输入 adb logcat *:I > d:/log.txt,回车

在安卓设备上点击一下你要测试的应用,然后就无需其他操作了

Ctrl C 停掉(为了避免过多的新信息)

打开d:/log.txt

从文件最下面开始找以下格式的信息

I/ActivityManager(数字):Displayed 包名/类名:+数字ms

如以下,包名为:com.android.calculator2

I/ActivityManager(  363): Displayed com.android.calculator2/.Calculator: +2s312ms


使用Monkey发一条测试命令

adb shell monkey -p com.android.calculator2 -v 50


Monkey基础命令语法

adb shell monkey[options]


adb shell monkey -p 包名 -v 500 > d:/log1.txt

-v:(打印的日志)显示默认程度的信息

500:设定事件数


进阶用法:

adb shell monkey -p 包名 -v -v --pct-touch 50 --pct-trackball 30 --ignore-crashes --ignore-timeouts -s 1234  --throttle 600 500 > d:/log1.txt

指定monkey报告等级,一个 -v增加一个级别,默认缺省值是0级,
-v, 0(缺省值),除启动提示、测试完成和最终结果之外,提供较少信息
-v -v, 1,提供较为详细的测试信息,如:逐个发送到Activity的事件
-v -v -v, 2,提供更加详细的设置信息,如:测试中被选中的或未被选中的Activity
--pct-touch:设置在整个过程中点击操作所占的百分比
--pct-trackball:设置滚轮在所有操作中的百分比
--ignore-crashes
--ignore-timeouts
--ignore-security-exceptions:当应用程序发生许可错误时(如证书许可,网络许可等)
--ignore-native-crashes
--monitor-native-crashes:监视并报告应用程序发生崩溃的本地代码
-s:seed值
--throttle 每个操作间隔600ms


Monkey命令结果分析要点:

  1. 找monkey里面的那个出错的地方(Error,Exception,Crash)

  2. 查看monkey里面出错前的一些事件动作,并手动执行该动作

  3. 若以上步骤还不能找出,可以再执行一遍,注意seed值要一样(-s seed值)

  4. 注意第一个switch以及其他异常信息


Monkey测试的目的

ANR问题:在日志中搜索ANR(Applicaton Not Responding)

崩溃问题:在日志中搜索Error,Exception,Crash


monkey案例分析:

**System appears to have crashed at event 48 of 500 using seed 0

-----说明系统在500个操作的第48个操作出现了异常,用的种子是0。

如果想使用相同的操作序列再现这个异常,就可以使用如下命令:

abd shell monkey -p 包名 -s 0 500


测试中用的命令:

adb shell monkey -p 包名 -v -v -v --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes --throttle 500 1000 > d:/log11.txt