最近依然还是那么忙,只不过慢慢总结,好几天出一篇总结,那也是在努力,加油,打工人

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测试工具简介相关推荐

  1. Monkey测试工具详解

    Monkey测试工具简介: Monkey是Android SDK 中附带的一个工具:Monkey测试的原理:利用socket通讯(Android客户端和服务器以TCP/UDP方式)的方式来模拟用户的按 ...

  2. [原创]Android Monkey测试工具使用介绍

    [原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...

  3. sysbench压力测试工具简介和使用(一)

    sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...

  4. [原创]Tsung压力测试工具简介及安装

    [原创]Tsung压力测试工具简介及安装 一 Tsung压力测试工具简介 一个开源的多协议分布式负载测试工具,使用erlang语言开发的.它能用来压力测试HTTP, WebDAV, SOAP, Pos ...

  5. 多设备monkey测试工具_基于Tkinter GUI操作

    V1.0版本 先看下效果吧: 简单的介绍下: 1.设备列表区域:用于展示当前连接的所有设备 2.monkey参数区域:用于显示即将执行的monkey参数 3.日志区域:用于显示必要日志(其实没啥卵用, ...

  6. Android软件测试Monkey测试工具

    前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...

  7. monkey测试工具

    Monkey的概念: "猴子测试"是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行 ...

  8. 从0到1API测试怎么做?常用API测试工具简介

    API 测试的基本步骤 主要包括三大步骤: (1)准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步) (2)通过 API 测试工具,发起对被测 API 的 request (3) 验证 ...

  9. 一个简单的monkey测试工具

    Monkey的概念: "猴子测试"是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行 ...

最新文章

  1. 函数调用过程详解:函数栈帧的创建与销毁
  2. Spring Quartz
  3. eclipe安装中文语言包 CDT Pydev
  4. Vscode使用npm安装babel
  5. (新聞) 友達光電 A+種子暑期實習計畫 埋下希望的光電種子 (日記)
  6. Java线程--扩展
  7. (三)比特币时间序列数据的AI异常检测
  8. uml的图与代码的转换——类图
  9. CCF202104-3 DHCP服务器(100分)【模拟】
  10. Visual C# 2005 - 如何制作多变化字体之浮雕字
  11. VS 内存不能read—堆栈空间解决栈溢出问题
  12. cad怎么转换成dwf格式?学会这招,解决98%工作烦恼
  13. 王道c语言,王道训练营-C语言-一
  14. Comware V7使用用户名密码方式登录设备典型配置
  15. 太强了,这款开源终端工具可查询 IP 信息 ...
  16. 时序分析 27 - 时序预测 格兰杰因果关系(上) 理论知识
  17. 软件测试自动感应灯,基于单片机的智能感应灯设计
  18. cpu和显卡瓶颈测试软件,游戏卡慢顿?一招教你快速找出电脑硬件瓶颈
  19. fastadmin 表头随滚轮滚动 bootstrap-table-fixed-columns 左侧随滚轮滚动
  20. uva 10859 放置街灯树形dp

热门文章

  1. C语言程序设计--通讯录
  2. 云原生爱好者周刊:服务网格的困境与破局
  3. flask---中间件
  4. 华为鸿蒙手表价格,「华为」鸿蒙系统来了!华为手表、智慧屏等将一同亮相!...
  5. 如何提高线上服务可用性
  6. 在精读英文文献时有哪些好习惯?
  7. 如何给博客园添加访问统计
  8. ping目标主域后如何判断是否开启CDN
  9. 偷偷爆料下各公司年终奖情况!(1.30 日最新版)
  10. 南北棋牌游戏大不同,我就爱玩南方棋牌