此篇笔记,记录了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. TAP/TUN浅析(一)

    参考链接:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ TAP 设备与 VETH 设备     TUN/T ...

  2. ios 常用字符串的操作

    //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...

  3. JavaWeb前端:CSS

    CSS 主要是要熟悉的掌握选择器 Div 的盒模型: 整个网页被切割成一个一个盒子,盒子可以套盒子,每个盒子通过以下几个主要属性来控制显示位置: 边框 Border-top, Border-botto ...

  4. (Jquery)关于给动态加载的页面元素,绑定事件

    如果使用Jquery给元素绑定事件,一般会用bind,或者类似click函数来直接绑定. 但是对于动态生成的元素,会发现常规绑定无法生效,比如: <div class'div'></ ...

  5. 03-方法ppt动手动脑问题及课后实验性问题总结

    一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法 ...

  6. Android 常用布局视图

    常用包 http://square.github.io/ EventBus Scroller 滚动 拖拽 # android.support.design.widget.CollapsingToolb ...

  7. JavaScript模块化

    1.commonjs 导入: var math = require('math'); math.add(2,3); // 5 导出: module.exports={} 应用会停止并等待加载 2.AM ...

  8. hihoCoder挑战赛25

    萌新第一次打hihoCoder的比赛有点慌 T1 T1并不是特别难想到dp就好做了 显而易见的是一个01背包问题 Code: #include <cstdio> #include < ...

  9. django-pagination 分页栏长度控制

    在分页页数很多时,分页样式会很长影响美观 我们可以用两个方式控制: 1.找到django-pagination里的pagination\pagination.html,在<ul class=&q ...

  10. jQuery 点击显示再次点击隐藏

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...