Monkey测试简介

 

一.Monkey概述:
      Monkey是Android中的一个命令行工具,它其实是继承了adb shell中的一段的shell指令,其测试的原理就是利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

 

   Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

二.Monkey的特征:
1、 测试的对象仅为应用程序包,有一定的局限性。
2、 Monkey测试使用的事件流数据流是随机的,不能进行自定义。
3、 可对Monkey测试的对象,事件数量,类型,频率等进行设置。
三.monkeyrunner同monkey的区别:
1.monkeyrunner:
      monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过 monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图 片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当 然也可以将其用于其它目的。
四.monkeyrunner同monkey的区别:
      Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流,我们不能控制触摸或按钮等事件。  
     Monkeyrunner工具则是在工作站上通过API 定义的特定命令和事件控制设备或模拟器,它支持,自己编写插件,控制事件,随时截图。可以基于Python模块和程序开发一整套系统,以此来控制Android设备,monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性等等.

五.Monkey基本命令
基本语法如下:
     adb shell monkey [options]
     如果不指定options,Monkey将以无反馈模式启动,并把事件任  意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机   
     事件:  $ adb shell monkey -p your.package.name -v 500基本命令如下:
 5.1、常规
1、-help
       作用:列出简单的用法。
       例:adb shell monkey –help(或者adb shell monkey )
 

2 、 -v:
      作用:用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个
       级别:level 0-2
       例
        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信息

5.2、事件
1 、 -s <seed>:
       作用:用于指定伪随机数生成器的seed值,如果seed相同,则两次
        Monkey测试所产生的事件序列也相同的。
        例 1:
              1:adb shell monkey -p com.htc.Weather –s 12345 100
              2:adb shell monkey -p com.htc.Weather –s 12345 100
        两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一  定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列 虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次 测试 产生的随机操作序列是完全相同的,所以这个操作序列伪随机的.

2 、 -throttle <毫秒>:用于指定用户操作(即事件)间的时延,单位是毫秒,
      如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。
      例: adb shell monkey -p com.htc.Weather –throttle 3000 100
3 、 --pct-{+事件类别} {+事件类别百分比}用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)所有事件的百分比加起来是100%。以下为几种常见事件:
     a 、 --pct-touch {+百分比}调整触摸事件的百分比(触摸事件是一个down-up 事件,它发生在屏幕上的某单一位置,即在屏幕某处按下并抬起的操作)
       如下所示:

例:adb shell monkey --pct-touch 100 -v 10

b 、 --pct-motion {+百分比}调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
        例:adb shell monkey --pct-motion 100 -v 10



c 、 --pct-trackball {+百分比}调整轨迹事件的百分比(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)
         例:adb shell monkey --pct-trackball 100 -v 10

 

注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数

d 、 --pct-nav {+百分比}调整“基本”导航事件的百分比
        作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触
        发的事件组成)
        e 、 --pct-majornav {+百分比}
         作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,
          如5-way键盘的中间键,回退按键、菜单按键)
         f 、 --pct-syskeys {+百分比}
         作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start
         Call、End   Call.音量调节)
         g、--pct-appswitch {+百分比}
        作用:调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个
          startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法)
         h 、 --pct-anyevent {+百分比}
       作用::调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不
        常用的按钮等)

5.3约束
1 、-p:
   作用:用于约束限制,用此参数指定一个或多个包(Package,即App)。指定
  包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许
  系统启动设备中的所有APP。
   举例
    指定一个包: adb shell monkey -p com.android.calendar -v 20
   说明: com.android.calendar为包名,20是事件计数(即让Monkey程序模拟20次随机
                用户事件)。

    指定多个包:adb shell monkey -p com.android.calendar -v 20

              不指定包:adb shell monkey 100
说明:Monkey随机启动APP并发送100个随机事件。

2 、-c:
        如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY,Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别。

5.4、调试
1 、 --ignore-crashes:用于指定当应用程序崩溃时(Force &Close错
误),Monkey是否停止运行。如果使用此参数,即使应用程序
崩溃,Monkey依然会发送事件,直到事件计数完成。
举例
          示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000            说明:测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

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

2 、 --ignore-timeouts:用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

3 、 --ignore-security-exceptions:用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
4 、 --kill-process-after-error:用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

5 、 --monitor-native-crashes:用于指定是否监视并报告应用程序发生崩溃的本地代码。

Monkey测试停止条件
       Monkey在测试过程中遇到以下3种情况会停止执行:
1.如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。     
2.如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
3.如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
    通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

六、测试结果分析及处理:
测试过程中会出现以下几种情况:
      1. Monkey停止:
       2.死机
       3.重启
      4.关机(自动耗完电后关机)
      5.正常。












 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值