此篇笔记,记录了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. IntrospectorCleanupListener作用

    <!--web.xml--><listener> <listener-class>org.springframework.web.util.Introspector ...

  2. [SoapUI] 在SoapUI里获取Excel中多行数据并存入List

    ArrayList<ArrayList<String>> getCellValuesH( String filePath, String sheetName,int tr1,i ...

  3. php: 不能嵌套try-catch-fnally,否则执行时间过长

    php不能try-catch-fnally里面在嵌套try-catch-fnall,否则本来执行时间不长的程序,会被执行更长时间,这是php的bug吗? 如: try{ 代码块 }catch (\Ex ...

  4. SAP采购订单历史明细报表源代码(自己收藏)

    SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...

  5. ADO.NET 使用通用数据库操作类Database (SQL Server)

    一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...

  6. 使用JavaMail实现发送邮件功能

    package com.dunn.model; import java.util.Properties; import javax.mail.Address; import javax.mail.Me ...

  7. DynamicsCRM中的自动保存

    DynamicsCRM的自动保存功能 在DynamicsCRM2013开始,引入了自动保存功能. 保存一条记录 在新建一条记录的时候, 你必须在左上角手动点击保存按钮.如下图: 当保存完后,会发现,左 ...

  8. MySQL使用技巧收集,持续更新中......

    1.查询时按某一内容为中文的字段,以拼音字母排序: SELECT * FROM game ORDER BY CONVERT(name USING GBK);

  9. .frm,.myd,myi转换为.sql导入数据库

    先说说这几种文件是干什么的: *.frm是描述了表的结构, *.myd保存了表的数据记录, *.myi则是表的索引. 其实一个.frm文件就是对应的数据库中的一个表,表示数据表的表结构. .MYD文件 ...

  10. win7远程连接 您的凭据不工作

    1.查看远程连接有没有打开:计算机->属性->远程设置. 2.如果上面开启了还是不行,找到开始--- 运行-- 输入 gpedit.msc,打开注册表编辑器:然后依次找到菜单,计算机配置- ...