老李推荐:第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介
2015-12-31 16:22
281 查看
老李推荐:第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命令行选项
相关文章推荐
- 老李性能测试分享
- 你想不到:咖啡馆里上工具课
- 移动端自动化测试开课了
- 老李分享:什么是好战略
- 性能调优案例分享:Mysql的cpu过高
- 性能测试分享:性能测试工具开发的案例分享(上)
- 性能测试分享:性能测试工具开发的案例分享(下)
- 性能测试培训:批量执行Jmeter脚本之ant调用 2
- 性能测试培训:分布式测试之jmeter1
- 老李案例分享:MAT分析应用程序服务出现内存溢出过程1
- 老李案例分享:MAT分析应用程序服务出现内存溢出过程2
- 老李案例分享:定位JAVA内存溢出 1
- 老李案例分享:定位JAVA内存溢出 2
- 性能测试培训: 建立压力模型
- 老李分享:你知道有哪些持续集成工具
- 老李分享知识:性能测试之TPS和吞吐率
- 老李分享知识:性能测试之吞吐量
- 性能测试培训:分析内训泄露的案例
- 自动化测试培训:qtp脚本获取获取汇率数据
- 性能测试培训:sql server性能测试分析局部变量的性能影响1