【Monkey】

(一)Monkey常用事件命令

1.Monkey简介

在android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey,这只猴子一旦启动,就会让被检测得Android应用程序像猴子一样活蹦乱跳,到处乱跑,人们常用这只猴子来对呗测试的程序进行压力测试,检查和评估被测试程序的稳定性。

Monkey是一个程序,运行在你的设备上,并生成随机的用户事件流,如点击,触摸或手势以及一些系统级事件,可以使用Monkey以随机但可重复的方式对你正在开发的应用程序进行压力测试

2.monkeyl的启动步骤

1)连接移动设备

2)连接成功后输入命令

命令:adb shell

3)进入到指定目录(monkey文件所在目录:system/bin)

命令:cd system/bin

4)输入命令:monkey

出现以下界面就说明是启动成功了
在这里插入图片描述

3.强制关闭monkey

1)adb shell ps查看全部在运行的进程

2)查找出com.android.commands.monkey进程PID

3)adb shell kill PID 杀掉monkey进程

4.monkey命令

命令格式:adb shell [options] [event-count]

[options] :是指monkey可传入的参数,是可选项(如果不指定option是,monkey将以无反馈模式启动,并把事件任意发送到安装在目录环境中的全部包)

[event-count]:是指随机发送事件数。如输入100就是执行100个伪随机事件,为必选项。

5.monkey的操作事件

1)触摸事件(–pct-touch)0

触摸事件是指在屏幕某处按下并抬起的操作,可通过–pct-touch参数来配置其事件百分比。

2)手势事件(–pct-motion)(滑屏事件)1

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

3)二指缩放事件(–pct-pinchzoom)2

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作,可通过–pct-pinchzoom参数来配置其事件百分比

4)轨迹球(–pct-trackball)3

轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样

5)屏幕旋转事件(–pct-rotation)4

屏幕旋转时一个隐藏事件,在Android官方文档中并没有记录这个事件,它其实就是模拟手机的横竖屏切换,可通过–pct-rotation参数来配置其事件百分比

6)基本导航事件(–pct-nav)5

基本导航是指点击方向输入设备的上,下,左,右按键的操作,现在手机上很少有这几个按键,这种事件一般用的比较少,可通过–pct-nav来配置其事件百分比

7)主要导航事件(–pct-majornav)6

调整主要导航事件的百分比(如中间键、取消、确定或菜单引发的图形接口的动作)

8)系统按键事件(–pct-syskeys)7

调整系统按键事件,如:home/back/startcall/endcall以及音量控制键等

9)app切换(pct-appswitch)8

调整启动activity的百分比,在随机间隔中,执行一个startActivity()方法调用,作为一种最大化的覆盖安装包的所有的activity的方法

10)键盘事件(–pct-flip)9

键盘事件主要是一些键盘相关的操作,比如点击输入框,键盘弹起,点击输入框以外的区域,键盘收回等等。

11)其他类型事件(–pct-anyevent)10

调整其他类型的事件的百分比,比如按键或其他不太常用到的一些事件的百分比

(二)monkey参数

monkey参数主要分为4大类:常规类参数,事件类参数,约束类参数,调试类参数。

1.常规类参数

常规类参数包括帮助参数和日志信息参数,帮助参数用于Monkey命令使用指导;日志信息参数将日志分为三个级别,级别越高,日志的信息越详细。

1)帮助类参数

monkey -h
在这里插入图片描述

tips:h是help的缩写

2)日志级别参数

adb shell monkey -v [event-count]

-v:打印出日志信息,每个v将增加反馈信息的级别,-v越多日志信息越详细,不过目前最多支持3个v,即::

adb shell monkey -v -v -v 1000

-v:0级,除启动提示,测试完成和最终结果外提供较少信息;

-v -v:1级,提供详细测试信息,如逐个发送到Activity的事件

-v -v -v:2级,提供更详细安装信息,如测试中未被选中或被选中的Activity

[event-count]:事件数

2.事件类参数

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

1)执行指定脚本

命令:adb shell monkey -f [scriptfile] [event-count]

[scriptfile]是指脚本存放路径

2) 伪随机数生成种子值

使用-s命令可以重复执行之前的随机操作,本身每次执行伪随机事件操作也会默认生成一个seed值

命令:adb shell monkey -s [seed] [event-count]

3) 设置间隔,如果你希望在每一个指令之间加上固定的间隔时间,可以用–throttle(注意,前面是–)命令。

命令:adb shell monkey --throttle [milliseconds]

【milliseconds】:时间单位是毫秒为单位,表示事件之间的固定延迟(即执行每一个指令间隔的时间),若不接该选项,monkey将不会延迟

4)调整触摸事件百分比

如果你希望调整触摸事件的百分比,记住使用–pct-touch

命令:adb shell monkey --pct-touch 【事件百分比】【event-count】
在这里插入图片描述

*tips:-v是将日志打印出来*

3.约束类参数

1)包约束

-p:后面接一个或多个包名(packageName),如果应用需要访问其他包里德Activity,那相关的包夜需要在此同时指定,如果不指定任何包,monkey将允许系统启动全部包里的Activity。

例如:抖音的包名:com.ss.android.ugc.aweme
在这里插入图片描述

2)activity约束

-c:如果你希望将monkey限制在一个或几个类别中,使用如下命令:

adb shell monkey -c [activityname] [event-count]

4.调试类参数

1)应用程序崩溃后继续发送事件

如果你希望monkey在任何超时错误发生后继续发送事件,则需要用到–ignore-crashes

adb shell monkey --ignore-crashes [event-count]

设置此选项后,当应用程序发生失控异常时,monkey将继续运行直到计数完成,如果不设置此选项,脚本遇到异常则会停止运行。

还有一些其他的调试类参数,可自行百度了解。

(三)monkey参数应用综合案例

1.测试场景

测试抖音APP Android版,测试希望通过Monkey来模拟用户操作,检查被测应用是否会出现异常(应用崩溃或者无响应)

2.需求分析

1)测试是指定应用,因此需要用-p指定被测app包名: com.ss.android.ugc.aweme

2)这个测试目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可最大限度地发现用户使用过程中会出现的问题,因此需要对monkey执行的事件百分比进行调整。触摸事件和手势事件是用户最常用的操作,所以通过–pct-touch和–pct-motion将2个事件百分比调到40%和25%,目标应用包含多个Activity,为了能覆盖大部分的Activity,所以通过–pct-appswitch将Activity切换的事件比调整到10%;被检测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过–pct-rotation把横竖屏切换事件调整到10%

3)使用-s参数来指定命令执行的seed值Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。

4)使用–throttle参数来控制Monkey每个操作之间的间隔,因此通过–throttle设置monkey每个操作固定延迟0.4s

5)使用–ignore-crashes和–ignore-timeouts参数使monkey遇到意外时能继续执行。

6)使用-v指定log的详细级别 ,这里将日志级别设为-v-v

3.测试命令

adb shell monkey -p com.ss.android.ugc.aweme #指定被测试app的包名

–pct-touch 40 --pct-motion 25 #指定触摸事件和手势事件百分比为40%和25%

–pct-appswitch 10

–pct-rotation 10

-s 1666 --throttle 400

–ignore-crashes

–ignore-timeouts

-v -v 200

(四) monkey自定义脚本

1.获取元素坐标点位置

Monkey脚本只能通过坐标的方式来定位点击和移动事件的屏幕位置

2.Monkey脚本API简介

LauncherActivity(pkg_name,cl_name):启动应用的Activity。参数:包名和启动的Activity。

Tap(x,y,tapDuration):模拟一次手指点击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间

UserWait(sleeptime):休眠一段时间

DispatchPress(keyName):按键。参数:keycode。

DIspatchString(input):输入字符串。

DispatchFilp(true/false):打开或关闭软键盘

PressAndHold(x,y,pressDuration):模拟长按事件

Drag(xStart,yStart,xEnd,yEnd,stepCount):用于模拟一个拖拽操作。

PinchZoom(x1Start,y1Strat,x1End,y1End,x2Start,y2Strat,x2End,y2End,stepCount):模拟缩放手势。

3.Monkey脚本格式

Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令 (注意:头文件信息里面所有属性等号两边都要有空格;monkey脚本一定要是在英文状态下写的包括标点符号都要是英文状态的)

type = raw events

count = 1

speed = 1

//下面为monkey命令

start data >>

具体的monkey脚本内容

4.Monkey日志管理

保存在PC中

adb shell monkey -v -v 100 >保存路径

保存在手机上

adb shell

monkey -v -v 100 >保存手机路径

标准流和错误流分开保存

adb shell monkey -v -v 100 1>标准流路径 2>错误流路径

5.实例
在这里插入图片描述

运行:
在这里插入图片描述

(五)monkey日志管理

1.日志管理作用

monkey日志管理是monkey测试非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题

2.monkey日志保存方法

1.保存在PC上

2.保存在手机上

3.标准流和错误流分开保存

2.1保存在PC中

命令:adb shell monkey [option] [count] >d:\monkey.txt

eg:adb shell monkey -v -v 100 >D:\monkeylog.txt

2.2保存在手机上

命令:1.adb shell

2.monkey -v 100 >/sdcard/monkeylog.txt

***注意adb shell 和第二条命令不能同时写,必须分开写

2.3标准流和错误流分开保存

标准流和错误流分开保存,代码如下:

monkey [option] [count] 1>/sdcard/monkey.txt 2>/sdcard/errolog.txt

1:表示标准流日志存放位置

2.表示错误流存放位置

  • 23
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值