老李推荐:第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介

 

在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自MonkeyRunner客户端发送过来的命令,然后针对每条命令请求进行相应的处理,所以它并不是作为一个随机压力测试的工具来运作。本书中的Monkey原理描述也不会把重点放在其作为压力测试工具这个方面,而是主要放在它是怎么作为MonkeyRunner的一个服务上。我相信这样已经足够了,因为这两种不同的运行方式只是事件的来源不一样而已,比如直接提供命令行参数选项运行时候的事件源是来自于Monkey自身的算法产生的伪随机事件流;而作为MonkeyRunner服务运行时候的事件源是来自网络MonkeyRunner客户端发送过来的字串格式事件命令。只要了解清楚来自网络的事件源在Monkey中是怎么处理的,那么就可以以点带面很快熟的清楚来自其他事件源的处理方式了。

这个小节中我们先看下来自Google官方对Monkey的简要介绍,好让没有接触过的读者有个基本的概念,这样才方便我们往下进行分析。

Monkey是一个运行在Android目标机器的一个应用,是一个基于命令行的应用界面测试工具,它可以独立的运行。根据用户提供的参数,它会根据算法自动生成不同用户事件的伪随机流来驱动测试的进行,比如点击,触控,手势,以及一些系统级别的事件,然后把这些事件发送到Android操作系统来触发事件的发生。用户可以使用Monkey来对你正在开发的应用以一种随机但可复用的方式进行压力测试。

Monkey支持一系列的参数选项来运行,但总的来所可以把这些选项划分成以下四个基本类别:

  • 基本配置选项: 比如配置将要测试的事件的数量
  • 运行约束选项: 如设置只对单独的一个包进行测试
  • 事件类型和频率:比如手势事件占所有随机产生事件的30%,点击占50%,触控占20%
  • 调试选项

在Monkey运行的时候,它将会根据输入选项生成相应的事件,然后把它们注入到安卓操作系统。同时Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理:

  • 如果设置了约束,限定了Monkey运行在一个或几个指定的包上,那么它会捕获并阻止试图浏览到其它包的操作
  • 如果应用程序崩溃或接收到任何没有处理的异常,Monkey将停止运行并报告相应的错误
  • 如果应用程序产生了“应用程序没有响应”的错误, Monkey将停止运行并报告相应的错误

根据用户选定的不同级别的反馈信息,用户可以看到Monkey的执行进度以及事件正在生成的进度。

用户可以通过在开发机器上的命令行或脚本来启动Monkey。由于Monkey运行在安卓模拟器/设备环境中,所以必须在其shell环境中启动。可以通过在每条命令前加上”adb shell”来实现,也可以在进入Shell后直接输入Monkey命令。基本语法如下:

$ adb shell monkey [options] 

如果不指定任何选项(options),Monkey将以静默模式启动,并会把事件发送到Android目标机器上已经安装的所有应用的任意一些包。以下是一个更典型的示例,它启动指定的应用程序,并向其发送500个伪随机事件:

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

以下列出网上同行翻译的Monkey支持的所有选项以供参考,我这里就不做重造轮子的事情了:

表5-1-1 Monkey命令行选项

老李推荐:第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介的更多相关文章

  1. 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...

  2. 老李推荐:第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles

    老李推荐:第5章7节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles   poptest是国内唯一一家培养测试开 ...

  3. 老李推荐:第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源

    老李推荐:第5章6节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 初始化事件源   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试 ...

  4. 老李推荐:第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本

    老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...

  5. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用   上一节我们描述了monkey的命令处理入口函数run是如何调用optionP ...

  6. 老李推荐:第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览

    老李推荐:第5章2节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动流程概览   每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就 ...

  7. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  8. 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态

    老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态   poptest是国内唯一 ...

  9. 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer

    老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer   poptest是国内唯一一家培养 ...

随机推荐

  1. 在 Windows 上测试 Redis Cluster的集群填坑笔记

    redis 集群实现的原理请参考http://www.tuicool.com/articles/VvIZje       集群环境至少需要3个节点.推荐使用6个节点配置,即3个主节点,3个从节点. 新 ...

  2. linux 下rabbitmq 安装

    准备工作: erlang环境  otp_src_19.0.tar.gz rabbitmq   abbitmq-server-generic-unix-3.6.5.tar.xz # yum -y ins ...

  3. 转:frame和iframe的区别

    1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...

  4. Java创建对象的几种方式

    解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...

  5. Python2.7 xlwt安装 No module named future.builtins

    遇到的坑 事情是这样的,因为项目要使用Python配合软件集成时的自动化,以前遗留的Python代码已经out of date啦,只能亲自update,所以必须搭建Python环境,使用2.7版本(我 ...

  6. ThinkPhp框架的数据库操作(查询)

    TP框架有一套自己的数据库操作的代码,包括数据库的增.删.改.查.本文主要讲解TP框架的数据库查询操作. 找到入口文件的控制器: 我这里的入口文件是Show文件夹下的控制器. 打开Login控制器. ...

  7. js小动画算法

    function step(A,B,rate,callback){ A = A + (B - A) / (rate || 2); if(Math.abs(A-B) < 1){ callback( ...

  8. 根据模板导出Excel报表并生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

  9. PHP数据访问基础知识(20161028)

    数据访问 动态页面的特征:能够读取数据库,网页的内容都是从数据库读出来的,而不是写死的 所有的程序归根结底都是对数据的增删改查 如何用服务器的PHP来操作服务器的MySQL,Apache则是用来管理, ...

  10. 来谈一谈------JavaScript对象

    1.window常用的属性: ①history ②location 2.history对象的方法: ①back() ②forward() ③go() 3.location对象的属性: ①host() ...