您的位置:首页 > 移动开发 > Android开发

Android Monkey Test

2017-04-20 16:05 267 查看
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将会停止并报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  monkey测试