标签:
1,简介
Monkey是一个命令行工具,您可以在任何模拟器实例或设备上运行。它发送用户事件的伪随机流进系统,它作为对正在开发的应用软件压力测试。
当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件.Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
2,准备(前提:安卓环境已经搭建完成)
首先要有被测对象:机器以及应用程序,机器可以是模拟器也可以是真机,需要获得机器的root权限
1)查看设备号
cmd中 adb devices可以查看到有设备连接到PC端
PS:此处就遇到一个问题,如果有多个机器时怎么明确对象?
选择机器,只需要adb -s device名称命令即可针对所选机器进行操作
2)查看要测试的应用程序包名
切换到data/data路径,然后列出所有应用,标记所要跑的应用包名即可
3,基本命令格式
基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。
下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
(其中程序包名称可以在串口终端这句命令获得:ls data/data 显示所有程序包或者 >adb shell #cd data/data #ls)
发送500个随机事件,相隔3秒
$ adb shell monkey -p your.package.name --throttle 3000 500
命令参数介绍
1) 参数: -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
* 指定一个包: adb shell monkey -p com.htc.Weather 100
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。
* 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100
* 不指定包:adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。
2) 参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
*日志级别 Level 0
示例 adb shell monkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
*日志级别 Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息
*日志级别 Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息
3)参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
* 示例:
Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey测试2:adb shell monkey -p com.htc.Weather –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽 然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。
4) 参数: --throttle <</span>毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
* 示例:adb shell monkey -p com.htc.Weather --throttle 3000 100
5) 参数: --ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
* 示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
* 示例2:adb shell monkey -p com.htc.Weather 1000
测试过程中,如果Weather程序崩溃,Monkey将会停止运行。
6) 参数: --ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
7) 参数: --ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
8) 参数: --kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
9) 参数: --monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
10) 参数: --pct-{+事件类别} {+事件类别百分比}
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
参数:
使用说明:
示例:
--pct-touch {+百分比}
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
adb shell monkey -p com.htc.Weather --pct-touch 10 1000
--pct-motion {+百分比}
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adb shell monkey -p com.htc.Weather --pct-motion 20 1000
--pct-trackball {+百分比}
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
adb shell monkey -p com.htc.Weather --pct-trackball 30 1000
--pct-nav {+百分比}
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
adb shell monkey -p com.htc.Weather --pct-nav 40 1000
--pct-majornav {+百分比}
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
adb shell monkey -p com.htc.Weather --pct-majornav 50 1000
--pct-syskeys {+百分比}
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
adb shell monkey -p com.htc.Weather --pct-syskeys 60 1000
--pct-appswitch {+百分比}
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
adb shell monkey -p com.htc.Weather --pct-appswitch 70 1000
--pct-anyevent {+百分比}
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等
adb shell monkey -p com.htc.Weather --pct -anyevent 100 1000
指定多个类型事件的百分比:
adb shell monkey -p com.htc.Weather --pct-anyevent 50 --pct-appswitch 50 1000
注意:各事件类型的百分比总数要为100%
4,举例
adb -s U956 shell monkey -p xxxx --throttle 500 --pct-touch 30 --pct-motion 30 --pct-nav 0 --pct-trackball 0 --pct-majornav 20 --pct-appswitch 10 --pct-anyevent 10 -s 0227 --ignore-crashes --ignore- timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 250000> d:\monkeytest.log
这是将monkey的log导入D盘,以便查看分析。
附录:
adb基本命令:
Category |
Command |
Description |
Comments |
Options |
-d |
仅仅通过USB接口来管理abd. |
如果不只是用USB接口来管理则返回错误. |
-e |
仅仅通过模拟器实例来管理adb. |
如果不是仅仅通过模拟器实例管理则返回错误. |
|
-s |
通过模拟器/设备的允许的命令号码来发送命令来管理adb (比如: "emulator-5556"). |
如果没有指定号码,则会报错. |
|
General |
devices |
查看所有连接模拟器/设备的设施的清单. |
查看 Querying for Emulator/Device Instances获取更多相关信息. |
help |
查看adb所支持的所有命令。. |
|
|
version |
查看adb的版本序列号. |
|
|
Debug |
logcat [ |
将日志数据输出到屏幕上. |
|
bugreport |
查看bug的报告,如dumpsys ,dumpstate ,和logcat 信息。 |
|
|
jdwp |
查看指定的设施的可用的JDWP信息. |
可以用 forward jdwp:端口映射信息来连接指定的JDWP进程.例如: |
|
Data |
install |
安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径). |
|
pull |
将指定的文件从模拟器/设施的拷贝到电脑上. |
|
|
push |
将指定的文件从电脑上拷贝到模拟器/设备中. |
|
|
Ports and Networking |
forward |
用本地指定的端口通过socket方法远程连接模拟器/设施 |
端口需要描述下列信息:
|
ppp [parm]... |
通过USB运行ppp:
需要提醒你的不能自动启动PDP连接. |
|
|
Scripting |
get-serialno |
查看adb实例的序列号. |
查看 Querying for Emulator/Device Instances可以获得更多信息. |
get-state |
查看模拟器/设施的当前状态. |
||
wait-for-device |
如果设备不联机就不让执行,--也就是实例状态是 device 时. |
你可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其它命令的. 示例如下: adb wait-for-device shell getprop 需要提醒的是这些命令在所有的系统启动启动起来之前是不会启动adb的 所以在所有的系统启动起来之前你也不能执行其它的命令. 比如:运用install 的时候就需要Android包,这些包只有系统完全启动。例如: adb wait-for-device install .apk 上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生. |
|
Server |
start-server |
选择服务是否启动adb服务进程. |
|
kill-server |
终止adb服务进程. |
|
|
Shell |
shell |
通过远程shell命令来控制模拟器/设备实例. |
查看 获取更多信息 for more information. |
shell [] |
连接模拟器/设施执行shell命令,执行完毕后退出远程shell端l. |
monkey基本命令:
类别 |
选项 |
说明 |
常规 |
--help |
列出简单的用法。 |
-v |
命令列的每一个 -v 将增加反馈信息的级别。 Level 0( 缺省值 ) 除启动提示、测试完成和最终结果之外,提供较少信息。 Level 1 提供较为详细的测试信息,如逐个发送到 Activity的事件。 Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的 Activity 。 一般,一个v就足够了 |
|
事件 |
-s |
伪随机数产生器的 seed 值。如果用相同的 seed 值再次运行 Monkey,它将生成相同的事件序列。 |
--throttle |
在事件之间插入固定延迟。通过这个选项可以减缓 Monkey 的执行速度。如果不指定该选项, Monkey 将不会被延迟,事件将尽可能快地被产成。 |
|
--pct-touch |
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。 |
|
--pct-motion |
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。 |
|
--pct-trackball |
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。 |
|
--pct-nav |
调整“基本”导航事件的百分比(导航事件由来自方向输入装置的up/down/left/right组成)。 |
|
--pct-majornav |
调整“主要”导航事件的百分比(这些导航事件通常引发图形接口中的动作,如:5-way键盘的中间按键、回退按键、菜单按键) |
|
--pct-syskeys |
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。 |
|
--pct-appswitch |
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。 |
|
--pct-anyevent |
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。 |
|
约束限制 |
-p |
如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个连络人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。 |
-c |
如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity:Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。 |
|
调试 |
--dbg-no-events |
设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。 |
--hprof |
设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大檔(~5Mb),所以要小心使用它。 |
|
--ignore-crashes |
通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。 |
|
--ignore-timeouts |
通常,当应用程序发生任何逾时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。 |
|
--ignore-security-exceptions |
通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。 |
|
--kill-process-after-error |
通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。 |
|
--monitor-native-crashes |
监视并报告Android系统中本地代码的崩溃事件。如果设置了--kill-process-after-error,系统将停止运行。 |
|
--wait-dbg |
停止执行中的Monkey,直到有调试器和它相连接。 |
logcat基本命令:
Option |
Description |
-b |
加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers. |
-c |
清楚屏幕上的日志. |
-d |
输出日志到屏幕上. |
-f |
指定输出日志信息的 ,默认是stdout . |
-g |
输出指定的日志缓冲区,输出后退出. |
-n |
设置日志的最大数目 .,默认值是4,需要和 -r 选项一起使用。 |
-r |
每 时输出日志,默认值为16,需要和-f 选项一起使用. |
-s |
设置默认的过滤级别为silent. |
-v |
设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output Format . |
优先级有下列集中,是按照从低到高顺利排列的:
标签:
原文地址:http://www.cnblogs.com/ziyaboke/p/4688850.html