老李推荐:第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介
老李推荐:第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原理分析-启动运行: 官方简介的更多相关文章
- 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- 老李推荐:第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles
老李推荐:第5章7节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles poptest是国内唯一一家培养测试开 ...
- 老李推荐:第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源
老李推荐:第5章6节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 初始化事件源 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试 ...
- 老李推荐:第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本
老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用
老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionP ...
- 老李推荐:第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览
老李推荐:第5章2节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动流程概览 每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就 ...
- 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件
老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...
- 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态
老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 poptest是国内唯一 ...
- 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer
老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer poptest是国内唯一一家培养 ...
随机推荐
- 构建Docker平台【第二篇】安装 Docker
第一步:上传安装包和 docker 镜像 1.安装包: docker-engine-1.12.1-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12. ...
- BZOJ 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
一开始被题意坑了= =,题目是说这个数字的最大和最小,不是个位的最大和最小= = 不知道怎么做只能递推了,必胜态就是存在能到达必败态的,必败态就是只能到达必胜态的 CODE: #include< ...
- IOS8 : UIAlertController
UIAlertController 和 UIAlertAction 用法: 1. 最简单的提醒视图: 这里我们实现一个最简单的提醒视图,包含1个标题,1行信息,1个按键,按下按键后,什么都不发生: ...
- 从SHAttered事件谈安全
大新闻? 在刚刚过去的2017年2月23日,Cryptology Group at Centrum Wiskunde & Informatica (CWI)和Google的研究人员公开了2个P ...
- 关于echarts的一些基本使用demo
最近发现一个很好用的一个前端控件echarts,效果非常不错,兼容ie8+以上等主流浏览器.可以使用它制作报表,地图示意图等,可用其实现一系列强大的功能. 其基于html5 Canvas,是一个纯Ja ...
- Redis简单配置和使用
学到Redis中需要整理和配置的东西比较多,资源也是比较分散!这次的主要还是将知识整合一下,开发过程中所需要的资源整合一下,也方便今后涉及到这块地方的知识时,将时间大量浪费在了找这些资源上了! 一.R ...
- [HDOJ2572]终曲
Problem Description 最后的挑战终于到了!站在yifenfei和MM面前的只剩下邪恶的大魔王lemon一人了!战胜他,yifenfei就能顺利救出MM.Yifenfei和魔王lemo ...
- Robot Framework自动化测试环境部署
文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...
- Caffe学习系列(二)Caffe代码结构梳理,及相关知识点归纳
前言: 通过检索论文.书籍.博客,继续学习Caffe,千里之行始于足下,继续努力.将自己学到的一些东西记录下来,方便日后的整理. 正文: 1.代码结构梳理 在终端下运行如下命令,可以查看caffe代码 ...
- Redis命令总结及其基础知识讲述
1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器进行连接).持久化(使得服务器可以在 ...




