Monkey 测试一 Monkey 入门

来源:互联网 发布:南充广电网络客服电话 编辑:程序博客网 时间:2024/05/16 06:05

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-countadb 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程序->uninstall2、 在命令行中输入:adb devices查看设备连接情况启动设备前>adb devicesList of devices attachedemulator-5554   offline启动设备后:>adb devicesList of devices attachedemulator-5554   device3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面>adb shell4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面#ls data/data5、 以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
0 0
原创粉丝点击