zoukankan      html  css  js  c++  java
  • monkey命令

    monkey的基本介绍

    1.什么是monkey

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

    2.monkey测试的目的

    monkey命令是用来测试安卓系统APP的健壮性和稳定性

    3.monkey测试的特性

    (1)测试的对象仅为应用程序包,有一定的局限性。
    (2)Monky测试使用的事件流数据流是随机的,不能进行自定义。
    (3)可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

    环境搭建

      搭建monkey的运行环境,安装JDK和SDK,我的运行环境是基于windows平台的。

    (1) 下载安装JDK ,下载完成之后点击安装,默认安装就可以了,然后设置JDK的环境变量
    右击“计算机”->属性->高级系统设置->环境变量->
    A、在系统变量里新建JAVA_HOME变量,变量值为:C:Program FilesJavajdk1.6.0_14(根据自己的安装路径填写);
    B、新建classpath变量,变量值为:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar;
    C、在path变量(已存在不用新建)添加变量值:%JAVA_HOME%in;%JAVA_HOME%jrein(注意变量值之间用“;”隔开)。
    D、“开始”-->“运行”-->输入cmd->在命令行输入“javac”-->"Enter",如果能正常打印用法说明配置成功!

    环境变量的解析:
    JAVA_HOME:jdk的安装路径
    classpath:java加载类路径,只有类在classpath中java命令才能识别,在路径前加了个"."表示当前路径。
    path:系统在任何路径下都可以识别java,javac命令。

    (2)下载SDK for Windows 解压:android-sdk-windows 

    1.下载sdk的官网:https://www.androiddevtools.cn/

      

      2. 选择需要的版本进行下载

      

      3.添加环境变量(将adb.exe(android-sdk-windowsplatform-tools)的路径加载到path环境变量中)

    monkey命令的使用

    1.查看monkey有哪些命令adb shell monkey

    2.随机的向设备或模拟器发送命令

     3.向指定的APP发送伪随机的命令:adb shell monkey -p APP包名  命令数

    4.参数-s (seed):伪随机数生成器的seed值,即种子数,如果用相同的seed值再次运行monkey,就会产生相同的事件序列 (方便bug的复现)

    5.-throttle <milliseconds>

    在事件之间插入固定的延迟。通过这个选项可以减缓monkey的执行速度,如果不指定该选项,monkey将不会被延迟,事件将尽可能快的被生成

    6.monkey事件

    Monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。

    1.触摸事件    --pct-touch

    触摸事件是指在屏幕某处按下并抬起的操作,可通过--pct-touch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到。 该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。

    2.手势事件   --pct-motion

    手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过--pct-motion参数来配置其事件百分比。

    该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

    3.二指缩放事件   --pct-pinchzoom

    二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过--pct-pinchzoom参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

    该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。

    4.轨迹事件   --pct-trackball

    轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过--pct-trackball参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

    该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。

    5.屏幕旋转事件   --pct-rotation

    屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过--pct-rotation参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。

    6.基本导航事件   --pct-nav

    基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过--pct-nav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:

    该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。

    7.主要导航事件   --pct-majornav

    主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。可通过--pct-majornav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。

    8.系统按键事件   --pct-syskeys

    系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过--pct-syskeys参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。

    9.启动Activity事件   --pct-appswitch

    启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过--pct-appswitch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com.android.settings这个应用的一个com.android.settings.Settings的Activity界面。

    10.键盘事件   --pct-flip

    键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过--pct-flip参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 如日志所示,这里主要是键盘的打开和关闭操作。

    11.其他类型事件   --pct-anyevent

    其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到: [代码] 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是其他的一些系统按键,如字母按键、数字按键等。因为现在手机很少带字母按键或数字按键,所以这个事件一般使用得比较少。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Android 剪贴板详解
    Android 7.1
    Windows 上安装 Redis 及可能出现的错误和解决方法!
    微信支付(服务商模式问题集)
    LOG4J日志问题 Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    Mysql强制修改密码
    Mysql密码忘记,修改密码方法
    笔记本最大支持内存查看方法
    Liunx操作指令搜素引擎
    tomcat启动时,内存溢出,Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11350383.html
Copyright © 2011-2022 走看看