天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。

在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 

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

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

——— 未完待续———


作者:天地会珠海分舵 
微信公众号:TechGoGoGo 
微博:http://weibo.com/techgogogo 
CSDN:http://blog.csdn.net/zhubaitian

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

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

    老李推荐:第5章1节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 官方简介   在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自Monkey ...

  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. 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器

    原文:第十九章--使用资源调控器管理资源(2)--使用T-SQL配置资源调控器 前言: 在前一章已经演示了如何使用SSMS来配置资源调控器.但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展. ...

  2. JDK自带的监控分析工具JConsole

    非常多开发人员认为自己懂Java编程.事实是大多数开发人员都仅仅领会到了Java平台的皮毛.所学也仅仅够应付工作. 作者将深度挖掘Java平台的核心功能.揭示一些鲜为人知的事实.帮助您解决最棘手的编程 ...

  3. bootstrap使用汇总

    //大多数功能都能够指定data属性来指定 但是,有必要的情况下使用jquery由于事件是不同的过程 //活动通常有两种状态show shown 通用和过去的 <!DOCTYPE html> ...

  4. CGI原理解析系列之中的一个----CGI怎样获取WEBserver数据

    //gcc get_post.c -o get_post.ums; #include <stdio.h> #include <stdlib.h> #include <un ...

  5. 严格模式 (JavaScript)

    严格模式是一种将更好的错误检查引入代码中的方法. 在使用严格模式时,您无法使用隐式声明的变量.将值赋给只读属性或将属性添加到不可扩展的对象. 〉声明严格模式 可以通过在文件.程序或函数的开头添加 &q ...

  6. 依据Uri获得sd卡图片

    <pre name="code" class="java">String mBigImage = URLEncoder.encode(mImageU ...

  7. MVC中使用SignalR

    MVC中使用SignalR打造酷炫实用的即时通讯功能附源码   前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时 ...

  8. 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想

    发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director ...

  9. 于 jsp第横梁list数据

            往往我们都会将查询到的数据显示到界面中,那么该怎样在界面显示.请看以下的具体解释:     0)前提得在jsp页面中获取后台传过来的数据(在此为List集合):             ...

  10. oracle 监控执行的sql语句

    oracle 监控执行的sql语句 select * from v$sqlarea a where module='PL/SQL Developer' order by a.FIRST_LOAD_TI ...