Android Monkey相关
开发者文档 https://developer.android.com/studio/test/monkey?hl=zh-cn
主要是命令行工具,相关命令如下
$ adb shell 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]
基本用法
基本分为四类命令
- General 基本配置选项,查看帮助信息,运行次数等
- Events 配置各种事件的占比,如点击事件,触摸事件等的占比
- Constraints 约束选项,如指定运行包名
- Debugging 调试相关
$ adb shell monkey [options] <event-count>
General
-- help
查看帮助信息
-v
命令行上的每个-v都会增加详细级别。级别0(默认值)提供的信息除启动通知,测试完成和最终结果外几乎没有。级别1提供有关测试运行的更多详细信息,例如发送到您的活动的单个事件。级别2提供更详细的设置信息,例如选择或未选择用于测试的活动。
$ adb shell monkey -p packageName -v -v 20
Events
-s <seed>
伪随机数发生器的种子值。如果您使用相同的种子值重新运行Monkey,它将生成相同的事件序列。
$ adb shell monkey -s 30021 -p packageName 20
--throttle <milliseconds>
在事件之间插入固定的延迟。可以使用此选项来减慢Monkey的速度。如果未指定,则没有延迟,并且事件尽可能快地生成。加上这个选项模拟人操作。
$ adb shell monkey --throttle -p packageName 20
各种事件配置选项
-
--pct-touch <percent> 调整触摸事件的百分比。(触摸事件是屏幕上单个位置的下行事件。)
-
--pct-motion <percent> 调整运动事件的百分比。(运动事件包括屏幕上某处的向下事件,一系列伪随机运动和一个向上事件。)
-
--pct-trackball <percent> 调整轨迹球事件的百分比。(轨迹球事件由一个或多个随机动作组成,有时随后单击。)
-
--pct-nav <percent> 调整“基本”导航事件的百分比。(导航事件由上/下/左/右组成,作为来自方向输入设备的输入。)
-
--pct-majornav <percent> 调整“主要”导航事件的百分比。 (这些导航事件通常会导致UI中的操作,例如5向键盘中的中心按钮,后退键或菜单键。)
-
--pct-syskeys <percent> 调整“系统”键事件的百分比。 (这些是通常保留供系统使用的密钥,例如Home,Back,Start Call,End Call或Volume控件。)
-
--pct-appswitch <percent> 调整活动启动的百分比。在随机的时间间隔内,Monkey将发出一个startActivity()调用,作为最大化包中所有Activity的覆盖范围的方法。
-
--pct-anyevent <percent> 调整其他类型事件的百分比。这是所有其他类型事件的全部内容,例如按键,设备上其他较少使用的按钮等
来一条组合的命令
$ adb shell monkey -v -v -v -s 8888 --throttle 300 --pct-touch 30 --pct-motion 25 --pct-appswitch 25 --pct-majornav 5 --pct-nav 0 --pct-trackball 0 -p com.mtt.djx 10 >G:\monkey.txt
会在相应目录保存一份文件(此处为G:\monkey.txt),运行结果:
运行结果.png
Constraints
-p <allowed-package-name>
为约束命令,作用是约束只对某个应用进行测试,your.package.name是你要进行测试的应用包名,如果要对多个应用进行测试可以使用多个-p。
-c <main-category>
如果以这种方式指定一个或多个类别,则Monkey将仅允许系统访问使用指定类别之一列出的活动。如果您未指定任何类别,Monkey将选择使用Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY类别列出的活动。要指定多个类别,请多次使用-c选项 - 每个类别一个-c选项。
Debugging
-
--dbg-no-events 指定后,Monkey将执行初始启动到测试活动,但不会生成任何其他事件。为了获得最佳效果,请结合-v,一个或多个程序包约束以及非零限制以使Monkey运行30秒或更长时间。这提供了一个环境,您可以在其中监视应用程序调用的包转换。
-
--hprof 如果设置,此选项将在Monkey事件序列之前和之后立即生成分析报告。这将在data / misc中生成大(~5Mb)文件,因此请小心使用。
-
--ignore-crashes 通常,当应用程序崩溃或遇到任何类型的未处理异常时,Monkey将停止。如果指定此选项,Monkey将继续向系统发送事件,直到计数完成。
-
--ignore-timeouts 通常,当应用程序遇到任何类型的超时错误(例如“应用程序无响应”对话框)时,Monkey将停止。如果指定此选项,Monkey将继续向系统发送事件,直到计数完成。
-
--ignore-security-exceptions通常,当应用程序遇到任何类型的权限错误时,Monkey将停止,例如,如果它尝试启动需要某些权限的活动。如果指定此选项,Monkey将继续向系统发送事件,直到计数完成。
-
--kill-process-after-error 通常,当Monkey因错误而停止时,失败的应用程序将保持运行状态。设置此选项后,它将通知系统停止发生错误的进程。注意,在正常(成功)完成下,启动的进程不会停止,并且设备在最终事件之后只是处于最后状态。
-
--monitor-native-crashes 观看并报告Android系统本机代码中发生的崩溃。如果设置了--kill-process-after-error,系统将停止。
-
--wait-dbg 阻止Monkey执行,直到调试器连接到它。
$ adb shell monkey --ignore-crashes --ignore-timeouts -p packageName -v -v 20