Monkey介绍
Monkey 是 Android SDK提供的一个命令行工具,可运行在任何版本的Android模拟器和实体设备上。实际应用中,经常用来做APP的稳定性测试和压力测试,用随机重复的方法负荷测试开发的软件。
Monkey帮助文档
>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命令行中adb shell monkey -help结果
Moneky常用参数介绍
//基本参数 [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...] //单包或多包,省略则所有包执行。(注,并不是手机里所有的包都可以测试) [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...] //不常用。指定系统启动的类别;不指定,则调用Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY两个类别的Activity [-s SEED] //指定伪随机说生成器的seed值。seed相同,则两次执行的monkey测试产生的事件序列相同 [-v [-v] ...] //指定反馈信息级别,即日志的详细程度,分3级,-v , -v -v, -v -v -v。级别依次增大。一般选择-v -v -v
//-v:缺省值,仅提供启动提示,测试完成和最终结果等少量信息。
//-v -v:提供较为详细的日志,包括每个发送到的Activity的事件信息
//-v -v -v:(最详细日志,包括测试中选中和未选中的Activity。)。 [--throttle MILLISEC] //事件时延,单位毫秒,一般设置为300毫秒,实际用户最快300毫秒左右一个动作事件。若不指定,monkey执行的会很快。特别注意,看一下文末的参考资料‘2’,中所说的问题。 COUNT //操作数//调试参数 [--ignore-crashes] //常用。app发生崩溃或异常时,monkey继续执行 [--ignore-timeouts] //常用。APP出现ANR(Application Not Responding)时,monkey命令继续 [--ignore-security-exceptions] //常用。发生许可错误时,monkey继续执行。 [--monitor-native-crashes] //监视并报告本地代码的崩溃。若设置--kill....,系统停运 [--ignore-native-crashes] //出现本地崩溃或异常时,monkey仍运行 [--kill-process-after-error] // 若APP发生错误,则通知系统停止出错的进程。若成功执行monkey,则不停止启动的进程。 //事件参数(部分) 注:PERCENT为1-100数字,所有参数总和不能大于100 [--pct-touch PERCENT] //触摸,一个down-up事件, [--pct-motion PERCENT] //动作,一个down,一系列伪随机移动,一个up事件组成 [--pct-trackball PERCENT] //滚动球,一个或多个随机的motion事件,有时会伴随点击事件。 [--pct-syskeys PERCENT] //系统事件,Home,Back,Start Call,End Call,音量调节。 [--pct-nav PERCENT] //基本导航,方向输入设备的上下左右键 [--pct-majornav PERCENT] //主要导航事件,通常会导致UI界面的动作事件,如5-way键盘的中间键,回车键,菜单键 [--pct-appswitch PERCENT] //Activity的启动 [--pct-anyevent PERCENT] //其他事件,如按键,其他在设备上不常用的按钮 [--pct-permission PERCENT]
Monkey其他参数列表
//剩余参数 [--hprof] //在事件序列前后,立即生成profilfing report [--match-description TEXT] [--pct-flip PERCENT] [--pct-pinchzoom PERCENT] //缩放(捏)事件 [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE] [--pkg-whitelist-file PACKAGE_WHITELIST_FILE] [--wait-dbg] //暂停执行中的monkey,直到有调试器与它连接 [--dbg-no-events] //监视应用程序所调用的包之间的转换 [--setup scriptfile] [-f scriptfile [-f scriptfile] ...] [--port port] [--randomize-throttle] [--profile-wait MILLISEC] [--device-sleep-time MILLISEC] [--randomize-script] [--script-log] [--bugreport] [--periodic-bugreport] [--permission-target-system]monkey剩余参数列表
备注:在执行向下滑动的命令时,打开了通知栏,然后又开始了瞎点的操作。这时可在执行monkey命令之前,先执行禁用通知栏的命令[2]
禁用通知栏命令: adb shell settings put global policy_control immersive.full=*
解除禁用命令: adb shell settings put global policy_control null
解释:禁用时,只是完全隐藏,当手机或鼠标在界面顶部向下滑时(界面底部向上滑时),通知栏和下方三键会显示出来。
参考资料:
1. 移动端自动化测试----Monkey . 简书 . 我为峰2014
2. adb shell monkey常用命令 . 简书 . 我是龙俊
3. 关于 monkey 的--throttle 参数 . TesterHome . 评论区17楼和21楼的解释