Monkey入门

1,简介     

Monkey是一个命令行工具,您可以在任何模拟器实例或设备上运行。它发送用户事件的伪随机流进系统,它作为对正在开发的应用软件压力测试。

Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件.Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

2,准备(前提:安卓环境已经搭建完成)

首先要有被测对象:机器以及应用程序,机器可以是模拟器也可以是真机,需要获得机器的root权限

1)查看设备号

cmd中 adb devices可以查看到有设备连接到PC

雾山的学习笔记--Monkey入门

PS:此处就遇到一个问题,如果有多个机器时怎么明确对象?

雾山的学习笔记--Monkey入门
选择机器,只需要adb -s device名称命令即可针对所选机器进行操作

2)查看要测试的应用程序包名

切换到data/data路径,然后列出所有应用,标记所要跑的应用包名即可

雾山的学习笔记--Monkey入门

3,基本命令格式

基本语法如下:

  $ adb shell monkey [options]

  如果不指定optionsMonkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。

    下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送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测试1adb shell monkey -p com.htc.Weather –s 10 100
Monkey测试2adb 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依然会发送事件,直到事件计数完成。

* 示例1adb shell monkey -p com.htc.Weather --ignore-crashes 1000
  测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

* 示例2adb shell monkey -p com.htc.Weather 1000
  测试过程中,如果Weather程序崩溃,Monkey将会停止运行。


6) 参数:  --ignore-timeouts
用于指定当应用程序发生ANRApplication 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 +百分比}
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如HomeBackStart CallEnd 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进程.例如: 
adb forward tcp:8000 jdwp:472 
jdb -attach localhost:8000

Data

install 

安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径).

 

pull  

将指定的文件从模拟器/设施的拷贝到电脑上.

 

push  

将指定的文件从电脑上拷贝到模拟器/设备中.

 

Ports and Networking

forward  

用本地指定的端口通过socket方法远程连接模拟器/设施

端口需要描述下列信息:

  • tcp:
  • local:
  • dev:
  • jdwp:

ppp  [parm]...

通过USB运行ppp

  •  — the tty for PPP stream. For exampledev:/dev/omap_csmi_ttyl.
  • [parm]... &mdash zero or more PPP/PPPD options, such asdefaultroute , local ,notty , etc.

需要提醒你的不能自动启动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命令,执行完毕后退出远程shelll.

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

调整系统按键事件的百分比(这些按键通常被保留,由系统使用,如HomeBackStart CallEnd Call及音量控制键)

--pct-appswitch

调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。

--pct-anyevent

调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

约束限制

-p

如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个连络人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。

-c

如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的ActivityIntent.CATEGORY_LAUNCHERIntent.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 .

优先级有下列集中,是按照从低到高顺利排列的:

  1. V — Verbose (lowest priority)
  2. D — Debug
  3. I — Info
  4. W — Warning
  5. E — Error
  6. F — Fatal
  7. S — Silent (highest priority, on which nothing is ever printed) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章