Monkey入门
来源:互联网 发布:金芒网络电玩城 编辑:程序博客网 时间:2024/04/30 10:18
1,简介
Monkey是一个命令行工具,您可以在任何模拟器实例或设备上运行。它发送用户事件的伪随机流进系统,它作为对正在开发的应用软件压力测试。
当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件.Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
2,准备(前提:安卓环境已经搭建完成)
首先要有被测对象:机器以及应用程序,机器可以是模拟器也可以是真机,需要获得机器的root权限
1)查看设备号
cmd中
PS:此处就遇到一个问题,如果有多个机器时怎么明确对象?
选择机器,只需要adb -s device名称命令即可针对所选机器进行操作
2)查看要测试的应用程序包名
切换到data/data路径,然后列出所有应用,标记所要跑的应用包名即可
3,基本命令格式
基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。
$ adb shell monkey -p your.package.name -v 500
命令参数介绍
1) 参数:
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
* 指定一个包: adb shell monkey -p com.htc.Weather
说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。
* 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader
* 不指定包:adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。
2) 参数:
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
*日志级别 Level 0
示例 adb shell monkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
*日志级别 Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
说明
*日志级别 Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
说明
3)参数:
用于指定伪随机数生成器的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
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽
4) 参数:
用于指定用户操作(即事件)间的时延,单位是毫秒;
* 示例:adb shell monkey -p com.htc.Weather –throttle 3000 100
5) 参数:
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
* 示例1:adb shell monkey -p com.htc.Weather –ignore-crashes 1000
* 示例2:adb shell monkey -p com.htc.Weather 1000
6) 参数:
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
7) 参数:
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
8) 参数:
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
9) 参数:
用于指定是否监视并报告应用程序发生崩溃的本地代码。
10) 参数:
用于指定每种类别事件的数目百分比(在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
指定多个类型事件的百分比:
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
查看所有连接模拟器/设备的设施的清单.
查看
help
查看adb所支持的所有命令。.
version
查看adb的版本序列号.
Debug
logcat
将日志数据输出到屏幕上.
bugreport
查看bug的报告,如dumpsys
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
通过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实例的序列号.
查看
get-state
查看模拟器/设施的当前状态.
wait-for-device
如果设备不联机就不让执行,–也就是实例状态是
你可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其它命令的.
adb wait-for-device shell getprop
需要提醒的是这些命令在所有的系统启动启动起来之前是不会启动adb的 所以在所有的系统启动起来之前你也不能执行其它的命令.
adb wait-for-device install .apk
上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生.
Server
start-server
选择服务是否启动adb服务进程.
kill-server
终止adb服务进程.
Shell
shell
通过远程shell命令来控制模拟器/设备实例.
查看
shell
连接模拟器/设施执行shell命令,执行完毕后退出远程shell端l.
monkey基本命令:
类别
选项
说明
常规
–help
列出简单的用法。
-v
命令列的每一个
Activity的事件。
一般,一个v就足够了
事件
-s
伪随机数产生器的
–throttle
在事件之间插入固定延迟。通过这个选项可以减缓
–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。要指定多个包,需要使用多个
-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
-c
清楚屏幕上的日志.
-d
输出日志到屏幕上.
-f
指定输出日志信息的
-g
输出指定的日志缓冲区,输出后退出.
-n
设置日志的最大数目
-r
每
-s
设置默认的过滤级别为silent.
-v
设置日志输入格式,默认的是brief
优先级有下列集中,是按照从低到高顺利排列的:
- V
— Verbose (lowest priority) - D
— Debug - I
— Info - W
— Warning - E
— Error - F
— Fatal - S
— Silent (highest priority, on which nothing is ever printed)
</div>
- Monkey入门
- Monkey入门
- Monkey 测试一 Monkey 入门
- Monkey浅谈和入门
- Android Monkey测试入门
- Android Monkey测试入门
- Monkey测试系列:1. Monkey入门
- android 入门 Monkey 指令说明
- Monkey详解(入门篇)
- monkey如何执行入门基础
- Android Monkey测试入门-3-Monkey给指定app打压
- Android Monkey测试入门-4-Monkey高级参数之throttle
- Android Monkey测试入门-5-Monkey高级参数之seed
- Android Monkey测试入门-7-Monkey其他事件
- Android 入门压力测试之monkey
- monkey-安卓自动化测试入门
- Android环境搭建及Monkey入门
- monkey
- 虚拟机 ubuntu 16.04 修改成静态ip,以便外网访问
- vim命令图&linux命令
- 局域网发现设备代码实现:udp组播
- throw URISyntaxException when send email by ical4j
- bzoj 4292 枚举
- Monkey入门
- 主设备号和次设备号
- Linux命令(38):diff
- Android Studio Execution failed for task ':app:transformClassesWithInstantRunForDebug'
- hive创建表时ascii编码与unicode编码的对应
- Spring怎样更好的用JUnit进行单元测试
- angular指令ng-xxx
- 背包问题2
- 背着无人机去 5A 景区旅行,简直酷毙了