monkey命令详解

 

1.  $ adb shell monkey <event-count>                <event-count>是随机发送事件数

例:adb shell monkey 1000   发送1000个随机事件

2.  $ adb shell monkey [options] <event-count>    [options]是monkey可传入的参数

Monkey的option主要分为:常规类、事件类、约束类和调试类4种

2.1  常规类命令:

   adb shell monkey -v <event-count>

-v:打印出日志信息,每个-v将增加反馈信息的级别。-v越多日志信息越详情,最多支持3个-v

2.2 事件类命令:

$ adb shell monkey -f <scriptfile> <event-count>

-f:后接测试脚本名,表示要使用monkey运行指定的monkey脚本,

如:$ adb shell monkey -f /mnt/sdcard/test01 3

注:这里的3是指循环次数,不是事件数

如果希望重复执行之前的随机操作,需要加-s命令,可指定随机数生成器seed值

 $ adb shell monkey -s <seed> <event-count>

-s: 后接随机数生成器的seed值,如果使用相同的seed值再次运行monkey,将生成相同的事件序列(也就是说,重复执行刚才的随机操作)

如: $ adb shell monkey -s 100 1000

    $ adb shell monkey --throttle <milliseconds> 

--throttle:后面接时间,单位为ms,表示事件之间的固定延迟(即执行每一个指令间隔的时间),如果不接该项,monkey将不会延迟

    $ adb shell monkey --pct-touch <percent>

--pct-touch:后面接触摸事件百分比,触摸事件泛指发生在某一位置的一个down-up事件,点击

    $ adb shell monkey --pct-montion <percent>

--pct-motion:后面接动作事件百分比,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)

   $ adb shell monkey --pct-trackball <percent>

--pct-trackball:后面接轨迹事件百分比,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件

   $ adb shell monkey --pct-nav <percent>

--pct-nav:后面接基本导航事件百分比,基本导航事件主要来自方向输入设备的上、下、左、右事件

   $ adb shell monkey --pct-majornav <percent>

--pct-marjornav:后面接主要导航事件百分比,主要导航事件通常指引发图形界面的一些动作,如键盘中间按键、返回按键、菜单按键等

  $ adb shell monkey --pct-syskeys <percent>

--pct-syskeys:后面接系统按键事件百分比,系统按键事件通常指仅供系统使用的保留按键,如HOME键、BACK键、拨号键、挂断键、音量键等

  $ adb shell monkey --pct-appswtich <percent>

--pct-appswitch:后面接应用启动事件百分比,应用启动事件(activity launches)即打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用

  $ adb shell monkey --pct-anyevent <percent>

--pct-anyevent:后面接其他类型事件百分比,其他类型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

 2.3  约束类命令

约束类命令可以让随机事件运行的范围限制在某几个包或类中。

   $ adb shell monkey -p <allowed-package-name>  <event-count>

-p:后面接一个或多个包名,如果不指定任何包,monkey将允许系统启动全部包里的Activity。每个-p对应一个包,指定多个包时每个包名前都需要加上-p

如:$ adb shell monkey -p com.agent.tao  1000       运行com.agent.tao 包里的Activity并发送1000个随机事件

   $ adb shell monkey -c <main-category>  <event-count>

-c:后面接一个或多个类别名,monkey将只允许系统启动这些类别中某个类别列出的Activity,如果不指定任何类别,monkey将选择Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_monkey里的Activity

每个-c对应一个类别,指定多个类别时每个类别名前面都需要加上-c

如:$ adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000

运行Inter.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件

 2.4 调试类命令

通过调试类命令可以对monkey进行简单的调试,这样可以快速定位monkey运行中的问题

   $ adb shell monkey --dbg-no-events  <event-count>

--dbg-no-events:设置此项后,monkey将进行初始启动,进入到某个测试Activity中不会进一步生成事件,可以监视应用程序所调用的包之间的转换,为了更好的跟踪,一般该项

会与-v(日志)、-p<allowed-package-name> (包约束) 和 --throttle<milliseconds> (延迟)等联合使用

   $ adb shell monkey --hprof  <event-count>

--hprof:设置此项后,将在monkey事件序列前后立即生成profilfing report,将在data/misc中生成5MB左右大小的文件

 $ adb shell monkey --ignore-crashes  <event-count>

--ignore-crashes:设置此项后,当应用程序崩溃或发生失控异常时,monkey将继续运行直到计数完成。如果不设置此项,monkey遇到上述崩溃或异常将停止运行。

 $ adb shell monkey --ignore-timeouts  <event-count>

--ignore-timeouts:设置此项后,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此项,monkey

遇到此类超时将停止运行

   $ adb shell monkey --kill-process-after-error  <event-count>

--kill-process-after-error:设置此项后,当monkey因为应用程序发生错误而停止时,将会通知系统停止发生错误的进程。如果不设置此项,monkey停止时发生错误的应用程度将

继续处于运行状态。

   $ adb shell monkey --ignore-security-exceptions <event-count>

--ignore-security-exceptions:设置此项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此项,

monkey遇到此类权限错误将停止运行。

   $ adb shell monkey --monitor-native-crashes  <event-count>

--monitor-native-crashes:设置此项后,monkey运行时native code的崩溃事件将被监视并报告。如果不设置此选项,将不会监视此类事件。

   $ adb shell monkey --wait-dbg  <event-count>

--wait-dbg:在设置此项后,将暂停执行中的monkey,直到有调试器与它连接。

结果检查与分析

测试结束后,需要将手机连接PC,拷贝以下文件:

  • info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。
  • error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。
  • LOG文件:此文件在手机上的LOG文件夹中中,主要主要记录程序对MONKEY测试时的响应情况。

我们需要对这3个文件进行分析整理,以便提交开发人员处理。

(1)检查测试是否完成

通过info.txt文件,可以查看Monkey是否执行成功。如下图

(2)结果分析整理

我们目前执行Monkey测试的目的是为了检查是否有内存泄露,而这类问题主要是通过Log文件来体现的。

Error文件也记录了部分异常,考虑到这部分文件格式已经很规范,因此不需要再次整理。

Log文件记录了所有信息,因此我们需要进行初步分析整理后再提交研发,以减少研发工作量。

Monkey测试后在Mobilelog文件中会产生多个main_log文件,里面含有详细的log执行记录。通过main_log文件,我们可以查看可能存在内存泄露代码所在具体位置。是否该行代码存在泄露需要开发人员进一步验证。我们只提供可能存在代码泄露的信息。

含有mian_log的文件都需要进行查看。搜索关键字“leak”,在搜索结果中,查看与Ideafreiend相关的代码。如下图:

注:com.lenovo.ideafriend:Ideafriend包名;CursorLeakDetecter: 游标泄露检查器

1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception”   (如果出现空指针, NullPointerException)  肯定是有bug

monkey 命令详解的更多相关文章

  1. monkey命令详解《转载》

    monkey命令详解: https://blog.csdn.net/a136332462/article/details/76014412

  2. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...

  3. monkey命令详解

    标准的monkey 命令 adb shell monkey [options] <eventcount> 例如: adb shell monkey -v    产生500次随机事件,作用在 ...

  4. monkey 原理,环境搭建、命令详解

    一.monkey测试的相关的原理 monkey测试的原理就是利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常.当Monkey程序在模拟器或设备运行的时候, ...

  5. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  6. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  7. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  8. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  9. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

随机推荐

  1. 初识C语言(五)

    自定义函数 C语言提供了大量的库函数(右侧资料下载中有),比如stdio.h提供输出函数,但是还是满足不了我们开发中的一些逻辑,所以这个时候需要自己定义函数,自定义函数的一般形式: 注意: 1.[]包 ...

  2. Docker----搭建自己的gitlab(填坑之旅)

    在成功完成docker的基础实验之后,尝试着使用docker搭建自己的gitlab,用来存放自己的代码.本文主要介绍使用docker搭建gitlab过程中遇到的问题,我的服务器系统是:Ubuntu S ...

  3. 【玩转开源】BananaPi R2 —— 第一篇 Openwrt安装

    最近手上拿到一块香蕉派的R2,这块板子可以用作路由器,所以决定在板子上面跑一下Openwrt. R2的外观长这个样子,看起来还是比较酷的: 硬件介绍 CPU 是MTK的4核芯片mt7623n,搭配mt ...

  4. spring boot 配置 fastjson 替代 Jackson (并解决返回字符串带双引号问题)

    注:以我遇到的情况,只要发出的请求参数是map格式的,都会在前后多加一个双引号 以下代码有两个功能:1.FastJson 替换 Spring 自带的 Jackson  2.解决返回的字符串带双引号问题 ...

  5. Angular changeDetction

    ChangeDection 检测程序内部状态,然后反映到UI上. 引起状态变化:Events,XHR,Timers ApplicationRef监听NgZone的onTurnDone,然后执行检测. ...

  6. 2、Linux常用功能

    防火墙的基本用法 - 启动: systemctl start firewalld - 关闭: systemctl stop firewalld - 查看状态: systemctl status fir ...

  7. DevExpress控件库 开发使用经验总结2 DevExpress汉化之WinForm开发模式汉化

    2015-01-24 DevExpress控件库默认安装后,使用的本地资源为英文.Developer Express .NET产品都有本地化资源,比如按钮属性,控件属性描述,菜单项,确认和错误的信息等 ...

  8. java基础之IO流及递归理解

    一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...

  9. MySQL索引背后的数据结构及算法原理(转)

    转自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...

  10. 使用handler倒计时

    package com.example.jikangwang.myapplication; import android.content.Intent; import android.os.Handl ...