Monkey测试工具简介
最近依然还是那么忙,只不过慢慢总结,好几天出一篇总结,那也是在努力,加油,打工人
Monkey测试工具简介
- 一、Monkey 简介
- 二、Monkey 操作
- 2.1 Monkey支持的事件
- 2.2 Monkey 测试的特点
- 三、Monkey的基本用法
- 四、Monkey测试的一个实例
- 五、使用monkey help 命令查看命令参数
- 5.1 参数: -p
- 5.2 参数: -v
- 5.3 参数: -s
- 5.4 参数: --throttle<毫秒>
- 5.5 参数: --ignore-crashes
- 5.6 参数: --ignore-timeouts
- 5.7 参数: --ignore-security-exceptions
- 5.8 参数: --kill-process-after-error
- 5.9 参数: --monitor-native-crashes
- 5.10 参数: --pct-{+事件类别}{+事件类别百分比}
- 六、Monkey测试结果分析
- 6.1 初步分析方法
- 6.2 详细分析monkey日志
- 七、总结
一、Monkey 简介
monkey是Android SDK中自带的一个命令行工具,使用Java语言写成,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。它在Android文件系统中的存放路径是:/system/framework/monkey.jar;可以通过开发机器上的命令行或脚本来启动。Monkey表面上运行在开发机器上,其实是运行在模拟器/真实终端设备的adb shell中中,所以必须用其环境中的shell(/system/bin/monkey)来运行,可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。
二、Monkey 操作
Monkey测试一般是在产品功能稳定之后进行,专擅于对APP作长稳测试。
通过monkey命令可以模拟用户向目标程序发送随机的事件流,效果等同于手动操作APP,并产生对应的日志,开发测试人可以通过分析monkey日志定位测试过程中出现的问题,实现对APP的自动化和压力测试。
2.1 Monkey支持的事件
Monkey支持11种事件,主要是以下5种…
Touch触摸事件-即点击,由屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作
Trackball滚动球事件-即轨迹 ,由一个或多个随机的移动事件组成,有时会伴随着点击事件
motion滑动事件,由屏幕上某处一个down事件、一系列随机的移动事件和一个up事件组成
nav基本导航事件,由方向输入设备的上下左右按键所触发的事件组成
majornav主要导航事件,通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退 按键、菜单按键
2.2 Monkey 测试的特点
Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性
测试的对象仅为应用程序包,有一定的局限性
Monky测试使用的事件数据流是随机的,不能进行自定义
可对MonkeyTest的对象,事件数量,类型,频率等进行设置
三、Monkey的基本用法
基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
使用android自动化测试工具monkey启动应用时,需要填写被测程序的包名和启动的Activity
四、Monkey测试的一个实例
通过这个例子,理解Monkey测试的步骤以及如何知道哪些应用程序能够用Monkey进行测试
Windows下
1、通过eclipse启动一个Android的emulator
2、在命令行中输入:adb devices查看设备连接情况
C:\Documents and Settings\Administrator>adb devicesList of devices attachedemulator-5554 device
3、在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面
C:\Documents and Settings\Administrator>adb shell
4、查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面
C:\Documents and Settings\Administrator>adb shellls data/datals data/data
5、以com.android.calculator2作为对象进行MonkeyTest
#monkey -p com.android.calculator2 -v 500
其中-p表示对象包 –v 表示反馈信息级别
运行过程中,Emulator中的应用程序在不断地切换画面。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件
五、使用monkey help 命令查看命令参数
5.1 参数: -p
用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,monkey将只允许系统启动指定的APP,如果不指定包,将允许系统启动设备中的所有APP.
* 指定一个包: adb shell monkey -p cn.emoney.acg 10* 指定多个包:adb shell monkey -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100* 不指定包:adb shell monkey 100
5.2 参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level0,说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息
示例 adb shell monkey -p cn.emoney.acg –v 100
日志级别 Level 1,说明提供较为详细的日志,包括每个发送到Activity的事件信息
示例 adb shell monkey -p cn.emoney.acg –v -v 100
日志级别 Level 2,说明最详细的日志,包括了测试中选中/未选中的Activity信息
示例 adb shell monkey -p cn.emoney.acg –v -v –v 100
5.3 参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
Monkey 测试1:adb shell monkey -p cn.emoney.acg -s 10 100Monkey 测试2:adb shell monkey -p cn.emoney.acg –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。
5.4 参数: --throttle<毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
adb shell monkey -p cn.emoney.acg --throttle 5000 100
5.5 参数: --ignore-crashes
用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-crashes 1000
测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
adb shellmonkey -p cn.emoney.acg 1000
测试过程中,如果acg程序崩溃,Monkey将会停止运行
5.6 参数: --ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-timeouts 1000
5.7 参数: --ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-security-exception 1000
5.8 参数: --kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态
(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
adb shellmonkey -p cn.emoney.acg --kill-process-after-error 1000
5.9 参数: --monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
adb shellmonkey -p cn.emoney.acg --monitor-native-crashes 1000
5.10 参数: --pct-{+事件类别}{+事件类别百分比}
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
示例:
–pct-touch{+百分比}
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
adb shell monkey -p cn.emoney.acg --pct-touch 10 1000
–pct-motion {+百分比}
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)
adb shell monkey -p cn.emoney.acg --pct-motion 20 1000
–pct-trackball {+百分比}
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
adb shell monkey -p cn.emoney.acg --pct-trackball 30 1000
–pct-nav {+百分比}
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
adb shell monkey -p cn.emoney.acg --pct-nav 40 1000
–pct-majornav {+百分比}
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
adb shell monkey -p cn.emoney.acg --pct-majornav 50 1000
六、Monkey测试结果分析
6.1 初步分析方法
Monkey测试出现错误后,一般的查错步骤为以下几步:
1、找到是monkey里面的哪个地方出错
2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样–复现
一般的测试结果分析:
1、 ANR问题:在日志中搜索“ANR”
2、崩溃问题:在日志中搜索“Exception” Force Close
6.2 详细分析monkey日志
将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名
首先我们需要查看Monkey测试中是否出现了ANR或者异常
然后我们要分析log中的具体信息,方法如下:
查看log中第一个Switch,主要是查看Monkey执行的是哪一个Activity,如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在
一般的log中
Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表当前执行了一个单击的操作
Sleeping for 500 milliseconds这句log是执行Monkey测试时
throttle设定的间隔时间,每出现一次,就代表一个事件
SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN 代表当前执行了一个点击下导航键的操作
Sending Pointer ACTION_MOVE 代表当前执行了一个滑动界面的操作
Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。Monkey执行中断,在log的最后也能查看到当前已执行的次数
七、总结
在monkey测试中常用的命令组合有:
1、monkey -p com.yourpackage -v 500//简单的输出测试的信息
2、monkey -p com.yourpackage -v -v 500 //以深度为二级输出测试信息
4、monkey -p com.yourpackage -s 数字 -v 500//为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错
5、monkey -p com.yourpackage -v --throttle 3000 500//为每一次执行一次有效的事件后休眠3000毫秒
Monkey测试工具简介相关推荐
- Monkey测试工具详解
Monkey测试工具简介: Monkey是Android SDK 中附带的一个工具:Monkey测试的原理:利用socket通讯(Android客户端和服务器以TCP/UDP方式)的方式来模拟用户的按 ...
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
- sysbench压力测试工具简介和使用(一)
sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...
- [原创]Tsung压力测试工具简介及安装
[原创]Tsung压力测试工具简介及安装 一 Tsung压力测试工具简介 一个开源的多协议分布式负载测试工具,使用erlang语言开发的.它能用来压力测试HTTP, WebDAV, SOAP, Pos ...
- 多设备monkey测试工具_基于Tkinter GUI操作
V1.0版本 先看下效果吧: 简单的介绍下: 1.设备列表区域:用于展示当前连接的所有设备 2.monkey参数区域:用于显示即将执行的monkey参数 3.日志区域:用于显示必要日志(其实没啥卵用, ...
- Android软件测试Monkey测试工具
前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...
- monkey测试工具
Monkey的概念: "猴子测试"是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行 ...
- 从0到1API测试怎么做?常用API测试工具简介
API 测试的基本步骤 主要包括三大步骤: (1)准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步) (2)通过 API 测试工具,发起对被测 API 的 request (3) 验证 ...
- 一个简单的monkey测试工具
Monkey的概念: "猴子测试"是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行 ...
最新文章
- 函数调用过程详解:函数栈帧的创建与销毁
- Spring Quartz
- eclipe安装中文语言包 CDT Pydev
- Vscode使用npm安装babel
- (新聞) 友達光電 A+種子暑期實習計畫 埋下希望的光電種子 (日記)
- Java线程--扩展
- (三)比特币时间序列数据的AI异常检测
- uml的图与代码的转换——类图
- CCF202104-3 DHCP服务器(100分)【模拟】
- Visual C# 2005 - 如何制作多变化字体之浮雕字
- VS 内存不能read—堆栈空间解决栈溢出问题
- cad怎么转换成dwf格式?学会这招,解决98%工作烦恼
- 王道c语言,王道训练营-C语言-一
- Comware V7使用用户名密码方式登录设备典型配置
- 太强了,这款开源终端工具可查询 IP 信息 ...
- 时序分析 27 - 时序预测 格兰杰因果关系(上) 理论知识
- 软件测试自动感应灯,基于单片机的智能感应灯设计
- cpu和显卡瓶颈测试软件,游戏卡慢顿?一招教你快速找出电脑硬件瓶颈
- fastadmin 表头随滚轮滚动 bootstrap-table-fixed-columns 左侧随滚轮滚动
- uva 10859 放置街灯树形dp