Monkey
一.什么是monkey
MonkeyAndroid中的一个命令行工具,可以运行在模拟器里或者实际设备中,它向系统发送伪随机的事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
Moneky测试是为了测试软件的稳定性、健壮性的一种有效方法。
二.Monkey的特征
测试的对象仅为应用程序包,有一定局限性
Moneky测试的时间是随机的不能进行自定义
可对monkey test 的对象、事件数量、类型、频率等进行设置。
三.Monkey使用环境的搭建
Monkey环境配置:
首先搭建monkey的运行环境
Windows下基于SDK
1.下载SDK for Windows 解压:android-sdk-windows D:盘根目录
2. 设置sdk下面tools的环境变量(具体参考百度,有详细说明)
jingyan.baidu/article/f71d603757965b1ab641d12a.html
(在下载Sdk前要下载JDK,关于JDK环境变量的配置请参考
jingyan.baidu/article/e9fb46e1b2b3347521f766c1.html)
SDK本身的安装是通过sdk manager这个程序下载相关的安装包来进行的,安装好后不会有图标显示在桌面上,因为其本身只是提供相关工具包的使用。
sdk manager下载过程中,因为谷歌在中国被封杀,而相关工具包的下载都是通过谷歌
下载的,所以大家会发现下载速度超慢并且下载经常中断,这里大家可以用迅雷直接在下载地址里下载:
在右下角有个log点击可看到如下:
Parse XML下即为该该地址文档里所包含的文件,用迅雷将Parse XML后的地址下载打开,再在里面到要用的文件名,将Parse XML地址最后面的部分改为文件名成为一个新链接后,将此链接放在迅雷里下载即可。
下载后的文件放到sdktools文件夹下并且记得重新打开sdk manager进行安装:
点击下载好的文件,然后点击左边的install即可。
安装好后即可建立模拟器,可参考:
jingyan.baidu/article/a681b0ded7e7573b1943465b.html
Eclipse里到AVD manager打开按照如上所述设置(如果遇到显示版本不匹配需要更新等问题,不要去更新,直接在下载稳定版本Eclipse IDE for Java EE Developers:
/downloads/
4.Monkey命令使用介绍
usage: monkey [-p ALLOWED_PACKAGE] [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
COUNT
2 Monkey命令参数介绍
1) 参数:-p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即APP)。指定包之后,Monkey将只运行系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP
*指定一个包:adb shell monkey –p com.android.music 100
说明:com.android.music为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)
*指定多个包:adb shell monkey –p com.android.music –p com.android.browser 100 *不指定包:adb shell monkey 100安卓intent用法
说明:monkey随机启动APP并发送100个随机事件。
*要查看设备中所有的包,在CMD窗口中执行以下命令:
>adb shell
#cd /data/data
#ls
2) 参数:-c
如果用此指定了一个或几个类别,Monkey将只允许系统启动被这些类别种的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity
Intent.category.LAUNCHERIntent.category.MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别。
3) 参数:-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下所示:
日志级别 Level 0
示例:adb shell monkey –p com.android.music –v 100
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
示例:adb shell monkey –p com.android.music –v –v 100
说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例:adb shell monkey –p com.android.music –v –v –v 100
说明:最详细的日志,包括了测试中选中/未选中的Activity信息
4) 参数:-s
用于指定伪随机生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
*示例:
Monkey测试1adb shell monkey –p com.android.music –s 10 100
Monkey测试2adb shell monkey –p com.android.music –s 10 100
两次测试的效果是相同的,因为模拟的用户序列(每次操作按照一定的先后顺序所组成的一
系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的
5) 参数:--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
*示例:adb shell monkey –p com.andorid.music –throttle 3000 100
6) 参数 –ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误)Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
*示例1adb shell monkey –p com.android.music –gnore-crashes 1000
测试过程中即使music程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2adb shell monkey –p com.android.music 1000
测试过程中,如果music程序崩溃,Monkey将会停止运行。
7) 参数:--ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
8) 参数:--ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等)Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
9) 参数:--kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错
误时,应用程序停止运行并保持当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)
10) 参数:--monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码
11) 参数:--pct-{+事件类别} {+事件类别百分比}
用于指定每种类别事件的数目百分比(Monkey事件序列中,该类事件数目占总事件数目的百分比)
参数:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。