news 2026/6/25 0:31:37

APP稳定性测试神器Monkey全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
APP稳定性测试神器Monkey全解析

Monkey是一个在模拟器或设备上运行的程序,可生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。您可以使用 Monkey 以随机且可重复的方式对正在开发的应用进行压力测试。

01 概 览

Monkey是一个命令行工具,可以在任何模拟器实例或设备上运行。它会将伪随机用户事件流发送到系统中,从而对您正在开发的应用软件进行压力测试。

Monkey包含许多选项,主要分为以下四个类别:

基本配置选项,例如设置要尝试的事件数。

操作限制条件,例如将测试对象限制为单个软件包。

事件类型和频率。

调试选项。

Monkey在运行时会生成事件并将其发送到系统。它还会监视被测系统并查找三种特殊情况:

如果您已将 Monkey 限制为在一个或多个特定软件包中运行,它会监视并阻止转到任何其他软件包的尝试。

如果应用崩溃或收到任何未处理的异常,Monkey 会停止并报告错误。

如果应用生成“应用无响应”错误,Monkey 会停止并报告错误。

根据您选择的详细程度级别,您还将看到有关 Monkey 进度和所生成事件的报告。

02 Monkey的基本用法

您可以使用开发计算机上的命令行启动 Monkey,也可以通过脚本启动。由于Monkey在模拟器/设备环境中运行,因此您必须从该环境中通过shell启动它。为此,您可以在每个命令前面加上 adb shell,或者直接进入 shell 并输入 Monkey 命令。

基本语法如下:

adb shell monkey [options] <event-count>

如果未指定任何选项,Monkey 将以静默(非详细)模式启动,并将事件发送到目标上安装的任何(及所有)软件包。下面是一个更典型的命令行,它会启动您的应用并向其发送 500 个伪随机事件:

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

03 命令选项参考

1、常规

输出简单的使用指南:

–help

命令行上的每个 -v 都会增加详细程度级别。

级别 0(默认值)只提供启动通知、测试完成和最终结果。

级别 1 提供有关测试在运行时的更多详细信息,例如发送到您的 Activity 的各个事件。

级别 2 提供更详细的设置信息,例如已选择或未选择用于测试的 Activity。

–v

2、事件

伪随机数生成器的种子值。如果您使用相同的种子值重新运行 Monkey,它将会生成相同的事件序列。

-s

在事件之间插入固定的延迟时间。您可以使用此选项减慢 Monkey 速度。如果未指定,则不延迟,系统会尽快地生成事件。

-throttle

调整轻触事件所占百分比。(轻触事件是指屏幕上的单个位置上的按下/释放事件。)

-pct-touch

调整动作事件所占百分比。(动作事件包括屏幕上某个位置的按下事件,一系列伪随机动作和一个释放事件。)

-pct-motion

调整轨迹球事件所占百分比。(轨迹球事件包括一个或多个随机动作,有时后跟点击。)

-pct-trackball

调整“基本”导航事件所占百分比。(导航事件包括向上/向下/向左/向右,作为方向输入设备的输入。)

-pct-nav

调整“主要”导航事件所占百分比。(这些导航事件通常会导致界面中的操作,例如 5 方向键的中间按钮、返回键或菜单键。)

-pct-majornav

调整“系统”按键事件所占百分比。(这些按键通常预留供系统使用,例如“主屏幕”、“返回”、“发起通话”、“结束通话”或“音量控件”。)

-pct-syskeys

调整 Activity 启动次数所占百分比。Monkey 会以随机间隔发起 startActivity() 调用,以最大限度地覆盖软件包中的所有 Activity。

-pct-appswitch

调整其他类型事件所占百分比。这包括所有其他类型的事件,例如按键、设备上的其他不太常用的按钮等等

-pct-anyevent

3、约束

如果您通过这种方式指定一个或多个软件包,Monkey 将仅允许系统访问这些软件包内的 Activity。

如果应用需要访问其他软件包中的 Activity(例如选择联系人),您还需要指定这些软件包。

如果未指定任何软件包,Monkey 将允许系统启动所有软件包中的 Activity。

如需指定多个软件包,请多次使用 -p 选项,每个软件包对应一个 -p 选项。

-p

如果您通过这种方式指定一个或多个类别,Monkey 将仅允许系统访问其中一个指定类别中所列的 Activity。

如果没有指定任何类别,Monkey 会选择 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 类别所列的 Activity。

要指定多个类别,请多次使用 -c 选项 - 每个类别对应一个 -c 选项。

-c

4、调试

指定后,Monkey 将初始启动到测试 Activity,但不会生成任何其他事件。为了获得最佳结果,请结合使用 -v、一个或多个软件包约束条件以及非零限制,以使 Monkey 运行 30 秒或更长时间。这提供了一个环境,您可以在其中监控应用调用的软件包转换操作。

-dbg-no-events

如果设置此选项,则会在 Monkey 事件序列之前和之后立即生成分析报告。这将在 data/misc 下生成大型(约为 5Mb)文件,因此请谨慎使用

-hprof

通常,当应用崩溃或遇到任何类型的未处理异常时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。

-ignore-crashes

通常,当应用遇到任何类型的超时错误(例如“应用无响应”对话框)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。

-ignore-timeouts

通常,当应用遇到任何类型的权限错误(例如,如果它尝试启动需要特定权限的 Activity)时,Monkey 将会停止。如果指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。

-ignore-security-exceptions

通常,当 Monkey 因出错而停止运行时,出现故障的应用将保持运行状态。设置此选项后,它将会指示系统停止发生错误的进程。注意,在正常(成功)完成情况下,已启动的进程不会停止,并且设备仅会处于最终事件之后的最后状态。

-kill-process-after-error

监视并报告 Android 系统原生代码中发生的崩溃。如果设置了 –kill-process-after-error,系统将会停止。

-monitor-native-crashes

阻止 Monkey 执行,直到为其连接了调试程序。

-wait-dbg

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 19:21:48

SpringBoot启动太慢?几个优化技巧

SpringBoot启动太慢&#xff1f;几个优化技巧 项目越做越大&#xff0c;SpringBoot启动时间从几秒变成了30多秒。 改一行代码等半分钟&#xff0c;效率太低了。今天分享几个优化技巧&#xff0c;亲测有效。 先找到慢在哪 优化之前&#xff0c;先看看时间花在哪了。 SpringBoot …

作者头像 李华
网站建设 2026/6/24 16:04:53

Micro 和 Macro 区别

Micro TP/FP/FN 与 一般&#xff08;Macro&#xff09;TP/FP/FN 的区别 在机器学习评估中&#xff0c;Micro 和 Macro 代表两种根本不同的评估策略&#xff0c;它们计算TP&#xff08;真阳性&#xff09;、FP&#xff08;假阳性&#xff09;和FN&#xff08;假阴性&#xff09;…

作者头像 李华
网站建设 2026/6/24 6:39:47

【甲基化研究必看】:基于R的DMP和DMR检测完整流程解析

第一章&#xff1a;甲基化差异分析概述DNA甲基化是表观遗传调控的重要机制之一&#xff0c;通过在胞嘧啶的5端添加甲基集团&#xff0c;影响基因的表达活性而不改变DNA序列。甲基化差异分析旨在识别不同生物学条件下&#xff08;如疾病与正常组织&#xff09;之间甲基化水平显著…

作者头像 李华
网站建设 2026/6/24 21:56:02

基于单片机AT89C2051的音乐盒设计

一、系统设计背景与总体架构 传统机械音乐盒结构复杂、旋律固定&#xff0c;难以满足个性化需求。基于单片机AT89C2051的音乐盒&#xff0c;通过程序控制实现多首旋律播放&#xff0c;具有体积小、功耗低、可灵活更换曲目等优势&#xff0c;适配礼品、装饰等场景。 系统以AT89C…

作者头像 李华
网站建设 2026/6/24 13:17:24

QUIC协议加持下,HTTP/3为何能彻底改变网络延迟?,深度剖析底层机制

第一章&#xff1a;HTTP/3 的性能HTTP/3 作为新一代超文本传输协议&#xff0c;显著提升了网络通信的效率与可靠性。其核心改进在于底层传输协议从 TCP 切换为基于 UDP 的 QUIC 协议&#xff0c;有效解决了队头阻塞问题&#xff0c;并大幅缩短了连接建立时间。连接建立速度提升…

作者头像 李华