此篇笔记,记录了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. error CS0117: `UnityEditor.EditorUtility' does not contain a definition for `GetAssetPreview'

    have to replace: EditorUtility by AssetPreview

  2. 可以结合react的ui组件

    https://ant.design/components/switch-cn/

  3. 利用Babel来转化你的ES2015脚本初步

    我们在前面已经安装和学习过babel 安装babel-cli 这是babel解释器的客户端主程序 npm install -g babel-cli 安装”编译”插件(babel的JSX语法转换器) n ...

  4. RStudio相关

    1.设置默认目录,tool-Global Options,设定后要重启RStudio才能生效2.Ctrl+l清屏控制台3.↑健.回忆前一条命令,↓健相反4.Ctrl+↑,查找相应前缀的历史记录5.创建 ...

  5. Python’s SQLAlchemy vs Other ORMs[转发 1]SQLObject

    SQLObject SQLObject is a Python ORM that maps objects between a SQL database and Python. It is becom ...

  6. 本地搭建PHP环境后进入应用失败

    进入localhost/wordpress或者其他应用,直接出现类似以下这种情况: 解决方法是修改tomcat的配置文件httpd.conf中: <IfModule dir_module> ...

  7. PHP xml 转换为 array

    retrun json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), tru ...

  8. Thymeleaf+SpringMVC,如何从模板中获取数据

    Thymeleaf+SpringMVC,如何从模板中获取数据 在一个典型的SpringMVC应用中,带@Controller注解的类负责准备数据模型Map的数据和选择一个视图进行渲染.这个模型Map对 ...

  9. 一个crackme的分析

    是看雪合集的一个,因为老师让我们多练习,所以我就找了个crackme来练习 http://images2015.cnblogs.com/blog/638600/201612/638600-201612 ...

  10. Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...

    前言: 小弟是做JAVA/Android的第一次搞这个ios,公司有mobile项目是使用phoneGap开发的,需要开发ios版本.什么都不会只能一点一点琢磨了……大神越过…… 原文链接:http: ...