Android 随机测试工具 Monkey


在 Android 开发中,测试是确保应用程序质量和稳定性的重要环节。为了自动化测试过程,Android 提供了一个强大的工具,即 Monkey

一、什么是 Android Monkey?

Android Monkey 是一个强大的命令行工具,旨在帮助开发人员进行压力测试和稳定性测试。它可以向系统发送随机的用户事件流,如点击、滑动、按键等,模拟用户的随机操作。通过模拟这些随机事件,可以快速地对应用程序进行压力测试,开发人员可以发现应用程序中的潜在问题和异常行为,如崩溃 Crash、ANR(Application Not Responding)等问题,以便及早发现并解决。

二、Monkey测试的原理

Monkey的工作原理很简单:它会向系统发送大量的随机事件,这些事件包括:

  • 触摸屏事件: 模拟用户触摸屏幕、滑动屏幕等操作。
  • 按键事件: 模拟用户按下各种按键,如音量键、返回键等。
  • 启动Activity: 随机启动应用中的各个Activity。
  • Broadcast Intent: 发送各种广播Intent。

Monkey会根据指定的参数,随机生成这些事件,并将其发送给系统。系统接收到这些事件后,会将它们分发给相应的应用程序,从而模拟用户的实际操作。

三、Android Monkey 的功能和用途

  1. 压力测试:Android Monkey 可以模拟大量用户事件,帮助开发人员测试应用程序在高负载情况下的表现。这有助于发现潜在的性能问题和内存泄漏。

  2. 稳定性测试:通过模拟用户的随机操作,Android Monkey 可以帮助发现应用程序在不同场景下的崩溃和异常行为,从而提高应用的稳定性。

  3. 自动化测试:Android Monkey 可以作为自动化测试的一部分,帮助开发团队快速发现并解决问题,节省时间和人力成本。

四、如何使用 Android Monkey?

4.1 monkey用法说明

monkey 是一个用于在Android应用程序上生成伪随机用户事件流以进行压力测试和功能测试的工具。以下是它的详细参数说明:

C:\Users\Admin>adb shell monkey -help
  bash arg: -help
args: [-help]
 arg: "-help"
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]
              [--match-description TEXT]
              [--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] [--pct-pinchzoom PERCENT]
              [--pct-permission 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]
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              [--permission-target-system]
              COUNT

参数说明:

  • -p ALLOWED_PACKAGE: 指定允许测试的应用程序包名。
  • -c MAIN_CATEGORY: 指定允许测试的主活动类别。
  • –ignore-crashes: 忽略应用程序崩溃。
  • –ignore-timeouts: 忽略超时。
  • –ignore-security-exceptions: 忽略安全异常。
  • –monitor-native-crashes: 监控本地崩溃。
  • –ignore-native-crashes: 忽略本地崩溃。
  • –kill-process-after-error: 在发生错误后终止进程。
  • –hprof: 在每个事件后生成堆使用情况分析文件。
  • –match-description TEXT: 包含指定文本描述的活动。
  • –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: 任何类型事件的百分比。
  • –pct-pinchzoom PERCENT: 缩放手势事件的百分比。
  • –pct-permission PERCENT: 权限相关事件的百分比。
  • –pkg-blacklist-file PACKAGE_BLACKLIST_FILE: 黑名单文件,包含要排除的应用程序包名。
  • –pkg-whitelist-file PACKAGE_WHITELIST_FILE: 白名单文件,包含要包含的应用程序包名。
  • –wait-dbg: 等待调试器附加。
  • –dbg-no-events: 在等待调试器附加时禁止发送事件。
  • –setup scriptfile: 在开始测试前运行设置脚本。
  • -f scriptfile: 包含脚本命令的脚本文件。
  • –port port: 指定远程控制命令的端口号。
  • -s SEED: 伪随机数生成器的种子值。
  • -v: 输出详细信息的级别(可以多次使用增加详细程度)。
  • –throttle MILLISEC: 事件之间的延迟时间(毫秒)。
  • –randomize-throttle: 对延迟时间进行随机化。
  • –profile-wait MILLISEC: 采样器之间的延迟时间(毫秒)。
  • –device-sleep-time MILLISEC: 设备休眠/唤醒周期之间的延迟时间(毫秒)。
  • –randomize-script: 随机化脚本执行顺序。
  • –script-log: 记录执行的脚本事件。
  • –bugreport: 在monkey测试结束后生成bug报告。
  • –periodic-bugreport: 在测试过程中定期生成bug报告。
  • –permission-target-system: 仅发送事件给系统应用程序。
  • COUNT:设置执行的次数

每个 -v 都将增加反馈信息的级别。共3个级别,因此 -v -v -v 可以提供最详细的设置信息。
-v:0级,除启动提示、测试完成和最终结果外提供较少信息。
-v -v:1级,提供较详细测试信息,如逐个发送到 Activity 的事件。
-v -v -v:2级,提供更详细安装信息,如测试中被选中或未被选中的 Activity

4.2 monkey测试示例

monkey -p com.example.myapp --ignore-crashes --pct-touch 50 --pct-motion 25 --throttle 200 1000

这个示例命令将对包名为com.example.myapp的应用程序进行测试:

  • 忽略应用程序崩溃
  • 触摸事件占50%、动作事件占25%
  • 事件之间的延迟为200毫秒
  • 生成1000个事件

这样的测试可以模拟用户的基本操作和常见场景,帮助发现应用程序在压力下的表现和潜在问题。

五、结语

Android Monkey 是一个强大的测试工具,可以帮助开发人员发现应用程序中的潜在问题和提高应用的质量。通过结合其他测试方法和工具,如单元测试、UI 测试等,可以构建一个全面的测试策略,确保应用程序的稳定性和可靠性。

[1] https://developer.android.com/studio/test/monkeyrunner
[2] https://www.jianshu.com/p/9440eb5cb236
[3] https://blog.51cto.com/u_16099242/9963903

  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值