monkey--介绍

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: monkey--介绍

前戏


monkey程序是android系统自带的,其启动脚本是位于android系统的/system/bin目录的monkey文件,其jar包是位于android系统的/system/framework目录的monkey.jar文件。用户主要是通过adb命令来启动monkey的,monkey在运行时,会根据命令行参数的配置,生成伪随机的事件流,并在android设备上执行对应的测试事件。同时,monkey还会对测试系统进行监测,当出现以下情况会进行特殊处理

1.如限定了monkey在特定包上,当监测到试图转到其他包的操作,将对其进行阻止。

2.如应用程序崩溃或接受到任何失控异常,monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。

3.如果程序发生了程序无响应的错误,monkey将记录对应的错误日志,并根据命令行参数判断是停止运行还是继续运行。


启动monkey


monkey启动步骤

1.连接移动设备

2.连接成功后输入命令:adb shell

3.进入到指定目录:cd /system/bin

4.输入monkey看到以下信息说明启动成功

执行monkey命令:退出shell才能执行

monkey命令格式如下:

adb shell monkey [options] <event-count>

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

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


monkey事件


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

 

1.触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,可通过

--pct-touch参数来配置其事件百分比,从monkey执行该事件对外输出的日志可以看到,该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到

类似操作如点击

 

2.手势事件

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

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

 

3.二指缩放事件

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

事件对外输出的日志可以看到:

该事件起始是由一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,既模拟两个手势同时按下,中间是一系列的ACTION_MOVE事件,既两个手势同时在屏幕上直线

滑动,结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,既两个手指同时放开

 

4.轨迹事件

轨迹事件是由一个或多个随即的移动组成的,有时会伴随着点击,很早之前的android手机带有轨迹球

,这个事件就是模拟轨迹球的操作,现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数,可通过--pct-trackball参数来配置事件百分比,从monkey执行该事件对外输出的日志可以看到该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作

 

5.屏幕旋转事件

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

行该事件对外输出的日志可以看到:该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270

度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断的切换

 

6.基本导航事件

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

 

7.主要导航事件

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

 

8.系统按键事件

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

 

9.启动activity事件(一个activity就是一个页面)

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

 

10.键盘事件

键盘事件主要是一些与键盘相关的操作,比如点击输入框,键盘弹起,点击输入框以外区域,键盘收回等,可通过--pct-flip参数来配置其事件百分比

 

11.其他类型事件

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


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
算法 Shell 测试技术
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
|
4月前
|
测试技术 Python
Python 中的 Monkey Patching
【8月更文挑战第29天】
42 5
|
7月前
|
测试技术 Shell Android开发
随机测试 Monkey Test
随机测试 Monkey Test
182 0
|
Shell
monkey命令
​ 一:Monkey所有命令: monkey常用命令: 二、Monkey常用命令参数说明 基本参数 说明 -p 指定一个或多个包 -s 指定一个随机数生成器的seed值 --throttle 指定事件之间的固定延迟(ms) -v 指定反馈信息级别(信息级别就是日志的详细程度) -c 指定一个或多个类别名 -f 运行指定的monkey脚本 事件参数 说明 --pct-touch 指定触摸事件百分比 --pct-motion 指定动作事件百分比 --pct-trackball 指定轨迹事件百分比 --pct-syskeys 指定系统按键事件百分比
128 0
monkey--常用参数
monkey--常用参数
|
监控 Java Shell
App测试--ADB Monkey(下)
Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。只针对Activity做测试,不能对Service做测试。
374 0
App测试--ADB Monkey(下)
|
Shell 测试技术 开发工具
App测试--ADB Monkey(上)
Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。只针对Activity做测试,不能对Service做测试。
310 0
|
SQL Shell
Monkey总结
Monkey是一个快速检查内存泄露的好工具,可以初步发现较明显的内存泄露问题。    什么是内存泄露?是指不在使用的对象持续占有内存,造成内存空间的浪费。    检查内存泄露的基本操作步骤:          1.
1034 0
|
测试技术 开发工具 Android开发
Android测试之Monkey Runner
什么是MonkeyRunner monkeyrunner是Android sdk中自带的一个通过接收测试脚本(使用python语言编写的)来执行功能性测试的工具。
1302 0
|
Android开发 Shell API
Android测试之Monkey Script
什么是Monkey Script Monkey Script是用来使Monkey执行特定操作的命令集合。 为什么要用MonkeyScript 由于Monkey的执行是随机的不能满足特定的需求,因此我们需要Monkey Script来使Monkey执行我们需要的特定操作。
2158 0