Android自动化测试工具——Monkey

2023-11-05



前言:

最近开始研究Android自动化测试方法,整理了一些工具、方法和框架,其中包括android测试框架,CTSMonkeyMonkeyrunnerbenchmark,以及其它test tool等等。
 

一、  什么是Monkey

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
 

二、 Monkey的特征

1、 测试的对象仅为应用程序包,有一定的局限性。

2、 Monky测试使用的事件流数据流是随机的,不能进行自定义。

3、 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
 

三、Monkey的基本用法

基本语法如下:

$ adb shell monkey [options]

options选项(adb -d shell monkey):

  1. usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]  
  2.               [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]  
  3.               [--ignore-crashes] [--ignore-timeouts]  
  4.               [--ignore-security-exceptions]  
  5.               [--monitor-native-crashes] [--ignore-native-crashes]  
  6.               [--kill-process-after-error] [--hprof]  
  7.               [--pct-touch PERCENT] [--pct-motion PERCENT]  
  8.               [--pct-trackball PERCENT] [--pct-syskeys PERCENT]  
  9.               [--pct-nav PERCENT] [--pct-majornav PERCENT]  
  10.               [--pct-appswitch PERCENT] [--pct-flip PERCENT]  
  11.               [--pct-anyevent PERCENT]  
  12.               [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]  
  13.               [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]  
  14.               [--wait-dbg] [--dbg-no-events]  
  15.               [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]  
  16.               [--port port]  
  17.               [-s SEED] [-v [-v] ...]  
  18.               [--throttle MILLISEC] [--randomize-throttle]  
  19.               COUNT  
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]
              [--kill-process-after-error] [--hprof]
              [--pct-touch PERCENT] [--pct-motion PERCENT]
              [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
              [--pct-nav PERCENT] [--pct-majornav PERCENT]
              [--pct-appswitch PERCENT] [--pct-flip PERCENT]
              [--pct-anyevent PERCENT]
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]
              [--throttle MILLISEC] [--randomize-throttle]
              COUNT

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送9999个伪随机事件:

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

四、Monkey测试的一个实例

通过这个实例,我们能理解Monkey测试的步骤以及如何知道哪些应用程序能够用Monkey进行测试。

Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):

1、 通过eclipse启动一个Android的emulator

2、 在命令行中输入:adb devices查看设备连接情况

C:\Documents and Settings\Administrator>adb devices

List of devices attached

emulator-5554 device

emulator-5556 device

015ED9A50C00A01A device 

3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面

C:\Documents and Settings\Administrator>adb shell

4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面

C:\Documents and Settings\Administrator>adb shell

# ls data/data

ls data/data

com.google.android.btrouter

com.android.providers.telephony

com.android.mms

com.android.providers.downloads

com.android.deskclock

com.android.email

com.android.browser

com.android.calculator2

....

5、 以com.android.calculator2作为对象进行MonkeyTest

#monkey -p com.android.calculator2 -v 9999

其中:

-p表示对象包 

–v 表示事件数量

运行过程中,Emulator中的应用程序在不断地切换画面。

按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。 

注:具体参数的设定可参考:

http://developer.android.com/guide/developing/tools/monkey.html

五、关于Monkey测试的停止条件

Monkey Test执行过程中在下列三种情况下会自动停止:

1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

3、如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。

通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android自动化测试工具——Monkey 的相关文章

  • 优化算法选择:SGD、SGDM、NAG、Adam、AdaGrad、RMSProp、Nadam

    目录 优化算法通用框架 SGD 系列 固定学习率的优化算法 SGD SGD with Momentum SGD M SGD with Nesterov Acceleration NAG 自适应学习率的优化算法 AdaGrad AdaDelt
  • 18. TypeScript 扩展全局变量类型

    TypeScript 扩展全局变量类型 1 扩展局部变量 可以直接使用接口对已有类型进行扩展 interface String double string String prototype double function return th
  • css学习——sass(6)

    第一步 全局安装 sass 在命令行工具 npm install g sass 查看版本 sass version 第二步 手动将sass 编译为css 1 创建一个test scss 2 在命令行终端 输入sass test scss t
  • AQS相关工实现类的使用及其原理

    文章目录 1 AQS 1 1 概述 1 2 自定义不可重入锁 2 ReentrantLock 2 1 非公平锁 2 1 1 加锁解锁流程 2 1 1 1 加锁失败 2 1 1 2 解锁竞争 2 2 可重入原理 2 3 可打断原理 2 3 1
  • 虚拟乒乓球连接不上服务器,虚拟乒乓球正版

    虚拟乒乓球正版 游戏画面场景设定的比较小清新 不过其中的内容设定是超级的精彩 极其逼真的玩家操作定能带给各位最为真实的游戏体验 这个过程你需要不断锻炼自己的水平 更得要击败尽可能多的对手 玩法难度可供选择 喜欢的玩家快快点击下载试玩吧 游戏
  • 解决jdbc连接本地mysql数据库时报错Caused by: java.net.UnknownHostException: mysql

    今天在写代码的时候遇到的问题 解决问题后记录下 The last packet sent successfully to the server was 0 milliseconds ago The driver has not receiv
  • Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程

    1 使用DS 5 Streamline定位瓶颈 DS 5 Streamline要求GPU驱动启用性能测试 在Mali GPU驱动中激活性能测试对性能影响微不足道 1 1 DS 5 Streamline简介 可使用DS 5 Streamlin
  • 解决VS中scanf()函数报错问题的四种方案(详细)

    scanf函数在VS中报错的主要原因是 scanf被认为不安全而被编译器默认设置为禁用 那么如何解决这个问题呢 法一 仅将函数scanf替换为scanf s即可 其他语法不变 但scanf s函数并不是C语言函数库里的标准函数 而是VS编译
  • Android中显示网页的多种方式

    在android中显示页面主要有两种方式 一种是在Activity里面直接显示网页 另一种是调用浏览器显示网页 方式不同 使用的方法也不同 下面我们分别讲解 一 在Activity里面直接显示网页 1 在Manifest xml文件里添加I
  • Ubuntu 安装anaconda后,自动进入base虚拟环境解决

    Ubuntu关闭anaconda自动进入base虚拟环境 在Ubuntu上安装完anaconda后 发现每次打开终端后都会自动进入到base的虚拟环境中去 虽然在这些环境下使用问题不大 但一些软件的安装在虚拟环境下有影响 每次使用conda
  • juc并发包整理

    目录 JUC提供了java并发编程需要的类 主要分几个大模块 1 原子类操作 2 锁 3 阻塞队列 4 并发集合 5 同步器 6 线程池 7组合式异步编程 JUC的作者Doug Lea神一样的人物 其中以上很多类的实现底层实现都是基于AQS
  • QPainter绘图工具的完善

    上一篇 QPainter实现简单的绘图程序 绘图工具 文章目录 前言 撤回功能的理解 拆分的理解 一 重绘函数的写法 二 绘制判断 三 橡皮擦 感谢各位的观看 前言 gitee工程地址 PaintTool 03 学习了简单的绘图工具后 程序
  • qt中菜单栏中添加快捷键

    使用技巧 在编辑好的qt的菜单中添加快捷键 具体添加菜单栏 可以参考博客 qt中菜单栏中实现第一个简单的打开功能 Littlehero 121的博客 CSDN博客 qt菜单栏打开文件 然后就是找到这个 或者是找到这个 双击动作 开始进行编辑
  • 算法提高 彩票 我只是觉得我的代码比较帅

    算法提高 彩票 时间限制 1 0s 内存限制 256 0MB 提交此题 问题描述 为丰富男生节活动 贵系女生设置彩票抽奖环节 规则如下 1 每张彩票上印有7个各不相同的号码 且这些号码的取值范围为 1 33 2 每次在兑奖前都会公布一个由七
  • Java基础-对象序列化

    对象序列化 作用 以内存为基准 把内存中的对象存储到磁盘文件中去 称为对象序列化 使用到的流是对象字节输出流 ObjectOutputStream package per mjn serializable import java io Se
  • Ubuntu下漏洞的修复流程

    最近需要修复cve漏洞 研究了如何在源码上修复漏洞 在这里记录一下 目录 I 介绍 漏洞和补丁 CVE漏洞 普通漏洞和CVE漏洞的区别 II 获取补丁 III 应用补丁 常见的打补丁工具 打补丁的步骤 patch的用法 I 介绍 首先介绍一
  • 最优检索二叉树

    最优检索二叉树 最优检索二叉树 抛出问题 算法的基本解决思路 空隙 检索数据的平均时间 小结 最优二叉检索树的实现算法分析 关于优化函数的递推方程 复杂性估计 总结 最优检索二叉树 抛出问题 算法的基本解决思路 空隙 所谓的空隙也就是查找的
  • 第十五讲:神州交换机端口安全配置

    知识点 开启端口安全模式 设置端口最大安全数 端口绑定MAC地址 违规处理 锁定安全端口 MAC地址与IP的绑定 端口镜像 实验拓扑如下图所示 PC机 IP地址 掩码 MAC地址 端口 PC1 192 168 1 10 255 255 25

随机推荐

  • 信息隐藏——二值图像的信息隐藏

    二值图像的信息隐藏 实验目的 使用一个特定图像区域中黑像素的个数来编码秘密信息 若某块P1 Bi gt 50 则嵌入一个1 若P0 Bi gt 50 则嵌入一个0 在嵌入过程中 为达到希望的像素关系 需要对一些像素的颜色进行调整 实验内容
  • [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇文章分享了Pvop老师
  • iOS 3DTouch的小细节

    在App启动后 添加3DTouch的快捷入口 代码如下 NSMutableArray arrShortcutItem NSMutableArray UIApplication sharedApplication shortcutItems
  • C语言程序-打印九九乘法表

    一 问题描述 使用C语言实现打印九九乘法表程序 二 程序实现 代码如下 include
  • 悲观锁(Synchronized)和乐观锁(CAS)

    文章目录 悲观锁和乐观锁 Synchronized Synchronized使用 Synchronized底层原理 Java1 6对Synchronized的优化 synchronized的等待唤醒机制 CAS CAS使用 CAS底层原理
  • 若依框架代码生成器的应用

    java后端 先设计数据库中的表 我这里的表名为 food 找到代码生成器 点击导入表 然后选择要导入的表名 这里选择的是自己的表名 点击编辑 这里填 表明和实体类的类名 一般不需要填都是自动生成的 然后作者名 可以填 自己的作者名称 生成
  • cs1.6修改服务器参数设置,[心得] cs的网络参数调整指南

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 其实HL网路新技术的引擎就是把自己的电脑每一个动作和网路紧密的连结在一起 不过世界上有太多不同的网路 所以没以办法做的一庞大的资料库自动一一校正 所以 说这麽多 就是设定成这样cl latenc
  • cmd命令进入某个目录

    每次都记不住命令 终于整理了一下 1 开始 gt 运行 gt cmd 2 进入某个磁盘 直接盘符代号 如d 然后回车 到D盘下 不用CD 命令切换 3 输入dir 可以看到d盘下的各个文件名称 3 进入除根录以外的文件夹 cd 文件夹路径
  • 链表(应用篇)

    1 概述 链表是在程序设计过程中经常使用的数据结构 bcos系统内部的调度和tasklet的实现都是基于链表 所以 对链表的支持是bcos与生俱来的特性 bcos的链表设计参考了Linux内核链表的设计思想 如果用户想使用链表只需要在自己的
  • C++基础六:C++入门知识、黑盒测试(详解)与复杂度

    cin与cout cin与cout是C 中的输入和输出函数 需要添加头文件 include
  • QT常用分层式软件架构

    第一次写博客 只做个分享吧 关于软件架构的常用模型目前找到的最详细的解说基于Qt的软件框架设计 amwha的专栏 CSDN博客 qt软件框架 1 QMainWWindow主界面类 转到线程是在实例化子界面对象时 将对应的数据处理类对象转到新
  • 笔记-TCP/IP IP地址字符串表示最大长度

    笔记 TCP IP IP地址字符串表示最大长度 IPv4 IPv6 IPv4 定义在
  • 经典vue面试题:谈一谈computed计算属性和watch监听属性的区别

    computed计算属性和watch监听的区别 computed属性 首先computed计算属性是用于在HTML模板中表达式更加简洁 易维护 特点 computed具有缓存功能 当与computed变量相关的变量值不发生改变时 一直用的是
  • windows7 64位机上配置MinGW+Codeblocks+ wxWidgets

    在Windows7 64位机子上安装配置MinGW Codeblocks wxWidgets步骤如下 1 下载mingw get inst 20111118 http sourceforge net projects mingw 2 双击m
  • vue预渲染

    vue预渲染 vue是一个单页面应用 spa 只有一个 html 文件 内容只有一个 app根节点 通过加载js脚本来填充页面要渲染的内容 然而这种方式无法被爬虫和百度搜索到 如果想对某些页面进行SEO 搜索引擎优化 优化 可以通过预渲染实
  • Springboot中使用websocket发送信息给指定用户和群发

    websocket是一种长连接协议 相较于传统的http短连接 websocket不仅可以由客户端向服务器发送消息 可以主动向客户端发起信息 经常用于及时聊天 游戏和服务器向客户端推送信息 主要优点 1 节约带宽 不停地轮询服务端数据这种方
  • 合并排序算法(详解)

    合并排序是成功应用分治技术的一个完美例子 对于一个需要排序的数组A 1 n 合并排序把它一分为二 A 1 n 2 和A n 2 1 n 并对每个子数组 进行递归排序 然后把这两个排好序的子数组合并成一个有序数组 void MergeSort
  • 微信美团支付服务器异常怎么回事,无法使用微信支付?美团回应:支付系统出现异常 已全面恢复...

    5 月 24 日消息 今日上午 美团无法微信支付 登上微博热搜 有网友反映 在点外卖的时候发现美团无法使用微信支付 今日午间 12 43 分 美团通过官方微博发布回应 今天早上 10 点 28 分 我们接到了微信支付系统出现异常抖动的通知
  • fatal: unable to access =‘https://github.com/‘: OpenSSL SSL_read: Connection was reset, errno 10054

    命令 git clone https github com binary husky chatgpt academic git 出现问题 采用了 git config global unset http proxy 命令还是不行 把 htt
  • Android自动化测试工具——Monkey

    前言 最近开始研究Android自动化测试方法 整理了一些工具 方法和框架 其中包括android测试框架 CTS Monkey Monkeyrunner benchmark 以及其它test tool等等 一 什么是Monkey Monk