此篇笔记,记录了API中,对monkey用法的说明,基于Android Studio 2.2.3。

Monkey是一个运行在Android模拟器或者Android设备上的程序,通过使用monkey,应用程序可以模拟一系列的用户操作,例如点击、触摸、手势等等,同时也可以进行系统层面的操作。我们可以使用Monkey进行对app的压力测试,通过一种随机的但易于重复的方式。

综述:

Monkey是一个命令行工具,因此使用Monkey需要借助adb shell。

Monkey的使用需要输入许多的参数和选项,它们主要可以分为以下4种类型:

  • 基本配置选项,例如:设置尝试操作事件的数量
  • 约束配置参数,例如:用于测试的特定的包名
  • 事件的类型和频率
  • 调试选项

当Monkey运行时,它会生成事件并发送给系统。同时它也会观察系统在测试下的表现,并且侧重于检测以下三种情况的发生:

  • 如果你限制了Monkey在一个或多个特定的包中运行,那么它会监测所有导向其他包的尝试,并阻止这些尝试。
  • 如果你的应用崩溃了,或者捕获了任何没有处理的异常,Monkey会停止并报告这些错误。
  • 如果你的应用失去响应,Monkey会停止并报告这些错误。

Monkey的基本用法:

Monkey使用时需要连接模拟器或者设备,相关的命令行可以通过脚本或命令行工具执行,基础的用例如下:

  1. $ adb shell monkey [options]<event-count>

如果不输入任何特定参数的话,Monkey会进入quiet mode,这是会发送操作到目标设备上的所有已安装app。

标准的命令行用法如下,以下代码会打开特定的应用并发送500个伪随机事件:

  1. $ adb shell monkey -p your.package.name -v 500

命令参数列表:

下面的表格列出了你可以在Monkey中使用的所有参数:

目录 选项 描述
通用 –help 打印简单的参考用法(表格中可能会将双横线显示为长横线,使用时需注意)
  -v 命令中的每个 -v 将增加报告的详细程度。
级别0(默认值)提供了除测试启动、完成和最终结果之外的很少信息;
级别1提供了测试运行时的更多详细信息,例如发送到活动的各个事件;
级别2提供了更详细的设置信息,例如选中或未被选中的用于测试的活动。
事件 -s <seed> 种子可以标记伪随机数生成器。如果使用相同的种子值重新运行Monkey,它将生成相同的伪随机事件序列。
  –throttle <ms> 用于在事件之间插入延迟
  –pct-touch
<percent>
调整触摸时间的百分比,相应的,可以将touch改为motion:滑动事件;pinchzoom:二指缩放事件;
trackball:轨迹时间,随机移动和点击;rotation:屏幕旋转事件;
nav:基本导航事件,例如上下左右的方向输入;majornav:主要导航事件,包括菜单键,返回键等;
syskeys:系统按建;
appweitch:启动activity的百分比,在随机间隔后,调用startactivity方法尽可能启动该package下所有activity;
anyevent:其他类型的事件
约束 -p
<allowed-package>
指定包名,需要注意,每个p选项只能指定一个包名,如果需要测试多个包,需要使用多个p选项
  -c
<main-category>
 
调试 –dbg-no-events 设置此选项,Monkey将执行初始启动,进入一个测试Activity,不会再进一步生成事件。
为了得到最佳结果,可以把它与-v、一个或几个包约束,以及一个保持Monkey运行30秒或更长时间的
非零值结合起来,从而提供一个监控应用程序所调用的包之间的转换的环境。
  –hprof 设置此选项,将会生成Monkey执行前后的内存快照,存放于data/misc目录,
可以用来监控内存泄漏,但由于内存快照文件较大,需小心使用
  –ignore-crashes 出现crash暂不退出
  –ignore-timeouts 出现timeout暂不退出,例如application not responding
  –ignore-security
-exceptions
出现许可错误暂不退出,例如启动一个需要某些许可的Activity
  –kill-process
-after-error
通常,当Monkey由于错误而停止时,出错的应用汇继续运行。
设置此选项,会通知系统停止发生错误的进程
  –monitor-native
-crashes
监视并报告Android系统中本地代码的崩溃事件
  –wait-dbg 停止执行Monkey,直到有调试器和它相连接

以上为Android官方文档中给出的Monkey命令介绍,部分命令由于自己使用较少,翻译时参考了《腾讯Android自动化测试实战》一书中的内容,今后随着自己对Android测试的深入了解会继续补充修改。在该书中,还给出了三个隐藏类参数,分别为–pkg-blacklist-file<黑名单包>;–pkg-whitelist-file<白名单包>;-f <脚本文件>。

前两个命令很容易理解,可通过文档来记录黑名单或白名单包,第三个命令可执行用户自定义的脚本文件。

Monkey Android API 翻译的更多相关文章

  1. 【Android Api 翻译3】android api 完整翻译之Application Fundamentals (学习android必须知道的)

    Android应用程序是用Java编程语言编写的.Android SDK工具把应用程序的代码.数据和资源文件一起编译到一个Android程序包中(这个程序包是以.apk为后缀的归档文件),一个Andr ...

  2. 【Android Api 翻译1】Android Texting(2)Testing Fundamentals 测试基础篇

    Testing Fundamentals The Android testing framework, an integral part of the development environment, ...

  3. 【Android Api 翻译4】android api 完整翻译之Contacts Provider (学习安卓必知的api,中英文对照)

    Contacts Provider 电话簿(注:联系人,联络人.通信录)提供者 ------------------------------- QUICKVIEW 快速概览 * Android's r ...

  4. 【Android Api 翻译2】Android Testing(1) 浅尝Android测试的奥秘

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 仅供学习和交流使用,翻译不好勿喷,请只摘除不合适的地方 Testing The Android fram ...

  5. android api 中文 (73)—— AdapterView

    前言 本章内容是android.widget.AdapterView,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎大家访问他的博客:http://androi ...

  6. 【转】Android API 中文(14) —— ViewStub

    用一个XML源填充view.inflate(上下文对象,资源文件Id,父窗口组一般为null): 原文网址:http://www.cnblogs.com/over140/archive/2010/10 ...

  7. Android API 中文(77)——AdapterView.OnItemSelectedListener

    前言 本章内容是android.widget.AdapterView.OnItemSelectedListener,版本为Android 2.3 r1,翻译来自"cnmahj",欢 ...

  8. Android API 中文(76)——AdapterView.OnItemLongClickListener

    前言 本章内容是android.widget.AdapterView.OnItemLongClickListener,版本为Android 2.3 r1,翻译来自"cnmahj", ...

  9. android api 中文 (75)—— AdapterView.OnItemClickListener

    前言 本章内容是android.widget.AdapterView.OnItemClickListener,版本为Android 2.3 r1,翻译来自"麦子",欢迎大家与他交流 ...

随机推荐

  1. MVC 使用 Ueditor富文本编辑器

    一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...

  2. spring定时器,当遇见半小时的情况时

    spring定时器遇见半小时的解决方法(这里只提供注解方式) @Scheduled(fixedRate=6000000)//每隔100分钟执行方法 fixedRate的值是毫秒

  3. mysql复制一列到另一列

    mysql复制一列到另一列   UPDATE 表名 SET B列名=A列名 需求:把一个表某个字段内容复制到另一张表的某个字段. 实现sql语句1: 复制代码代码如下: UPDATE file_man ...

  4. java: Runtime和Process调用本机程序

    java: Runtime和Process调用本机程序 调用纸牌程序,Process用来销毁程序 import java.io.IOException; public class RunTimeDem ...

  5. contiki-process结构体

    struct process { struct process *next; #if PROCESS_CONF_NO_PROCESS_NAMES #define PROCESS_NAME_STRING ...

  6. unity5.3 安卓广告插件打包出错的理解

    今天打包带广告插件的安卓包,出现了问题 ,上网找了很多解决的办法.整理一下. 1,有的说法是unity5的BUG  因为同一个项目 用unity4.6打包就没问题 到5就出问题,当然 姑且可以这么认为 ...

  7. SharePoint Foundation 2013 安装出错

    前段时间装foundation 13的时候遇到这个问题.怀疑是Office的问题.然后找了一些资料,问题得到了解决 解决方案: 运行 regedit,删除注册表下的office的LicenseType ...

  8. G:数字三角形

    总时间限制: 1000ms 内存限制: 65536kB描述73   88   1   02   7   4   44   5   2   6   5 (图1) 图1给出了一个数字三角形.从三角形的顶部 ...

  9. Asp.net MVC过滤器的使用

    当我们网站开发到这里的时候,我们虽然已经实现了用户登录信息,用户不经过登录信息,比如:http://localhost:6941/UserInfo/Index如果我这样访问的话,他是可以进行操作的,所 ...

  10. jquery 中 $.map 的使用方法

    $.map(data,function(item,index){return XXX}) 遍历data数组中的每个元素,并按照return中的计算方式 形成一个新的元素,放入返回的数组中 ,,], f ...