什么是Monkeytest?

monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键灯操作来对设备上的程序进行压力测试,检测程序发生异常的时间。

monkeytesting,也有人叫做搞怪测试,就是用一些稀奇古怪的操作方式去测试被测试系统,以测试系统的稳定性。用毫无规律的指令或操作使用被测系统,观察系统的稳定性和容错性。

Monkey程序介绍

1. Monkey程序是由Android系统自带的,使用java语言写成的,在Android文件系统中的存放路径是:/system/framework/monkey.jar

2. Monkey.jar程序是由一个名为“monkey”的shell脚本来启动执行。shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

这样就可以在CMD窗口中执行:adb shell monkey{+命令参数}来进行monkey测试了。

Monkey命令的简单帮助

获取Monkey命令自带的简单帮助,在CMD中执行命令:adb shell monkey -help

Monkey命令参数介绍

查看终端设备中所有的包,在CMD窗口中执行以下命令:

adb shell

cd data/data (这里路径可能根据不同厂商手机,App放置的位置不一样)

ls

1. 参数:-p

参数-p用于约束限制。用此参数指定一个或多个包(package,即App)。

指定包之后,Monkey将只允许系统启动指定的App。如果不指定包,Monkey将允许系统启动设备中的所有App。

指定一个包:adb shell monkey -p com.eavoo.qws 100  【说明:com.eavoo.qws为包名;100是事件计数(即让monkey程序模拟100次随机用户事件】

指定多个包:adb shell monkey -p com.eavoo.qws -p com.eavoo.ble 100

不指定包:adb shell monkey 100  【Monkey随机启动App并发送100个随机事件】

2. 参数:-v

参数-v用于指定反馈信息级别(信息级别就是日志的详细程度),共分为3个级别,分别对应的参数表示如下:

日志级别:Level0  【说明:缺省值,仅提供启动提示、测试完成、测试结果等少量信息】

  示例:adb shell monkey -p com.eavoo.qws -v 100)

日志级别:Level1  【说明:提供较为详细的日志,包括每个发送到activity的事件信息】

   示例:adb shell monkey -p com.eavoo.qws -v -v 100

日志级别:Level2   【说明:最详细的日志,包括了测试中选中或未选中的activity信息】

  示例:adb shell monkey -p com.eavoo.qws -v -v -v 100

3. 参数:-s

参数-s用于指定伪随机数生成器的seed值,如果seed相同,则两次monkey测试所产生的时间序列也是相同的。

  示例:

monkey测试1:adb shell monkey -p com.eavoo.qws -s 10 100

monkey测试2:adb shell monkey -p com.eavoo.qws -s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列是伪随机的。

4. 参数:--throttle<毫秒>

用于指定用户操作(即事件)间的延时,单位是毫秒。

  示例:adb shell monkey -p com.eavoo.qws --throttle 3000 100

5. 参数:--ignore-crashes

用于指定当应用程序奔溃时(force&close错误),monkey是否停止运行。

如果使用此参数,即使应用程序奔溃,monkey依然会发送事件,指导事件计数完成。
     示例1:adb shell monkey -p com.eavoo.qws -ingnore-crashes 100

  测试过程中,即使qws程序奔溃,monkey依然会继续发送事件指导事件计数达到100为止。

  示例2:adb shell monkey -p com.eavoo.qws 100

  测试过程中,如果qws程序奔溃,monkey将会停止运行。

6. 参数:--ignore-timeouts

用于指定当应用程序发生ANR(application no responding)错误时,monkey是否停止运行。

如果使用此参数,即使应用程序发生ANR错误,monkey依然会发送事件,直到事件计数完成。

7. 参数:--ingore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),monkey是否停止运行。

如果使用此参数,即使应用程序发生许可错误,monkey依然会发送事件,直到事件计数完成。

8. 参数:--kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。

如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态。(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)

9. 参数:--monitor-native-crashes

用于指定是否监视并报告应用程序发生奔溃的本地代码。

10. 参数:--pct- {+事件类别} {+事件类别百分比}

用于指定每种类别事件的数目百分比(在monkey事件序列中,该类事件数目占总事件数目的百分比)。

其他待添加……

*** 关于什么是shell *** 这里有篇简单易懂的文章,来看看:http://blog.csdn.net/xiebaochun/article/details/29558417

MonkeyTest简单实用介绍的更多相关文章

  1. Tesseract OCR简单实用介绍

    做字符识别,不能不了解google的Tesseract-OCR,但是如何在自己的工程中使用其API倒是语焉不详,官网上倒是很详尽地也很啰嗦地介绍如何重新编译生成适合自己平台的lib和dll,经过近些天 ...

  2. iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信

    一.iOS中的多线程 多线程的原理(之前多线程这块没好好学,之前对多线程的理解也是错误的,这里更正,好好学习这块) iOS中多线程的实现方案有以下几种 二.NSThread线程类的简单实用(直接上代码 ...

  3. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  4. knockout简单实用教程2

    在上一篇文章中简单了介绍了下什么ko(后文中都已ko来代替knockout.js)和一些简单的ko的使用方法下面我将介绍在实际的项目中常用到的几种绑定方式和方法. 在开始之前先拿一个dome来回顾下k ...

  5. 最简单实用的JQuery实现banner图中的text打字动画效果!!!

    下面,就让小博详细介绍如何实现上面GIF实现的banner图中的文字动画效果,最简单实用的方法(鉴于代码量较小,就内嵌在一个HTML文件中了): 首先,我们要在header导入一个jQuery,并新建 ...

  6. 简单实用的CSS网页布局中文排版技巧

    由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单 ...

  7. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  8. .NET 跨平台RPC框架DotNettyRPC Web后台快速开发框架(.NET Core) EasyWcf------无需配置,无需引用,动态绑定,轻松使用 C# .NET 0配置使用Wcf(半成品) C# .NET Socket 简单实用框架 C# .NET 0命令行安装Windows服务程序

    .NET 跨平台RPC框架DotNettyRPC   DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standar ...

  9. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

随机推荐

  1. 函数图象(N=x+y*i)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Tastypie 学习笔记

    Tastypie是什么? 运行于Python环境中的 Django web服务器下的 Restful 风格API接口  (python 类库) 1.安装下面环境或者依赖包到python库(安装过程类似 ...

  3. Codeforces558E A Simple Task(线段树)

    题目 Source http://codeforces.com/problemset/problem/558/E Description This task is very simple. Given ...

  4. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  5. JS常用属性

    /*控制台输出*/ console.log("内容") /*控制台警告*/ console.warn("内容") /*错误提示*/ console.error( ...

  6. scrapy爬虫笔记(三)------写入源文件的爬取

    开始爬取网页:(2)写入源文件的爬取 为了使代码易于修改,更清晰高效的爬取网页,我们将代码写入源文件进行爬取. 主要分为以下几个步骤: 一.使用scrapy创建爬虫框架: 二.修改并编写源代码,确定我 ...

  7. jquery.UI.tabs

    今天对jquery UI的tabs进行了进一步的了解,目的是想把死板的切换效果变得动感点,不过经过这进一步的了解,发现它并不合适或都说并不能实现我想要的效果,我想要的效果就是类似淘宝商城的banner ...

  8. Java抽象类与接口的区别

    很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...

  9. *HDU 1385 最短路 路径

    Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  10. js--敏感词屏蔽

    <!doctype html><html><head><meta charset="utf-8"><meta name=&qu ...