2018-05-03 Monkey参数&&事件

一、monkey参数

Monkey 启动的命令行脚本为:
monkey [options] <count>
其中, options 表示 Monkey 执行的可配置参数,是可选项(如果不指定 options , Monkey 将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包); count 表示 Monkey 执行的事件数,为必选项。
Options 可简单划分为五类:

  • 基本配置类参数;
  • 事件类型和频率参数;
  • 约束限制类参数;
  • 调试类参数;
  • 官方隐藏类参数;

1、基本配置类参数

图片.png

2、事件类型和频率参数

Monkey 的事件类参数的作用是对随机事件进行调控,从而使其遵照设定运行,如设置各种事件的百分比、设置事件生成所使用的种子值等,频率参数主要限制事件执行的时间间隔。


图片.png

3、约束限制类参数

Monkey 的约束限制类参数的作用是将随机事件运行的范围限制在一个或多个包或类中:


图片.png

4、 调试类参数

通过调试类命令,可以对 Monkey 进行一些简单的调试,可以快速定位 Monkey 执行过程中的一些问题。如果用户想监控应用程序所调用的包之间的转换,则可以用 --dbg-no-events 参数;如果用户想监控内存泄漏,可以用 --hprof 参数:


图片.png

5、官方隐藏类参数

在 Android 官网上还有三个参数是看不到说明的,即为隐藏参数,这三个参数的详细介绍见下表:


图片.png

二、Monkey 事件

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

1、触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,可通过 --pct-touch 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Sending Touch (ACTION_DOWN): 0,(444.0,1716.0)
:Sending Touch (ACTION_UP): 0,(447.18365,1728,0087)

该事件由一组 Touch ( ACTION_DOWN )和 Touch ( ACTION_UP )事件组成,在手机上看到实际操作类似于点击。

2、手势事件

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过 --pct-motion 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Sending Touch (ACTION_DOWN): 0:(282.0,750.0)
:Sending Touch (ACTION_MOVE): 0:(281.0507,745.5253)
:Sending Touch (ACTION_MOVE): 0:(274.9443,743.3276)
:Sending Touch (ACTION_MOVE): 0:(269.18774,738.50525)
:Sending Touch (ACTION_MOVE): 0:(260.14917,733.6212)
:Sending Touch (ACTION_UP): 0:(254.1414,730.6132)

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

3、二指缩放事件

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

:Sending Touch (ACTION_DOWN): 0:(274.0,193.0)
:Sending Touch (ACTION_POINTER_DOWN 1): 0:(272.80875,198.17978) 1:(26.0,312.0)
:Sending Touch (ACTION_MOVE): 0:(251.31396,198.5104) 1:(24.973522,308.64676)
:Sending Touch (ACTION_MOVE): 0:(240.28494,202.44012) 1:(23.442032,307.8576)
:Sending Touch (ACTION_MOVE): 0:(221.90855,206.75597) 1:(22.903313,306.47507)
:Sending Touch (ACTION_MOVE): 0:(210.28592,212.24286) 1:(17.78174,303.11304)
:Sending Touch (ACTION_POINTER_UP 1): 0:(171.06334,236.1724) 1:(10.3147135,293.79877)
:Sending Touch (ACTION_UP): 0:(161.06638,240.22447)

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

4、轨迹事件

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

:Sending Trackball (ACTION_MOVE): 0:(2.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0,-3.0)

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

5、屏幕旋转事件

屏幕旋转事件是一个隐藏事件,在 Android 官方文档中并没有记录这个事件。它其实是模拟的 Android 手机的横屏和竖屏切换。可通过 --pct-rotation 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Sending rotation degree=1, persist=false
:Sending rotation degree=3, persist=true
:Sending rotation degree=2, persist=true
:Sending rotation degree=0, persist=true

该事件由一个 rotation 事件组成,其中 degree 表示的是旋转方向,顺时针旋转, 0 表示旋转 90 度的方向, 1 表示旋转 180 度的方向, 2 表示旋转 270 度的方向, 3 表示旋转 360 度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。

6、基本导航事件

略。。。

7、主要导航事件

主要导航事件是指点击 “ 主要导航 ” 按键的操作,这些按键通常会导致 UI 界面中的动作,如 5-way 键盘的中间键、回退按键、菜单按键。可通过 --pct-majornav 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_DOWN): 82 // KEYCODE_MENU
:Sending Key (ACTION_UP): 82 // KEYCODE_MENU

该事件是由一个 Key ( ACTION_DOWN )和一个 Key ( ACTION_UP )组成的,点击的按键就是中间键和菜单键。

8、系统按键事件

系统按键事件是指点击系统保留使用的按键的操作,如点击 Home 键、返回键、音量调节键等。可通过 --pct-syskeys 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Sending Key (ACTION_DOWN): 5 // KEYCODE_CALL
:Sending Key (ACTION_UP): 5 // KEYCODE_CALL
:Sending Key (ACTION_DOWN): 4 // KEYCODE_BACK
:Sending Key (ACTION_UP): 4 // KEYCODE_BACK
:Sending Key (ACTION_DOWN): 3 // KEYCODE_HOME
:Sending Key (ACTION_UP): 3 // KEYCODE_HOME
:Sending Key (ACTION_DOWN): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_UP): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_DOWN): 25 // KEYCODE_VOLUME_DOWN
:Sending Key (ACTION_UP): 25 // KEYCODE_VOLUME_DOWN

该事件是由一个 Key ( ACTION_DOWN )和一个 Key ( ACTION_UP )组成的,点击的就是上面说到的几个系统按键。

9、启动 Activity 事件

启动 Activity 事件是指在手机上启动一个 Activity 的操作。在随机的时间间隔中, Monkey 将执行一个 startActivity ()方法,作为最大限度上覆盖被测包中全部 Activity 的一种方法。可通过 --pct-appswitch 参数来配置其事件百分比。从 Monkey 执行该事件对外输出的日志可以看到:

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.
category.LAUNCHER;launchFlags=0x10200000;component=com.android.settings/.
Settings;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] cmp=com.android.settings/.Settings } in package com.
android.settings

该事件是由一个 Switch 操作组成的,从手机上看,上面的操作实际是打开了 com.android.settings 这个应用的一个com.android.settings.Settings 的 Activity 界面。

10、键盘事件

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

:Sending Flip keyboardOpen=false
:Sending Flip keyboardOpen=true

如日志所示,这里主要是键盘的打开和关闭操作。

11、 其他类型事件

略。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容