MonkeyTest简单实用介绍
什么是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简单实用介绍的更多相关文章
- Tesseract OCR简单实用介绍
做字符识别,不能不了解google的Tesseract-OCR,但是如何在自己的工程中使用其API倒是语焉不详,官网上倒是很详尽地也很啰嗦地介绍如何重新编译生成适合自己平台的lib和dll,经过近些天 ...
- iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信
一.iOS中的多线程 多线程的原理(之前多线程这块没好好学,之前对多线程的理解也是错误的,这里更正,好好学习这块) iOS中多线程的实现方案有以下几种 二.NSThread线程类的简单实用(直接上代码 ...
- 简单实用的PHP防注入类实例
这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注 ...
- knockout简单实用教程2
在上一篇文章中简单了介绍了下什么ko(后文中都已ko来代替knockout.js)和一些简单的ko的使用方法下面我将介绍在实际的项目中常用到的几种绑定方式和方法. 在开始之前先拿一个dome来回顾下k ...
- 最简单实用的JQuery实现banner图中的text打字动画效果!!!
下面,就让小博详细介绍如何实现上面GIF实现的banner图中的文字动画效果,最简单实用的方法(鉴于代码量较小,就内嵌在一个HTML文件中了): 首先,我们要在header导入一个jQuery,并新建 ...
- 简单实用的CSS网页布局中文排版技巧
由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单 ...
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- .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 ...
- 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍
GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...
随机推荐
- Hadoop 大数据第一天
大数据第一天 1.Hadoop生态系统 1.1 Hadoop v1.0 架构 MapReduce(用于数据计算) HDFS(用于存储数据) 1.2 Hadoop v2.0 架构 MapReduce(用 ...
- Js-知识小总结
1.给标签价 class属性的时候,记住是 ClassName, 例如:var oImg = document.getElementById('img1'); 要给这个对象价class属性 oimg. ...
- 理解callback function in javascript
以下内容主要摘自[1,2] (1)In javascript, functions are first-class objects, which means functions can be used ...
- 【CentOS】压缩打包
一.gzip [-d][-1-9][filename] -d 解压 -[1-9] 压缩等级(默认为6) zcat filename.gz 查看压缩文件 最小化安装centOS是没有安装bzip2的 ...
- jquery Ajax 案例
html <div class="data"><ul></ul></div> <div id="load" ...
- java 反射实践
/** * * @author yuxg */ import coreJava.javaFile; import javaClassStudy.Student; import javaClassStu ...
- linux(centos)搭建SVN服务器
安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversion查看安装位置,如下图: 我们知道svn在bin目录下生成了几个二进制文件. 输入 ...
- SpringMVC介绍之Validation
对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...
- GO语言练习:反射
列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1.简单类型反射 1.1)代码 package main import ( "fmt" & ...
- 用maven配置springboot+freemarker
1.创建项目 直接点下一步 原因: 不勾选 Create from archetype,是项目创建的骨架的时候,由于不知道什么原因就卡住了,一直在刷新 2.创建之后完成之后 添加依赖 <pa ...