码迷,mamicode.com
首页 > 其他好文 > 详细

Monkey工具详解

时间:2015-05-06 18:20:17      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:android   压力测试   monkey   

摘要

1、monkey工具介绍

2、用法 命令详解

3、测试结果分析

 

    Android开发的过程中有很多很小而且实用 的小工具,在android开发的api文档中可以查看。http://www.androidcommunitydocs.com/tools/index.html 

    今天我来讲一下最近上手的一款工具---------monkeyApi网站上是这么定义的:Monkey是运行在模拟器或者设备上的能够生成伪随机的用户事件流(比如 点击、触摸或者手势,还有许多系统级别的事件)的程序。你可以用Monkey用随机可重复的方式对你正在开发的应用程序进行压力测试。说白了就Monkey能够进行模拟用户或系统的响应。在开发的时候进行压力测试。

http://www.androidcommunitydocs.com/tools/help/monkey.html

1Monkey工具的介绍

 Monkey是一个能运行在任何模拟器或者设备上的命令行工具,它向系统发送伪随机的用户事件流。实现对正在开发的应用程序的压力测试。

Monkey包括很多的操作,但是一般分类以下四类:

 a: 基本配置选项,比如设置事件的数量。

 b: 操作的限制,比如限制只在这一个包中操作。

 c: 事件类型和频率。

 d: debug选项。

 当Monkey运行的时候,它会产生和发送事件到系统,同时会监听系统在测试环境下如果出现以下三种情况会特殊处理:

  1 如果你指定Monkey运行在一个或者多个特定的包中的时候,它将会尝试到其他的包中,同时进行阻塞。

  2 如果你正在测试的应用程序crashes了或者遇到不能捕获的异常,Monkey就会停止而且报错。

  3 如果你的应用程序出现ANRMonkey也会停止然后报错。

根据你选的Verbosity级别的Log,可以看到Monkey运行的过程日志记录。


2、基本用法

 

可以在开发环境中用命令行或者脚本语言运行Monkey。由于Monkey运行在模拟器或者设备上,所以命令行必须有shell环境。可以在adb shell上运行命令。也可以进入Monkey的命令行操作。

基本语法如下:

$ adb shell monkey [options] <event-count>

如果没有[options]的时候Monkey就以静默模式运行(没有verbose级别的日志),同时发送向所有在设备上的包发送事件(命令)。

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

上面这个命令就是向应用发送500次伪随机事件。

Api文档中命令行详解如下:

技术分享

技术分享技术分享

技术分享

以上的api文档中的一些命令参数可以通过--help 来查看参数以及使用方法;

比如

技术分享

>adb shell monkey -p com.ydzy.ydzydemo -v  -v -v 10 -script -ignore-crashes -hprof >output.txt

上面的命令的大概意思的 模拟伪随机事件10次,忽略crashes-hprof 的意思的会按照之前的事件序列生成分析报告,文件大小大概在5MB左右。这个应该和TraceView工具生成的文件一样。 >output.txt

这个命令的意思是将db shell monkey -p com.ydzy.ydzydemo -v  -v -v 10 -script -ignore-crashes -hprof 输出到output.txt文件中。生成的output.txt可以再如下图中位置找到:

技术分享


、测试结果分析

 

  因为如果模拟太多次的话会生成大量文件,所有我上面的伪随机数设置了10,以下是output.txt文件的内容:

蓝色是日志------ 红色代表我的注解

 

:Monkey: seed=0 count=10 seed 是上面第二部分命令行详解的参数 这个代表伪随机数值生成器,代表多次运行的随机数值相同的话他将生成的事件序列也是相同的 count代表模拟测试伪事件的次数

 

:AllowPackage: com.ydzy.ydzydemo

 

:IncludeCategory: android.intent.category.LAUNCHER

 

:IncludeCategory: android.intent.category.MONKEY

 

// Event percentages:伪事件分类(分别表示touch类型 、motion、 trackball、 syskeys、 nav、 majornav、 appswitch、 flip、 anyevent、)所占时间的比例

 

//   0: 15.0%

 

//   1: 10.0%

 

//   2: 15.0%

 

//   3: 25.0%

 

//   4: 15.0%

 

//   5: 2.0%

 

//   6: 2.0%

 

//   7: 1.0%

 

//   8: 15.0%

 

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.ydzy.ydzydemo/com.ydzy.musicbook.ui.HomeActivity;end表示跳转到HomeActivity

 

    // Allowing start of Intent { act=android.intent.action.MAIN 允许跳转在包中cat=[android.intent.category.LAUNCHER] cmp=com.ydzy.ydzydemo/com.ydzy.musicbook.ui.HomeActivity } in package com.ydzy.ydzydemo

 

Events injected: 10事件注入

 

:Dropped: keys=0 pointers=0 trackballs=0 flips=0丢弃的事件记录

 

## Network stats: elapsed time=42ms (0ms mobile, 42ms wifi, 0ms not connected)统计的花费的事件状况 手机耗时42毫秒 wifi耗时0毫秒 而且网络一直连接

 

// Monkey finished测试完成,如果有异常的话假如没有忽略crashes的话会停止并且显示异常

如果crashes掉的话应该有 CRASH这种字段

 

 

总结: 以上就是Monkey的大概用法了,可能我总结的不是很详细,对于Monkey命令没有一个一个详细说明。不过我觉得了解linux 的都会去用--help 来查看所有命令,都会根据英文对照命令行的意思。所以就只是说明大概的用法。如果那里有什么不对的地方,请指正(留言活着poarryScript@gmail.com),我希望能够抛砖引玉。

------------------------------------------------------------------------------------------------共勉。


本文出自 “知行合一” 博客,请务必保留此出处http://poarry.blog.51cto.com/5970996/1642557

Monkey工具详解

标签:android   压力测试   monkey   

原文地址:http://poarry.blog.51cto.com/5970996/1642557

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!