Android稳定性测试工具Monkey的使用
综述
Monkey是一个命令行工具,它可以运行在我们的模拟器或者设备当中。它可以发送一些伪随机的用户事件流,例如点击、触摸、手势等。我们能够使用Monkey工具来对我们所开发的应用进行压力测试。Monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。
Monkey程序介绍
Monkey是Android自带的系统工具,是由java语言编写。它在Android文件系统存放的路径是:/system/framework/monkey.jar,启动monkey.jar的shell脚本文件在Android文件系统存放的路径为:/system/bin/monkey。打开这个monkey文件我们可以看一下这个脚本文件很简单。

我们可以看到它调用的是com.android.commands.monkey.Monkey包。
Monkey常用命令
下面我们就来执行这个monkey脚本。
我们执行如下命令:

这时候,monkey将义无反顾的模式进行启动,并把事件任意发送到安装在目标环境下的全部包。运行结果如下所示:

这时候可以看到monkey并没有运行起来,只是显示了usage,这是因为少了一个重要的参数,这是指发送的事件数。如果我们需要发送50个随机事件,执行如下命令:

这时候我们可以看到手机已经疯狂的运行起来了。monkey的基本语法为:

Monkey的option操作都是根据具体需求设定的,主要分为常规类,事件类,约束类和调试类。下面就对这些命令进行说明:
常规类:
--help
显示monkey参数帮助信息usage
-v
打印日志信息,每个-v将增加反馈信息的级别。-v越多日志信息将会越详细,不过目前最多支持三个-v。
Level0:一个-v,除启动提示、测试完成和最终结果之外,提供较少信息。
Level1:两个人-v,提供较为详细的测试信息,如逐个发送到Activity的时间。
Level2:三个-v,提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
事件类:
-s <seed>
伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生成相同的时间序列。
--throttle <milliseconds>
后面接时间,单位为毫秒,表示时间之间的固定延时(即执行每一个指令的间隔时间),若不接这个选项,monkey则不会延时。
--pct—touch<percent>
后面接触摸事件的百分比。(触摸时间是一个down-up事件,它发生在屏幕上的某单一位置)
--pct—motion<percent>
后面接动作事件的百分比。(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件的组成)。
--pct—tracball<percent>
后面接轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
--pct—nav<percent>
后面接“基本”导航事件百分比(导航事件主要来自方向输入设备的上、下、左、右事件)。
--pct—majornav<percent>
后面接“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5—way键盘中的中间按键、回退按键、菜单按键)。
--pct—syskeys<percent>
后面接“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、StarCall、EndCall及音量控制键)。
--pct—appswitch<percent>
后面接启动Activity的百分比。在随机间隔里,Monkey将执行一个starActivity()调用,作为最大程度覆盖中全部Activity的一种方法。
--pct—anyevent<percent>
调整其他类型事件的百分比。它包含了所有其他类型的事件,如:按键、其他不常用的设备按钮等等。
—p<allowed—package—name>
如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其他包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个—p选项,每个—p选项只能用于一个包。
-c<main—category>
如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity:lntent.CATEGORY_LAUNCHER或lntent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别。
调试类
--dbg-no-events
设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。
--hprof
设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb),所以要小心使用它。
--ignore-crashes
通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
--ignore-timeouts
通常,当应用程序发生任何超时错误
(如“Application Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成)
--ignore-security-exceptions
一条常用的Monkey命令
adb shell monkey -v -v -v -p [PackageName] --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-native-crashes --throttle 1000 100000 > monkey.txt
执行这条命令后会在当前文件下面生成一个名为monkey.txt的日志文件,我们可以通过搜索exception和ANR来找到monkey测试中所出现的Crash和ANR。
总结
在这里介绍了Monkey的使用,对于我们的应用通过monkey进行压力测试,也能够发现众多的ANR以及Crash。对于Monkey也有一定缺点的,它是不支持截屏、录制、回放等操作的。
Android稳定性测试工具Monkey的使用的更多相关文章
- Android压力测试工具——Monkey
Android压力测试工具——Monkey Monkey是运行在模拟器上和真机设备上的一段程序,它会产生用户事件的一系列伪随机流,比如点击.触摸.手势,还有很多系统级别的事件.Monkey通常是用来做 ...
- Android 压力测试工具Monkey
原文地址http://www.syhm52.com/tools/17.html 一.Monkey定义探索软件测试工具有哪些,本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试 ...
- Monkey Android app稳定性测试工具之Monkey使用教程
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客 QQ:1033553122 由于篇幅问题,仅提供百度网盘下载链接: Android app稳定性测试工具之Monk ...
- Android studio测试软件——Monkey学习及运用
Android studio测试软件——Monkey学习及运用 在第十五周的个人博客上,王老师安排我们根据最终的团队大作业所用的软件(Android studio)进行软件测试的介绍,而我选择的是基于 ...
- 推荐支付宝 Android 专项测试工具SoloPi
推荐支付宝 Android 专项测试工具SoloPi 1 介绍 SoloPi是一个无线化.非侵入式的Android自动化工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝 ...
- Android App 测试工具及知识大集合
简介: 作者从事测试将近11年,有8年的团队管理经验,经历了上市公司,外包,日企,股份制公司的企业文化洗礼,擅长测试团队的组建,流程建立,改造,质量体系建建设,有三次经历在不同企业文化从"0 ...
- 【Android】自动测试工具 Monkey
前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...
- monkey测试===Android测试工具Monkey用法简介(转载)
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey ...
- android app 压力测试工具-monkey tool
一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是A ...
随机推荐
- angular 数据内容有重复时不显示问题
<body ng-app="app"> <div ng-controller="myctl"> <ul> <li ng ...
- CF464C-Substitutes in Number
题意 开始给出一个长为\(n\)的数字串,有\(m\)次操作按顺序执行,每次把当前数字串中的某一个数码替换成一个数字串\(t\)(可以为空或多位),最后问操作结束后的数字串十进制下模\(10^9+7\ ...
- bzoj2013[CEOI2010] A huge tower
题意 有N(2<=N<=620000)快砖,要搭一个N层的塔,要求:如果砖A恰好在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 1000000009的值 分析 ...
- 【Java】CSVUtils
package com.msk.ds.logic; import java.io.*; import java.util.List; /** * Created by Administrator on ...
- [AT2363] [agc012_c] Tautonym Puzzle
题目链接 AtCoder:https://agc012.contest.atcoder.jp/tasks/agc012_c 洛谷:https://www.luogu.org/problemnew/sh ...
- [HNOI2011]XOR和路径 概率期望 高斯消元
题面 题解:因为异或不太好处理,,,因此按位来算,这样最后的答案就是每一位上的值乘对应的权值再求和.本着期望要倒退的原则,,,我们设$f[i]$表示从$i$到$n$,xor和为1的概率.那么观察$xo ...
- ZOJ3899 State Reversing 【线段树 + NTT】
题目链接 ZOJ3899 题解 比较累,做一道水题 还被卡常= = 我在\(ZOJ\)交过的两道\(NTT\)都被卡常了.. 哦,题意就是求第二类斯特林数,然后线段树维护一下集合数量就可以了 #inc ...
- linux系统启动自动激活网卡的解决方法
linux每次启动的时候网卡都需要激活才能上网,实在是很麻烦. 上网找了找资料,最后是这样解决的: # vi /etc/sysconfig/network-scripts/ifcfg-eth0 ...
- 【单调栈】【CF5E】 Bindian Signalizing
传送门 Description 给你一个环,环上有一些点,点有点权.定义环上两点能相互看见当且仅当两点间存在一个弧使得弧上不存在一个点的点权大于着两个点.求一共有多少个点能互相看到 Input 第一行 ...
- Hdu5226 Tom and matrix
Tom and matrix Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...