第一次听说monkey,根本不知道是什么东西,脑海里就一个印象,很厉害的自动化测试工具,可是体验了一下,似乎不是那么回事。。。

一、Monkey 是什么?

  1. monkey就是SDK中附带的一个工具。

二、Monkey 测试的目的?

  1. :该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。

三、Monkey 测试的特点?

  1. monkey测试,所有的事件都是随机产生的,不带任何人的主观性。支持Monkey Script脚本。

四、Monkey 命令详解

  1. 1).标准的monkey 命令
  2. [adb shell] monkey [options] <eventcount> , 例如:
  3. adb shell monkey -v 500 --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含 Intent.CATEGORY_LAUNCHER Intent.CATEGORY_MONKEY activity)。
  4. 上面只是一个简单的例子,实际情况中通常会有很多的options 选项
  5. 2).四大类—— 常用选项 事件选项 约束选项 调试选项
  6. 1:常用选项
  7. --help:打印帮助信息
  8. -v:指定打印信息的详细级别,一个 -v增加一个级别 默认级别为 0
  9. 2:事件选项
  10. -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
  11. --throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
  12. --pct-touch:指定触摸事件的百分比,如:--pct-touch 5% 相关的还有以下option
  13. --pct-motion <percent>(滑动事件)、 --pct-trackball <percent> (轨迹球事件) --pct-nav <percent> (导航事件 up/down/left/right)、 --pct-majornav <percent> (主要导航事件 back key menu key)、 --pct-syskeys <percent> (系统按键事件 Home Back startCall endCall volumeControl)、 --pct-appswitch <percent> activity之间的切换)、 --pct-anyevent <percent>(任意事件)
  14. 3:约束选项
  15. -p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package 如:-p com.ckt -p com.xyz.asura
  16. -cactivity必须至少包含一个指定的category,才能被启动,否则启动不了;
  17. 4:调试选项
  18. --dbg-no-events:初始化启动的activity,但是不产生任何事件。
  19. --hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
  20. --ignore-crashes:忽略崩溃
  21. --ignore-timeouts:忽略超时
  22. --ignore-security-exceptions:忽略安全异常
  23. --kill-process-after-error:发生错误后直接杀掉进程
  24. --monitor-native-crashes:跟踪本地方法的崩溃问题
  25. --wait-dbg:知道连接了调试器才执行monkey测试。

五、一个简单的monkey命令:

  1. adb shell monkey -p com.xyz.android.junittest -s 500 -v 10000

但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下

  1. adb shell monkey -p com.xyz.android.junittest -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt

六、monkey作用的包:com.xyz.android.junittest

  1. 产生时间序列的种子值:500
  2. 忽略程序崩溃 忽略超时 监视本地程序崩溃 详细信息级别为2 产生 10000个事件

七、包名的获得

  1. 1、有源码
  2. 2、下载包名查看器app
  3. 3adb logcat 查找到这一行输出:(I/ActivityManager(数字):Dispayed 包名/类名:+ms
  4. 4aapt命令查看

八、monkey的结果日志与分析

monkey初接触的更多相关文章

  1. 初接触BurpLoader工具

    初接触burp工具 菜鸟一枚,现在在接触一段时间测试,我在测试功能性的时候,想着网站被黑案例那么多,我是不是也应该弄弄安全性测试了,所以就有了下边的第一次接触BurpLoader工具来测试手机的app ...

  2. 软工实践练习-Git初接触

    第一次听到Git,有点不知所云,听了实践课老师的讲解,才明白了Git作为最先进的分布式版本控制系统的重要性. 至于Git的安装和使用仍旧是自己摸索着去完成了,当然在这过程中也是遇到了很多的问题. 接下 ...

  3. vi初接触

    vi初接触 它有三种模式: 一 一般模式 二 编辑模式 三 命令行模式 介绍几种比较常用的吧 -- 退出:q 写入:w 强制:! (以上可叠加) 显示行号:set nu 取消:set nonu 跳转到 ...

  4. ExtJS初接触 —— 了解 Ext Core

    ExtJS初接触 —— 了解 Ext Core Ext Core是一款和jQuery媲美的轻型JS库,基于MIT许可.对于Dom的操作,我个人还是比较喜欢用jQuery.当然如果项目中用的是ExtJS ...

  5. ExtJS初接触 - 在项目中使用ExtJS

    ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...

  6. Java之路——Java初接触

    本文大纲 1.Java是什么 2.Java历史 3.Java技术范围 3.1 Java SE平台技术范围 3.2 Java EE技术范围 3.3 Java 体系技术范围 4.总结 1.Java是什么 ...

  7. python 之 数据类型初接触

    python 之 数据类型初接触 标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dicti ...

  8. Dapr微服务应用开发系列2:Hello World与SDK初接触

    题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...

  9. ubantu linux的bash shell初接触

    本人是Linux初习者,同时也刚刚开始学习,将我的学习成长记录下来,来和大家一同分享! 我用的系统是Ubuntu 12.04,脚本编辑器用的是VIM,觉得很顺手!Shell语言用的是Bash Shel ...

随机推荐

  1. API网关Kong系列(三)添加服务

    进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...

  2. Koa 框架整理

    学习交流 Koa使用了ES6规范的generator和异步编程是一个更轻量级Web开发的框架,Koa 的先天优势在于 generator.由于是我个人的分享交流,所以Node基础.ES6标准.Web开 ...

  3. WCF服务部署

    一.将WCF服务部署到IIS上 1.首先检测电脑上是否安装了IIS,一般来说Win7以上系统自带IIS 2.下面进行IIS服务的开启设置 控制面板=>打开或关闭Windos功能 3.勾选该窗口中 ...

  4. unity3d中给GameObject绑定脚本的代码

    一.获取GameObject 1.GameObject.Find() 通过场景里面的名子或者一个路径直接获取游戏对象.    GameObject root = GameObject.Find(“Ga ...

  5. webpack(2)--Entry

    Entry entry是配置模块的入口,可以抽象成输入,webpack执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块. 注意: entry是必填,若不填写则将导致webpack报错退出 ...

  6. JS 传各种文件到后端

    由于要写一个前端上传文件按钮功能,本人前端是小白,所以在网上搜索了许多,发现FileReader非常好用. 不多BB,直接来. 1,前端只需要一个input标签, <input type=&qu ...

  7. vb 使用StreamWriter书写流写出数据并生成文件

    sql = "Select case when date ='' then '0'else CONVERT(varchar(100), date, 101) end as date,case ...

  8. python装饰器(docorator)详解

    引言: 装饰器是python面向对象编程三大器之一,另外两个迭代器.生成器只是我现在还没有遇到必须使用的场景,等确实需要用到的时候,在补充资料:装饰器在某些场景真的是必要的,比如定义了一个类或者一个函 ...

  9. zk-systemd

    [Unit] Description=auto run zk server After=network.target [Service] Type=simple Environment=ZHOME=/ ...

  10. License分类 + 引入开源软件时License的注意事项

    License分类 GPL: linux.openJDK,openJFX,mysql 融合感染,单独子模块不感染(自己的模块与引入模块的通信方式是socket) openJDK(GNU General ...