赞
踩
Monkey 测试一 Monkey 入门
android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个。总的来说,monkey主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性,应用起来也比较简单,记住那几个命令就行了。monkeyrunner呢,相比之下会强大一些,它主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。
SDK的配置
在系统中增加环境变量ANDROID_SDK_HOME,设置为SDK的安装位置.
新建一个Path变量,变量值方框里输入;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;
设置完毕后,在cmd中输入adb,能够出来提示,就说明配置正确了。
添加AVD
在eclipse中的Android Virtual Device Manager中,新建一个设备,名字命名为 xxx。 则使用
emulator @xxx
或者
emulator -avd xxx
均可以启动虚拟设备。
使用mokey进行可靠性测试
adb shell monkey [options] event-count
adb shell monkey -p your.package.name -v -v -v 1000 > monkey.text
-v为verbose的缩写,就是详细输出事件的等级,
真实使用例子:
adb shell monkey -p com.tmall.wireless --throttle 500 -v -v -v 1000000 > d:\monkey.log & adb logcat -v time >d:\logcat.log
monkey测试实例
通过这个实例,我们能理解Monkey测试的步骤以及如何知道哪些应用程序能够用Monkey进行测试。
Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):
1、 通过eclipse启动一个Android的emulator,或者使用 emulator xxx命令启动模拟器。
如果直接使用emulator命令启动,需要安装apk包如下
(eclipse中在项目视图的项目名称上选择run as android project自动装好了)
>adb install apkfile #先CD到apk所在的目录
安装apk.
如果需要覆盖安装,使用 -r命令
>adb install -r apkfile
附注,删除:
方法一
>adb uninstall com.xxx.xxx
方法二
>adb shell
#cd data/app
rm ***.app
方法三
模拟器的setting->applications->manage applications->xxx程序->uninstall
2、 在命令行中输入:adb devices查看设备连接情况
启动设备前
>adb devices
List of devices attached
emulator-5554 offline
启动设备后:
>adb devices
List of devices attached
emulator-5554 device
3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
>adb shell
4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
#ls data/data
5、 以com.android.calculator2作为对象进行MonkeyTest
#monkey -p com.android.calculator2 -v 500
其中-p表示对象包 –v 表示事件数量
运行过程中,Emulator中的应用程序在不断地切换画面。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
Monkey Test执行过程中在下列三种情况下会自动停止:
1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
3、如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。
Monkey测试注意事项
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。但是要求测试的起始位置相同,比如起始位置为桌面或者为某一个Activity的某一个状态
Monkey命令参数
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个随机事件。
要查看设备中所有的包,在CMD窗口中执行以下命令: >adb shell
#cd data/data
#ls
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
用于指定用户操作(即事件)间的时延,单位是毫秒;
示例:
adb shell monkey -p com.htc.Weather –throttle 3000 100
5) 参数: --ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例:
adb shell monkey -p com.htc.Weather --ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
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事件)
--pct-motion 动作事件(由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
--pct-trackball 轨迹事件(由一个或几个随机的移动组成,有时还伴随有点击)
--pct-majornav 调整“主要”导航事件的百分比(导航事件通常引发图形界面中的动作,如:中间按键、回退按键、菜单按键)
--pct-syskeys 整“系统”按键事件的百分比(通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
--pct-appswitch 调整启动Activity的百分比
--pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等
注意:各事件类型的百分比总数不能超过100%
adb shell monkey -p com.htc.Weather --pct-anyevent 50 --pct-appswitch 50 1000
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。