Android Monkey Test

来源:互联网 发布:网络加速器 安卓 编辑:程序博客网 时间:2024/05/17 21:06

1. Monkey测试简介
Monkey是Android中的一个命令行工具,可以运行在模拟器或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试时一种为了测试软件的稳定性、健壮性的快速有效的方法。

2. Monkey特征
测试的对象仅为应用程序包,有一定的局限性。
Monkey测试使用的事件流数据流是随机的,不能进行自定义。
可对MonkeyTest的对象,事件数量、类型、频率等进行设置。

3. Monkey基本用法
可以通过开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在模拟器/设备环境中,所以必须用其环境中的shell来进行启动。可以通过在每条命令前加上adb shell来达到目的,也可以进入shell后直接输入Monkey命令。
基本语法如下:
adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装目标环境中的全部包。
下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
adb shell monkey -p package.name -v 500

4. Monkey参数
参数:-p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。
指定包之后,Monkey将只允许系统启动指定的App。如果不指定包,Monkey将允许系统启动设备中的所有App。
指定一个包:adb shell monkey -p package.name 100
说明:package.name为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。
指定多个包:adb shell monkey -p package1.name -p package2.name -p package3.name 100
不指定包:adb shell monkey 100
说明:Monkey 随机启动App并发送100个随机事件。
要查看设备中所有的包,在CMD窗口中执行以下命令:
adb shell #cd data/data #ls

参数:-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分为3个级别,分别对应的参数如下表所示:
日志级别Level 0
示例:adb shell monkey -p package.name -v 100
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息。
日志级别Level 1
示例:adb shell monkey -p package.name -v -v 100
说明:提供较为详细的日志,包括每个发送到Activity的事件信息。
日志级别Level 2
示例:adb shell monkey -p package.name -v -v -v 100
参数:-s
用于指定伪随机数生成器的seed值,如果seed相同,则两次monkey测试产生的事件序列也是相同的。
示例:
Monkey测试1:adb shell monkey -p package.name -s 10 100
Monkey测试1:adb shell monkey -p package.name -s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列是伪随机的。

参数:-throttle<毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
示例:adb shell monkey -p package.name -throttle 3000 100
参数:-ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例1:adb shell monkey -p package.name -ignore-crashes 1000
测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2:adb shell monkey -p package.name 1000
测试过程中,如果程序崩溃,Monkey将会停止运行。

5. 举例
不忽略异常
adb shell monkey -p package.name -throttle 500 -s 600 -v -v -v 80000 >C:\log.txt
指令的含义:测试应用程序,事件间的延时为500毫秒,种子seed的值为600,三个v表示输出的Monkey.log级别为最高,即输出的最详尽的Monkey.log,测试的事件次数为80000次,Log保存在C盘的log.txt文件里
忽略异常
adb shell monkey -p package.name -throttle 500 -s 600 -ignore-crashes -ignore-timeouts -ignore-security-exceptions -ignore-native-crashes -monitor-native-crashes -v -v -v 80000 >C:\log.txt

6. Monkey测试的停止条件
如果先顶了Monkey运行在一个或几个特定的包上,那么它会检测试图转到它包的操作,并对其进行阻止;
如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错;
如果应用程序产生了应用程序不响应(ANR:application not responding)的错误,Monkey将会停止并报错。

1 0