Monkey测试:Monkey的简单使用
Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。
一、环境搭建
只要按照配置Android SDK环境和环境变量即可。
二、Monkey的使用
1、进入adb shell 环境
在windows环境中,进入DOS界面,在界面中,输入adb shell即可进入adb shell环境
(注意:adb shell服务使用的5037的端口,如果此端口被其他进程占用时,将不能正常启动adb shell,问题处理方法见:启动adb shell报错)
如:

表示adb shell启动成功,shell@****:/$中,****表示设备id。$:表示普通用户;#表示root用户。
2、在adb shell环境下输入monkey的相应命令即可。
如:

3、查看需要测试的包名
如果有root权限,可以进入/data/data/下使用ls/ls-a查看(不能使用ll)
如果无root权限,可以使用:pm list packages查看
(需要控制monkey执行的时间,可以通过设置执行时长/事件发送延时,计算出需要执行的次数。如:想要monkey运行24小时,每100毫秒发送一个事件。24*60*60*1000/100=864000(次)
monkey -p *** --ignore-crashes --ignore-timeoutss --throttle 100 864000
表示:此次monkey将会运行24小时
三、Monkey的命令参数详细说明
monkey的命令参数分为:
基础参数:-v 、-s 、-p 、--throttle等
调试选项:--ignore-crashes等
事件类型:--pct-touch等

(一)基础参数
1、最简单的monkey命令(monkey 100)
表示:在设备上,针对整个系统发送100个伪随机事件。

2、-v参数
用于指定反馈信息级别(信息级别就是日志的详细程度)总共分为3级,默认为-v(对应:level0)
-v:只提供启动提示、测试完成提示和最终结果等少量信息。
-v -v:较为详细的日志,包括每个发送到activity的时间信息。
-v -v -v:最详细的日志,包括测试中选中/未选中的activity信息。


注意:在monkey测试完成时,最后一定会有一个:monkey finished标识。
3、-p参数
在我们测试时,是针对具体的app进行测试的,所以在使用monkey测试时,我们需要提供具体的app包名给monkey,此时就需要用到参数-p。在-p后跟随app包名。
在测试时,可以不指定包名,此时monkey会在测试设备上随机启动app进行操作;如果只需要测试一个app,使用一个-p即可;如果有多个app同时测试,可以直接使用-p 包名1 -p 包名2指定具体要测试的app。
如:

4、-s参数
种子值(seed),因为monkey是发送的是伪随机的事件流,但是如果两次seed值相同,那两次monkey测试所产生的事件序列也相同。(所以一般在测试时要记录seed值,以防出现无响应和crash,不容易验证。)
注意:-s需要跟在包名后,次数前
5、--throttle参数
设置执行操作的延迟时间(毫秒)--是指两个事件之间的间隔,如果没有指定此参数,会尽可能快的生成和发送事件。
(二)调试选项
1、--ignore-crashes
用于指定当应用程序崩溃时,Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,monkey依然会发送事件,直到事件计数完成。
2、---ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
3、--ignore-security-exceptionss
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
4、--kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
5、--monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码
6、--hprof
该选项设置后,将会在monkey事件序列前后立刻生成report,大小为大于5MB,存储在/data/misc
(三)事件类型
monkey在发送伪随机事件时,是有不同的类型的。默认随机分配比例,也可以指定其百分比。如果不设置会是--pct-anyevent为100%,也就是纯随机事件;如果配置了其他参数,但是不够100%,余下的百分比部分也是--pct-anyevent事件。
如:

目前共包含11中类型的事件。
分别为:
0:触摸事件--pct-touch
调整touch触屏事件的百分比,触碰事件就是指在屏幕上的一个单独位置的一次点击/抬起的事件。
1:滑屏事件--pct-motion(手势事件)
(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯)
2:轨迹球--pct-trackball
(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
3:
4:旋转(--pct-rotation)
旋转屏幕
5:
6:导航--pct-nav
(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有)
7:主导航--pct-majornav
调整主要导航事件的百分比(如中间键、取消、确定或菜单引发的图形接口的动作)
8:系统按键--pct-syskeys
调整系统按键事件,如:home/back/startcall/endcall以及音量控制键等
9:app切换--pct-appswitch
调整启动activity的百分比,在随机间隔中,执行一个startActivity()方法调用,作为一种最大化的覆盖安装包的所有的activity的方法
10:键盘翻转(--pct-flip)
11:随机--pct-anyevent
调整其他类型的事件的百分比,比如按键或其他不太常用到的一些事件的百分比
Monkey测试:Monkey的简单使用的更多相关文章
- monkey测试===Monkey测试结果分析(系列三)转
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- monkey测试===Monkey测试策略(系列二)转
Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...
- monkey测试
一.理解monkey测试 1.Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 2.当Mon ...
- 【手机自动化测试】monkey测试
1 概述 Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 当Mon ...
- APP测试之Monkey测试
一.简介 1.什么是Monkey测试? Monkey testing,也有人叫做搞怪测试.就是用一些稀奇古怪的操作方式去测试被测试系统,以测试系统的稳定性.Monkeytest,一般指这样的测试活动, ...
- android压力测试monkey简单使用
monkey是android sdk自带的压力测试工具,简单使用如下: 用adb shell进入adb shell环境后,用下面命令进行测试 monkey -p com.xxx.yyy -v num ...
- Android简单的monkey测试
Android中的monkey测试是比较常用的工具了,设定好monkey之后,让手机跑一晚上,第二天分析日志,这样能更加有效率的工作. monkey测试的工具比较多,基本的方法都差不多. 抓取日志: ...
- Android APP压力测试-Monkey
压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随 ...
- Android Monkey测试(转载)
Monkey是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上.它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试. 官方介绍 :https://developer.a ...
随机推荐
- 84. Largest Rectangle in Histogram (JAVA)
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- Xadmin
一.安装 Xadmin pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 二.导出文件 在公司开发中如何知道项目里别 ...
- Generative Adversarial Nets(GAN Tensorflow)
Generative Adversarial Nets(简称GAN)是一种非常流行的神经网络. 它最初是由Ian Goodfellow等人在NIPS 2014论文中介绍的. 这篇论文引发了很多关于神经 ...
- Maven灵活构建(转载)
https://blog.csdn.net/sin90lzc/article/details/7552033
- Python:JPG->JPEG
由于要在网页上使用图片渐进加载,所以需要将其他图片格式转化为JPEG格式 考虑使用python来实现批量转换 需要先安装pillow: pip install pillow 我这里将JPG格式转化为 ...
- requests 模块例题示范
requests 模块 re模块和requests模块结合示范实例 .*? 不加圆括号表示在要匹配里面的内容不要: (.*?)表示在要匹配的两者之间的内容都要: import requests imp ...
- ESP8266-模拟输出(PWM)
PWM(Pulse Width Modulation,脉宽调制),是在保持波的频率不变的同时改变脉宽的技术 首先,我们来理解一下占空比.一个脉冲周期由一个ON周期(VCCC)和一个OFF周期(GND) ...
- 使用vue开发输入型组件更好的一种解决方式(子组件向父组件传值,基于2.2.0)
(本人想封装一个带有input输入框的组件) 之前使用vue开发组件的时候,在遇到子组件向父组件传递值时我采用的方法是这样的: 比如子组件是一个输入框,父组件调用时需要获取到子组件输入的值,子组件通过 ...
- 获取树莓派ip地址的方法
1.有显示器 (1)鼠标停留在屏幕右上角网络图标上,2-3秒会显示网络连接信息(2) 图形界面下打开终端运行ifconfig命令 2.登录路由器查看名叫raspberry的设备 3.电脑上运行命 ...
- python学习理论
结论 其实学python这本书 不一定要全部敲一遍 在“”动手试一试“”里面 把这篇学到的东西测试一下就算是掌握了 要在实际工作场景当中使用还需要进一步练习这样做的话 比较好一点 边学边测试 加深掌握 ...