Monkey基础
一.Monkey工具简介
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
特性:
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.如下显示则成功。

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



找到出现问题位置后,查看其上边几个事件,手动复现该问题,分析产生原因
-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>: 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
九.实际应用例子
十.Monkey工具优缺点
优点:
简单、易用,可以快速对程序包进行压力测试。
无需编码。
设置项丰富。
测试对象只针对程序包。
发现的问题进行定位较难。
发送的是随机事件流,不能自定义。
Monkey基础的更多相关文章
- 【Monkey】Monkey基础概念
1.什么是Monkey? 发送伪随机用户事件的命令 2.Monkey在哪? 在手机系统里 3.什么是ADB? 4.MonkeyScript 一组可以被Monkey识别的命令集合,可以完成重复固定的操作 ...
- monkey基础学习
原文地址https://blog.csdn.net/beyond_f/article/details/78543070 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手 ...
- Monkey基础命令
最近一直在看关于自动化测试的文章和工具,这是之前学习monkey的一些知识,想总结一下,方便以后查看,当然也可以提供一些参考.monkey 适合做压力测试,我们可以发送命令让它自己运行,并且指定运行动 ...
- monkey基础知识(二)
- monkey基础使用教程,如何安装和monkey分析日志
1.概念 什么是monkey,monkey的作用是什么? Monkey是Android自身提供的,可以通过adb shell模拟用户行为,发送一些伪随机用户事件到目标设备上. Monkey和它的直接意 ...
- 使用Monkey对apk做稳定性测试
认识Monkey 官方文档:https://developer.android.com/studio/test/monkey.html 什么是Monkey? Monkey是Android中的一个命令行 ...
- 移动测试基础—adb、monkey命令
最近打算把移动测试相关的知识总结一下,先从基础开始吧,总结一下adb.monkey命令 adb常用命令总结 adb / adb -help 使用帮助 adb devices 查看连接到电脑的设备 ad ...
- java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E
21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...
- Android自动化测试基础知识——MONKEY测试工具(转的)
本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试.接下来会对android自动化测试工具和方法做一个专题研究. 第一篇介绍monkey测试工具. 1 自动化测试背景 ...
随机推荐
- LeetCode---Stack && Heap
402. Remove K Digits 思路:一次判断字符若比栈顶字符大则入栈,若小则pop,同时k--,直到k为0,注意最终k没有减为0或者中途栈为空或者最终结果前面带0的情况 public St ...
- JVM内存模型和性能优化 转
JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型: 多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...
- mybatis 与 缓存
首先从配置文件说起,有个cacheEnabled的配置项,当设置为true时(默认就是true),Session就会用一个CachingExecutor来包装我们的Executor实例: public ...
- [IDEA] IDEA 集成PlantUML
在windows下,idea 集成plantuml:1. 首先安装好 graphviz,官网地址:http://www.graphviz.org/Download..php,下载合适的包即可.wind ...
- Redis的AOF是怎么实现的
今天通过阅读AOF的实现代码,牵出了许多本来不是必须的话题,也都记下来先: Redis自己搞了一套事件循环机制: http://itindex.net/detail/26944-redis-%E4%B ...
- <<redis设计和实现>>读书笔记
redis如何实现主从同步的高效率?? 主从复制的同步有一个命令数据的同步文本,然后利用两个不同服务器的偏移量来进行进行同步,避免每次都是全部同步(并非会保存所有的命令数据,而是会有一个缓冲区(比如1 ...
- Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)
public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry< ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- opencv2.4.9在ubuntu(树莓派)上安装
参考原文:https://my.oschina.net/u/1757926/blog/293976 1. 先从sourceforge上下载OpenCV的源码 http://jaist.dl.sourc ...
- 安卓 JDK、SDK、ADT 区别
问题一:android软件开发是用java语法,但是为什么开发环境还需要jdk,有android sdk不就可以了吗? 答: 我知道写字要用笔,但为什么还需要笔芯(墨水),有笔杆不就可以了吗? 问题二 ...