monkey基本使用

一、monkey启动步骤

1、连接设备

2、adb shell

3、cd /system/bin

4、输入monkey

二、关闭monkey

1、adb shell ps 查看进程

2、查出 com.android.commands.monkey 进程ID

3、adb shell kill pid 杀死monkey进程

三、monkey 命令

adb shell monkey [options]  <event-count>

--options 指monkey传入的参数,不指定则为无反馈启动,把事件任意发送到目标环境的全部包中

--<event-count> 指随机发送时间数。如输入100就执行100个随机事件。

四、操作事件

1、触摸事件

按下抬起的操作,可通过--pct--touch 配置事件百分比(是由一组ACTION_DOWN和ACTION_UP)组成

2、手势事件

指按下、移动、抬起、直线滑动的操作。通过--pct--motion配置百分比(由ACTION_DOWN和ACTION_MOVE和ACTION_UP组成)

3、二指缩放事件

通过--pct--pinchzoom配置,

4、轨迹事件

由一个或多个随机移动组成,通过--pct-tracball

5、旋转屏幕

通过--pct-rotation配置百分比

6、基本导航事件

现在基本没有

7、主要导航事件

主要是中间键、back、菜单按键。通过--pct-majornav配置

8、系统按键事件

如home、back、音量调节等,通过--pct-syskeys配置

9、启动activity事件

手机开启一个activity。随机执行一个startactivity()方法

10、键盘事件

通过--pct-flip配置

五、monkey 参数

1、常规参数

monkey -h 帮助类参数

adb shell monkey -v <event-count> ;  -v打印出日志。每个-v增加反馈信息级别,-v越多越详细,最多三个

2、事件类参数

adb shell monkey -f /mnt/sdcard/test1  执行脚本文件

adb shell monkey -s 666 100  ;   -s可以重复执行之前的随机操作。每次随机事件默认生成一个seed

adb shell monkey --throttle 3000 5;   --throttle 每个指令之间增加间隔时间

adb shell monkey -v -v --pct-touch 100 200;   调整触摸事件百分比等

六、约束类参数

1、包约束 (只访问包里的activity)

adb shell monkey -p com.tal.kaoyan 500

2、activity约束

adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000

七、调试类参数

1、程序崩溃侯继续发送事件

adb shell monkey --ignore-crashes <event-count>

2、超时错误继续发送事件

adb shell monkey --ignore-timeouts

3、应用程序权限错误发生后继续发送事件

adb shell monkey --ignore-security-exceptions

 

七、案例

1、测试是指定应用,因此需要使用-p指定被测app包名:com.tal.kaoyan

2、这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对Monkey执行的事件百分比做一些调整:

触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和--pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过--pct-appswitch将Activity切换的事件占比调整到10%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过--pct-rotation把横竖屏切换事件调整到10%。

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

4、使用--throttle参数来控制Monkey每个操作之间的时间间隔 指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过--throttle设置Monkey每个操作固定延迟0.4秒。

5、使用--ignore-crashs和--ignore-timeouts参数使Monkey遇到意外时能继续执行 在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让Monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。

6、使用-v指定log的详细级别 Monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为 -v -v.

adb shell monkey -p com.tal.kaoyan
--pct-touch 40 --pct-motion 25 
--pct-appswitch 10
--pct-rotation 5
-s 1666 --throttle 400
--ignore-crashes
--ignore-timeouts
-v -v  200

 

八、monkey脚本稳定性测试

按照规范写好脚本,放在手机里,通过monkey -f调用脚本

1、脚本api:

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

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

UserWait(sleepTime): 休眠一段时间

DispatchPress(keyName): 按键。参数: keycode。 RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchString(input): 输入字符串。

DispatchFlip(true/false): 打开或者关闭软键盘。

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

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

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

LongPress(): 长按2秒。

DeviceWakeUp(): 唤醒屏幕。

PowerLog(power_log_type, test_case_status): 模拟电池电量信息。

WriteLog(): 将电池信息写入sd卡。

RunCmd(cmd): 运行shell命令。

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。

LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。

DispatchTrackball: 模拟发送轨迹球事件。

ProfileWait: 等待5秒。

StartCaptureFramerate(): 获取帧率。

EndCaptureFramerate(input): 结束获取帧率。

2、脚本格式

Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令。
type = raw events  
count = 1  
speed = 1.0  
//下面为monkey命令  
start data >>   
具体的monkey脚本内容  

3、编写脚本

#头文件信息

type = raw events 

count = 1

speed = 1.0

#启动测试
start data >>

LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)
UserWait(2000)

Tap(624,900,1000) #点击取消升级
UserWait(2000)

Tap(806,64,1000) #点击跳过
UserWait(2000)

Tap(217,378,1000) #点击用户名输入框
DispatchString(zxw1234)
UserWait(2000)

Tap(197,461,1000) #点击密码输入框
DispatchString(zxw123456)
UserWait(2000)

Tap(343,637,1000) #点击登录按钮

4、执行脚本

adb push C:\Users\Shuqing\Desktop\kyb1.txt /sdcard

adb shell monkey -f /sdcard/kyb1.txt -v 1

5、注意事项

头文件代码书写注意“=”两边预留空格,否则会出现如下报错。

 

九、日志管理

1、日志保存方式

保存PC中

保存手机上

标准流和错误流分开保存

2、保存pc中

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

3、保存在手机上

adb shell

monkey -v 100 >/sdcard/monkeylog.log

4、正常日志和error日志分开保存

adb shell monkey -v 100 1>d:\monkey.log  2>d:\error.log

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值