一.Monkey工具简介

  Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

特性:

—  测试对象:应用程序包
—  测试数据:随机事件流
—  测试控制:参数设置
二.环境配置
  安装JDK

  1.安装JDK程序,如:jdk-8u5-windows-i586.exe

  2.配置环境变量:

  a.进入计算机→属性→高级系统设置→高级→环境变量

  b.新建系统变量 JAVA_HOME,变量值填写JDK安装目录,如:

    C:\Program Files\Java\jdk1.8.0_05

  C.在path变量中新增: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  d.新建系统变量CLASSPATH,变量值填写: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

  3.验证安装成功:

  命令行输入:java –version.如下显示则成功。

       
—  安装Android SDK

  1.安装Android SDK程序,如:

    installer_r22.6.2-windows.exe

  2.配置环境变量:

    a.进入计算机→属性→高级系统设置→高级→环境变量

    b.在path变量中新增工具包目录,如本机中的:

      D:\Program Files\Android\android-sdk\tools;

       D:\Program Files\Android\android-sdk\platform-tools

—  电脑USB连接手机或打开模拟器
—  运行CMD命令行
—  输入:adb shell。如下显示,则配置成功:
  
三.Monkey举例
—    Monkey  -p com.soufun.aos –v 50
—  [Monkey] 指示monkey命令
—  [-p]指定应用程序包
—  [com.soufun.aos]应用程序包名
—  [-v]指定日志打印详细程度,-v越多,日志越详细。
—  [50]发送事件数
—  本例功能:启动com.soufun.aos程序包,发送50个随机事件。显示日志详细程度为-v级。
四.程序包名称获取
—  获取程序包名有多种方式,下面介绍一种简单的在目录中查找程序包名称:
—  Android系统的程序包储存在/data/data目录下,进入需获取root权限。
  
五.运行结果
  
六.运行结果分析
—  Seed:随机生成数,与 –s 参数配合,用于对同一个程序包生成相同的事件序列(初始界面一致)。
—  Count:事件数
—  AllowPackage:程序包名称
—  Event percentages:各事件百分比
—  Sending trackball、Sending Touch…:发送的事件
—  Event injected:已完成的事件数
—  Network stats:网络统计时间。分别统计在客户端、WIFI、无连接耗费的时间及合计耗费时间。
—  Monkey finish:monkey运行完成。
七.获取错误信息 
—  将打印的日志输出到文本文件中。
  —搜索ANR,查找ANR( Application Not Responding )问题。
  —搜索Exception,查找崩溃问题。
—  其他关键字:crash、fatal.

  找到出现问题位置后,查看其上边几个事件,手动复现该问题,分析产生原因

八.常用参数
—  约束限制参数:

  -p <packages>:使用该参数指定一个包或者几个包,多个包需要加多个-p。

  --pkg-blacklist-file  /data/blacklist.txt:   执行黑名单以外的应用(执行APK集合)。

  --pkg-whitelist-file  /data/whitelist.txt:   执行白名单的应用(执行APK集合)。

  -c <main-category>:使用此参数指定一个或多个类别,多个类别需要加多个-c。一般不设置,使用默认类别“Intent.category.LAUNCHER”和“Intent.category.MONKEY”。

—  调试参数:

  --dbg-no-events:设置此参数,monkey将执行初始启动,进入到一个测试Activity后,不会进一步生成事件。

  --ignore-crashes:设置此参数,应用程序崩溃或异常时(crash、exception),继续发送事件信息。

  --ignore-timeouts:设置此参数,在应用程序超时(ANR)的时候,继续发送事件。

  --ignore-security-exceptions:设置此参数,在应用程序发生许可证错误的时候(认证或证书异常),继续发送事件。

  --kill-process-after-error:设置此参数,在应用程序出现错误后,将会通知系统停止发生错误的进程。

  --monitor-native-crashes:设置此参数,监视并报告Android系统中本地代码的崩溃事件,如果设置”--kill-process-after-error”参数,系统将停止运行该进程。

  --ignore-native-crashes:设置此参数,忽略本地代码导致的崩溃。

—  事件参数:

  -s <seed>:伪随机数生成器的seed值,如果使用相同的seed值再次运行同一个包,它将生成相同的事件序列。注意,要生成相同的事件序列,需确保再次执行monkey时的起始界面相同。

  --throttle <milliseconds>:在事件之间插入固定的延迟事件,这个选项可以减缓monkey的执行速度,单位为毫秒。

  -v:每一个-v将增加反馈信息的级别,级别越高,log的信息就越详细,一般采用三个-v。

  --pct-touch <percent>:触摸事件百分比。比如一个down-up事件。

  --pct-motion <percent>:动作事件的百分比。动作事件指一个down事件,一系列随机事件,然后一个up事件。

  --pct-trackball <percent>:轨迹事件的百分比。轨迹事件由一个或多个移动组成,有时伴随点击事件。

  --pct-nav <percent>: 基本导航事件的百分比。导航事件就是方向键,上下左右。

  --pct-majornav <percent>:主要导航事件的百分比。这些导航事件通常引发图形界面中的动作,如5-way键盘的中间按键,回退按键,菜单按键。

  --pct-syskeys <percent>:系统按键事件的百分比。这些事件由系统保留,如Home、Back、Start、Call、End Call及音量控制键。

  --pct-appswitch <percent>:启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。

  --pct-flip <percent>:调整键盘翻转事件的百分比。

  --pct-anyevent <percent>:  调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

九.实际应用例子

—  adb shell monkey -p com.soufun.aos -v -v -v --ignore-crashes --ignore-timeouts --monitor-native-crashes --pct-touch 30 --pct-motion 30 --pct-trackball 30 --pct-nav 10 --throttle 500 1000 >d:\monkeyresult.txt
 
—  注意:
     事件次数一定放在最后,否则次数后的设置不生效。
—     将生成的日志信息发送到文本文件中保存,便于搜索错误信息。

十.Monkey工具优缺点
  优点:

    简单、易用,可以快速对程序包进行压力测试。

    无需编码。

    设置项丰富。

—  缺点:

    测试对象只针对程序包。

    发现的问题进行定位较难。

    发送的是随机事件流,不能自定义。

Monkey基础的更多相关文章

  1. 【Monkey】Monkey基础概念

    1.什么是Monkey? 发送伪随机用户事件的命令 2.Monkey在哪? 在手机系统里 3.什么是ADB? 4.MonkeyScript 一组可以被Monkey识别的命令集合,可以完成重复固定的操作 ...

  2. monkey基础学习

    原文地址https://blog.csdn.net/beyond_f/article/details/78543070 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手 ...

  3. Monkey基础命令

    最近一直在看关于自动化测试的文章和工具,这是之前学习monkey的一些知识,想总结一下,方便以后查看,当然也可以提供一些参考.monkey 适合做压力测试,我们可以发送命令让它自己运行,并且指定运行动 ...

  4. monkey基础知识(二)

  5. monkey基础使用教程,如何安装和monkey分析日志

    1.概念 什么是monkey,monkey的作用是什么? Monkey是Android自身提供的,可以通过adb shell模拟用户行为,发送一些伪随机用户事件到目标设备上. Monkey和它的直接意 ...

  6. 使用Monkey对apk做稳定性测试

    认识Monkey 官方文档:https://developer.android.com/studio/test/monkey.html 什么是Monkey? Monkey是Android中的一个命令行 ...

  7. 移动测试基础—adb、monkey命令

    最近打算把移动测试相关的知识总结一下,先从基础开始吧,总结一下adb.monkey命令 adb常用命令总结 adb / adb -help 使用帮助 adb devices 查看连接到电脑的设备 ad ...

  8. java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E

    21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...

  9. Android自动化测试基础知识——MONKEY测试工具(转的)

    本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试.接下来会对android自动化测试工具和方法做一个专题研究. 第一篇介绍monkey测试工具. 1 自动化测试背景 ...

随机推荐

  1. 10天学会phpWeChat——第五天:实现新闻投稿功能

    在前几讲里,我们逐渐实现了自己小模块的新闻列表展示.新闻详情展示功能,现在您已经初步有能力开发一个phpWeChat小模块了,本文将在已开发的hello world模块基础上,增加一个新的功能--新闻 ...

  2. Mac系统终端命令行不执行命令 总出现command not found解决方法

    配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是:  source .bas ...

  3. Character类的2个定义大小写方法以及charAt(int index)方法

    API文档charAt(int index)是这样定义的: charAt(char index):Returns the char value at the specified index.在指定的索 ...

  4. HTML中strong与b,em与i标签的区别

    先看效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  5. 为什么使用 Redis及其产品定位

    摘自:http://www.infoq.com/cn/articles/tq-why-choose-redis 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储 ...

  6. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  7. 常见jquery插件

    1.JQuery Tooltipster 2.Bootstrap 3.jQuery UI 1.10

  8. UNIX历史和标准

    1969年,bell实验室 Ken Thompson在小型机上首次实现了UNIX系统 1979年,加州伯克利分校发布了UNIX发布版--BSD, 随着AT&T不在对电信市场形成垄断,该公司被允 ...

  9. HTML元素事件

    事件触发模型 简要说明 onclick 鼠标单击链接 ondbclick 鼠标双击链接 onmousedown 鼠标在链接的位置按下 onmmouseout 鼠标移出链接所在的位置 onmouseov ...

  10. agile/scrum 如果一切都从解放前开始

    一个非常珍贵的机会,聚集了公司很多牛人,进行了一场发人深省的讨论.有一个话题我想拿出来和他家分享一下我的看法. 越来越不舒服的站会 站会是每天都在固定的时间.地点,大概持续15分钟左右(我们的小组都比 ...