什么是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. react native中对props和state的理解

    最近使用react native这个新的技术做完一个项目,所以赶紧写个博客巩固一下. 今天我想说的是props和state,当然这是我个人的理解,如果有什么不对的地方,望指正. 首先我先说说props ...

  2. Hibernate和IBatis对比

    [转自]http://blog.csdn.net/ya2dan/article/details/7396598 项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也 ...

  3. SPOJ : DIVCNT2 - Counting Divisors (square)

    设 \[f(n)=\sum_{d|n}\mu^2(d)\] 则 \[\begin{eqnarray*}\sigma_0(n^2)&=&\sum_{d|n}f(d)\\ans&= ...

  4. 如何将U盘内文件拷入VMware Linux CentOS6.5虚拟机

    之前在Linux CentOS下安装Oracle这篇随笔中我提到要将下载到的安装文件解压缩 那么,问题来了! 如何把下载到的文件拷入虚拟机中呢? 我是这样做的: 1.将下载到的文件拷入U盘 2.以ro ...

  5. onselectstart="return false"

    以前在做图片滚动时,在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在查资料时,讲到了这个问题, 试了一下,不错,解决了问题. IE及Chrome下的方法一样,对相应的元素 ...

  6. HDU1010 DFS+剪枝

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  7. 二、jquery选择器

    在jquery库中,可以通过选择器实现DOM元素快捷选择这一重要的核心功能. 1.选择器的优势 (1)代码更简单 由于在jquery库中,封装了大量可以通过选择器直接调用的方法或函数,使编写代码更加简 ...

  8. Learn JavaScript(面向对象的程序设计01)

    最新更新请访问: http://denghejun.github.io JavaScript与OOP   JavaScript作为web前端一种重要的脚本技术,已被大多开发人员所熟知.compare ...

  9. 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏

    最近互联网招聘平台拉勾网在五一期间推出个“最难面试的IT公司”代码挑战活动,评选出了5个最难面试的IT公司,即:ThoughtWorks.Google.Unisys.Rackspace.Cypress ...

  10. Unity学习疑问记录之Awake和Update

    Awake() 当一个脚本实例被载入时Awake被调用. Awake用于在游戏开始之前初始化变量或游戏状态.在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与 ...