什么是Monkey Test?顾名思义,就像一只猴子一样,它的下一步具有随机性。所以Monkey Test可以简单地理解为动作随机性测试!

Monkey是android模拟器或设备上运行的一个程序。它可以生成伪随机用户事件(例如点击、触碰或滑动等)流和很多的系统级事件(启动app activity等),对某个或某些指定的app应用进行压力测试,且能够生成日志分析文件。

为什么说它是伪随机呢?从多次调用Monkey命令生成的事件流看,它具有随机性。但是从每次调用Monkey命令来看,它是确定好的事件流。

直白点,本来需要手动地连续地长时间地对app程序做"点击"、“触碰”、“滑动”、"缩放"等动作的压力测试,现在让Monkey程序生成事件流完成了

1、查找Monkey程序

Monkey虽然是android系统中自带的程序,使用前还是需要先检查是否存在,可以使用adb命令进入android系统查看:

adb shell
cd /system/framework/
ls | grep monkey

monkey.jar就是monkey程序,它由一个叫作monkey的shell脚本启动执行。shell脚本的存放路径为:/system/bin

adb shell
cd /system/bin
ls | grep monkey

2、Monkey命令参数

在adb shell进入android系统后,输入monkey命令,显示monkey程序的参数描述:

常用参数含义如下:

类别 参数 描述
约束条件 -p <allowed-package-name> 需要测试的软件。一个-p对应一个软件,多个软件需要用多个-p。如果不使用-p指定软件,就表示指定所有的软件都需要测试
--pkg-whitelist-file PACKAGE_WHITELIST_FILE 被测软件白名单。需要测试的软件可以放在白名单txt文件中,而txt文件需要放在android系统的某个路径下。和多个-p实现相同的作用
--pkg-blacklist-file PACKAGE_BLACKLIST_FILE 被测软件黑名单,不测试的软件可以放在黑名单txt文件中。那么测试的就是黑名单外的软件
调试 --ignore-crashes 当应用崩溃或遇到任何类型的未处理异常时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--ignore-timeouts 当应用遇到任何类型的超时错误(例如“应用无响应”对话框)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--ignore-security-exceptions 当应用遇到任何类型的权限错误(例如,如果它尝试启动需要特定权限的 Activity)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止
--monitor-native-crashes 监视并报告 Android 系统原生代码中发生的崩溃。如果设置了 --kill-process-after-error,系统将会停止
--ignore-native-crashes 忽略Android系统原生代码中发生的崩溃
--kill-process-after-error 当 Monkey 因出错而停止运行时,出现故障的应用将保持运行状态。设置此选项后,它将会指示系统停止发生错误的进程
--wait-dbg 阻止 Monkey 执行,直到为其连接了调试程序
事件 -s <seed> 伪随机数生成器的种子值。当两次运行monkey时的seed值相同时,事件流相同。可以用它来复现问题
--throttle <milliseconds> 在事件之间插入固定的延迟时间
--pct-touch <percent> 设置触碰屏幕事件的百分比
--pct-motion <percent> 设置滑动屏幕事件的百分比
--pct-trackball <percent> 调整轨迹球事件所占百分比。(轨迹球事件包括一个或多个随机动作,有时后跟点击。)
--pct-nav <percent> 调整“基本”导航事件所占百分比。(导航事件包括向上/向下/向左/向右,作为方向输入设备的输入。)
--pct-majornav <percent> 调整“主要”导航事件所占百分比。(这些导航事件通常会导致界面中的操作,例如 5 方向键的中间按钮、返回键或菜单键。)
--pct-syskeys <percent> 设置系统按键事件的百分比
--pct-appswitch <percent> Activity启动事件的百分比
--pct-anyevent <percent> 调整其他类型事件所占百分比。这包括所有其他类型的事件,例如按键、设备上的其他不太常用的按钮等等
--pct-pinchzoom <percent> 设置缩放操作的百分比
--pct-flip <percent> 设置翻转操作的百分比
其他 -v 输出日志的详细程度。每个 -v 都会增加详细程度级别。级别 0(默认值)只提供启动通知、测试完成和最终结果。级别 1 提供有关测试在运行时的更多详细信息,例如发送到您的 Activity 的各个事件。级别 2 提供更详细的设置信息,例如已选择或未选择用于测试的 Activity
COUNT 随机事件次数

所有事件的百分比之和不能超过100!!!

touch事件占大头;导航事件用在导航app上;车机系统一般没有翻转事件

以上参数描述来自官方文档:https://developer.android.com/studio/test/monkey?hl=zh-cn

3、Monkey命令示例

这么长的命令,如果每次执行都需要手动输入,未免太麻烦了些!如果某个功能需要多条命令或多个参数处理,我们可以放在批处理文件中执行!


Monkey Test简单介绍相关推荐

  1. 测试——Monkey测试的介绍及使用

    Monkey的简单介绍: Monkey是android系统自带的测试工具,他能运行在虚拟机和真机中. Monkey能向系统发送伪随机的用户事件流(像按键,触摸,手势操作等)进行模拟操作,实现对程序的压 ...

  2. jira以及jira API简单介绍

    最近需要预言:是否可以通过jira API实现用例管理,对jira的应用.API.扩展等进行了一定的了解. Jira介绍: jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支 ...

  3. 遗传算法的简单介绍以及模式定理的简单证明

    遗传算法   遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...

  4. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...

  5. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...

  6. 2021年大数据ELK(二):Elasticsearch简单介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...

  7. iOS开发UI篇—多控制器和导航控制器简单介绍

    iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...

  8. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  9. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

    LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...

最新文章

  1. 《需求工程-软件建模与分析之读书笔记之三》
  2. 零基础python入门书籍-浅谈零基础自学python入门书
  3. 在线编程题之“明明的随机数”
  4. Eclipse中新建SpringBoot项目完成对json、pojo、map、list的请求
  5. 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解
  6. Java6上开发WebService
  7. 当Java遇上机密计算,又一段奇幻之旅开始了!
  8. python入门第八章 商品数量检测 头像格式检测
  9. ref out的用法
  10. VS2019,C#修改WinForm应用程序和窗体图标
  11. c++学习笔记(八)- map
  12. Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式
  13. 7. 生信技能树——TCGA癌症数据2
  14. 谷歌恐龙游戏HTML,谷歌浏览器小恐龙游戏
  15. android9 apk自动安装功能,Android自动安装APK
  16. 【c#】 MVC模式 ——《七天学会》系列学习心得
  17. 工作习惯决定事业成败
  18. comon lisp标准_common-lisp – Common Lisp的最新标准
  19. EasyCVR搭建视频安防综合运维管理平台,联合集成商打造专业视频解决方案
  20. 单点登录--微服务的登录解决方案

热门文章

  1. WP下ListBox的绑定和效果
  2. 如何打开融易汇消息服务器,【中泰证券融易汇怎么用】中泰证券融易汇好不好_使用技巧-ZOL软件百科...
  3. 51单片机学习笔记_11 蜂鸣器,识简谱,根据简谱编写蜂鸣器代码
  4. springboot集成支付宝沙箱支付
  5. 这可能是目前最全的Redis高可用技术解决方案
  6. Linux下chmod命令的含义
  7. 【Power平台】Power Apps项目规划阶段(3):任务和任务的人物,时间,地点
  8. 参考学习的各种跑马灯代码
  9. 51单片机——数码管、按键、矩阵按键C语言入门编程
  10. Fedora32 安装搜狗拼音中文输入法/安装 + FCITX 输入法 Rime/拼音