Monkey测试篇02:Monkey参数与事件

正如上一篇文章介绍的,Monkey是通过adb命令来启动的,并且在运行时根据命令行参数的配置生成伪随机的事件流,在Android设备上执行。

本篇文章就来介绍一下启动Monkey时的参数,以及Monkey会执行哪些事件。

Monkey的启动脚本是Android系统的system/bin目录的Monkey文件,jar包是位于Android系统的/system/framework目录的Monkey.jar文件。

1、Monkey参数

Monkey启动的命令行脚本为monkey [options] <count>。其中:

  • options表示Monkey执行的可配置参数,是可选项;如果不指定,则以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包;
  • count表示Monkey执行的事件数,为必选项;

options可简单划分为五类,以下进行详细介绍。

1.1 基本配置类参数

Monkey的基本配置类参数包括帮助参数和日志信息参数:

  • 帮助参数--help:用于输出Monkey命令使用指导
  • 日志信息参数-v:将日志分为三个级别,级别越高,日志的信息越详细

1.2 事件类型和频率参数

  • 事件类参数:对随机事件进行调控,从而使其遵照设定运行,如设置各种事件的百分比--pct-xxx <百分比>、设置事件生成所使用的种子值-s <seed>等;
  • 频率参数--throttle <毫秒数>:限制事件执行的时间间隔;

1.3 约束限制类参数

约束限制类参数的作用是将随机事件运行的范围限制在一个或多个包-p <包名>或类-c <类名>

1.4 调试类参数

通过调试类参数,可以进行简单的调试,快速定位执行过程中的一些问题,如:

  • --dbg-no-events 监控应用程序所调用的包之间的转换
  • --hprof 监控内存泄漏

1.5 官方隐藏类参数

在Android官网上还有三个参数是看不到说明的,即为隐藏参数:

  • --pkg-blacklist-file <黑名单文件> 限制Monkey不测试指定黑名单文档中记录的包,如果没有这个参数,Monkey会测试系统内所有的包,黑名单文档中每一行只能放一个包名;
  • --pkg-whitelist-flie <白名单文件> 限制Monkey只测试指定白名单文档中记录的包,如果没有这个参数,Monkey会测试系统内所有的包,如果要测试的包与其它的包有关联,必须一起指定这些包;
  • -f <脚本文件> 指定Monkey执行用户自定义的脚本文件

2、Monkey事件

Monkey所执行的随机事件流中包含11大事件,Monkey就是通过这11大事件来模拟用户的常规操作,对手机APP进行稳定性测试。

我们经常在参数中修改事件百分比的事件如下:

  • 触摸事件--pct-touch:指在屏幕某处按下并抬起对操作,相当于点击屏幕,可通过--pct-touch <百分比>配置其事件百分比,以下事件也是如此;
  • 手势事件--pct-motion:指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作;
  • 二指缩放事件--pct-pinchzoom:指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即放大缩小手势操作;
  • 系统按键事件--pct-syskeys:指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等;
  • 启动Activity事件--pct-appswitch:指在手机上启动一个Activity的操作;
  • 键盘事件--pct-flip:一些与键盘相关的操作,比如点击输入框、键盘弹起、点击输入框以外的区域、键盘收回等;

不常用的事件如下:

  • 屏幕旋转事件--pct-rotation:也是一个隐藏事件,模拟Android手机的横屏和竖屏切换;
  • 基本导航事件--pct-nav:现在手机上很少有上、下、左、右按键,一般用的比较少;
  • 主要导航事件--pct-majornav:指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如中间键、回退按键、菜单按键等;
  • 轨迹事件--pct-trackball:轨迹球事件中包含曲线滑动操作,现在的手机几乎都没有轨迹球;
  • 其他类型事件-pct-anyevent:如按键、其他不常用的设备上的按键等;

3、Monkey监测

Monkey在Android设备上执行时,还会对系统进行监测,当出现以下三种情况时,会进行特殊处理:

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

推荐阅读更多精彩内容