monkey命令大全
一、认识monkey
Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中;
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试;
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
Monkey特点:
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
二、Monkey的基本用法
1.查看帮助
adb shell monkey 或者adb shell monkey -help
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT
2.参数 -p ,比如:
adb shell monkey -p 包名 -v 500
-p参数后面写上需要测试的包名,则可轻松跑通一条实例
3.参数: -v
adb shell monkey -p 包名 -v 500
-v 是描述日志级别,用于跑monkey输出日志
日志级别共有三级,Level0:-v 、Level1:-v -v、Level2:-v -v -v
4.参数: -s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
Monkey 1:adb shell monkey -p 包名 -s 10 100
Monkey 2:adb shell monkey -p 包名 –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。
5.参数: --throttle<毫秒>,操作事件间的时延,单位是毫秒;
adb shell monkey -p cn.emoney.acg --throttle 5000 100
6.忽略报错参数,一般来说,不设置参数的话,monkey遇到报错就会停止,所以加上一些忽略参数,monkey遇到报错时可继续运行。
--ignore-crashes(应用程序崩溃或异常时(crash、exception),继续发送事件信息)
adb shell monkey -p 包名 --ignore-crashes 1000
--ignore-timeouts(在应用程序超时(ANR)的时候,继续发送事件)
adb shell monkey -p 包名 --ignore-timeouts 1000
–ignore-security-exceptions(在应用程序发生许可证错误的时候(认证或证书异常),继续发送事件)
adb shell monkey -p 包名 –ignore-security-exceptions 1000
–ignore-native-carshes(忽略本地代码导致的崩溃)
adb shell monkey -p 包名 –ignore-native-carshes 1000
7.–pct调整事件的百分比,具体如下:
–pct-touch 触摸事件百分比,就是log中down-up事件,发生在屏幕的某一个单一的位置,比如:adb shell monkey -p com.xxxx.xxxx–pct-touch 30 -v 500
–pct-motion 动作事件的百分比
–pct-trackball 轨迹事件的百分比,拖动屏幕
–pct-nav 基本导航事件的百分比,如上下左右键
–pct-majornav 主要导航事件的百分比,如中间键,取消、确定或菜单引发的图形接口的动作
–pct-syskeys 系统按键事件,如Home、Back、StartCall、Endcall及音量控制键等
–pct-appswitch 启动Activity的百分比,在随机间隔中,执行一个startActivity()方法调用
–pct-flip 点击事件的百分比
8.输出monkey日志
跑monkey的时候或者想抓程序log导出时,有时会提示:cannot create D:monkeytest.txt: read-only file system
后来发现跟使用使用习惯不一样,一会是先进入adb shell 再用命令,一会是直接命令进入。
进入adb shell后再用命令就会失败~正确方法:退出shell或者执行命令时先不要进shell
adb shell monkey -p com.xxxx.xxxx --ignore-crashes --ignore-timeouts -s 10 -v -v -v 50000 >e:\log.txt
Monkey测试出现错误后,一般的查错步骤为以下几步:
①、找到是monkey里面的哪个地方出错
②、查看Monkey里面出错前的一些事件动作,并手动执行该动作
③、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样--复现
一般的测试结果分析:
①、 ANR问题:在日志中搜索“ANR”
②、崩溃问题:在日志中搜索“Exception” Force Close
9.Monkey测试中的黑名单和白名单
在测试中,因为手机中的一些其他操作可能影响测试结果(例如下拉通知栏),我们可以进行设置一个类似黑名单的东西去屏蔽它,具体命令如下:
adb shell monkey --pkg-blacklist-file /data/ blacklist.txt -v -v--throttle 200 1000000
具体的实现方式是,首先在电脑上建立一个blacklist.txt文件,在这个文件中将要屏蔽的包名一一写进去,然后将这个文件push到手机的data目录下: adb push blacklist.txt /data/,这样就会屏蔽掉这几个包,不去执行它。
和黑名单类似,我们也可以建立一个类似于白名单一样的文件whitelist.txt,只去执行在白名单列表中的包名,详细步骤和黑名单一样。具体命令如下:
adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v --throttle 500 100000
10.停止monkey
跑monkey的过程中,如果想停止monkey时,可以删除pid
adb shell
# ps | grep monkey
#kill pid
monkey命令大全的更多相关文章
- .NET Core dotnet 命令大全
dotnet 命令大全,让你理解dotnet 命令. 本文将以一个实例串起 dotnet 所有命令,让你玩转dotnet 命令. 本篇文章编写环境为windows 10 ,dotnet 命令同样适用于 ...
- monkey之monkey命令详解
四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...
- 【转】Hadoop命令大全
Hadoop命令大全 本节比较全面的向大家介绍一下Hadoop命令,欢迎大家一起来学习,希望通过本节的介绍大家能够掌握一些常见Hadoop命令的使用方法.下面是Hadoop命令的详细介绍. 1.列出所 ...
- monkey命令
介绍: monkey是一个命令行工具,可以运行在Android模拟器里或真实设备中.它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入.触摸屏输入.手势输入等),可以对待测的 ...
- CMD命令大全
有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联. AT 计划在计算机上运行的命令和程序. ATTRIB 显示或更改文件属性. BREAK 设置或清除扩展式 CT ...
- DOS命令大全!
一)MD——建立子目录 1.功能:创建新的子目录 2.类型:内部命令 3.格式:MD[盘符:][路径名]〈子目录名〉 4.使用说明: (1)“盘符”:指定要建立子目录的磁盘驱动器字母,若省略,则为当前 ...
- 黑客攻击常用CMD命令大全
黑客常用命令大全net user heibai lovechina /add 加一个heibai的用户密码为lovechina net localgroup Administrators heibai ...
- Monkey测试4——Monkey命令行可用的全部选项
Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...
- centos 命令大全
文件操作: ls ####查看目录中的文件#### ls -F ####查看目录中的文件#### ls -l ####显示文件和目录的详细资料#### ls -a ...
随机推荐
- java中instanceof的基本使用
java中的instanceof运算符是用于判断对象是否是指定类或这个指定类的子类的一个实例,返回值是布尔类型. 语法: boolean result = object instanceof clas ...
- Java并发编程之程序运行堆栈分析
Java程序运行的堆栈分析 1.JVM运行时数据区 JVM通过加载class文件的数据来执行程序.JVM在运行时会划分不同的区域以存放数据.如下图所示: 线程共享部分:所有线程都能访问这块内存的数据, ...
- 关于绕过cookie 同源策略,和同时向前台返回图片和脚本的解决方案
绕过cookie的同源策略 向前端写入脚本时使用domain来绕过同源策略. 比如 domain= baidu.com .次脚本生成的cookie可以在 *.baidu.com中使用 /// < ...
- 【go进阶】一个简单的go服务器实现
光阴似箭,日月如梭,在昨天我终于拿到了自己忙活了半个月的工资. 据说在7月25日有一颗小行星掠过地球,如果真的撞上来,估计31号我就不是乐呵呵的了,应该是直接没了. 如下的代码运行起来就是一个微型go ...
- PHP Smarty模板的安装
最近开发中用到了PHP中smarty模板..作为一个长久以来的前端,开始学习PHP模板..下面将安装教程分享给大家.. 1. 下载Smarty最新版: http://www.smarty.NET/do ...
- Spring 中的几个常用的钩子接口
1.Aware接口 Awear 这个单词的意思是知道的,所以可以猜想以Awear 结尾的接口意思可以把他知道的东西告诉我们.常用的Awear接口有 ApplicationContextAware和 B ...
- WijmoJS 以声明方式添加 Vue 菜单项
WijmoJS 以声明方式添加 Vue 菜单项 在V2019.0 Update2 的全新版本中,Vue框架下 WijmoJS 的前端UI组件功能得到再度增强. 如今,向wj菜单组件添加项的方法将不限于 ...
- Go语言中的数组(九)
我刚接触go语言的数组时,有点不习惯,因为相对于JavaScript这样的动态语言里的数组,go语言的数组写起来有点不爽. 定义数组 go语言定义数组的格式如下: ]int var 数组名 [数组长度 ...
- (二)Java秒杀项目之实现登录功能
一.数据库设计 CREATE TABLE `miaosha_user` ( `id` ) NOT NULL COMMENT '用户ID,手机号码', `nickname` ) NOT NULL, `p ...
- Mac 安装 Homebrew
为什么要在 MAC 上安装 Homebrew 它干什么用的呢?我们知道在 CentOS 和 Ubuntu 上都有自己的包管理工具,但是在 MAC 上却没有这样类似的管理工具. # CentOS $ y ...