monkey测试命令
Monkey
举例:adb shell monkey –p cn.com.pconline.android.browser -v 1000 > d:\log_20201102.txt
用法:
C:\Users\wztshine>adb shell
a9xproltechn:/ $ monkey
args: []
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 <事件数>
可以让monkey 自动执行多少个随机操作
adb shell monkey 20
- 日志:三种详细程度:
-v, -v -v, -v -v -v
adb shell monkey -v 20
- seed 复现步骤:seed 是某个步骤的号,通过 "-s seed号" 可以指定当前事件的 seed 号,然后通过这个 seed 号,可以复现之前的步骤。操作序列虽然是随机生成的,但只要指定了相同的 Seed值,就可以保证两次测试产生的随机操作序列完全相同
adb shell monkey -v -s 234 20
- 事件间的时间间隔:
--throttle 毫秒数
adb shell monkey --throttle 3000 20
- 各种事件类型占比:
--pct-touch 百分比
adb shell monkey -v --pct-touch 90 20
- 忽略崩溃等错误,使monkey脚本继续运行:
--ignore-crashes
adb shell monkey -v --ignore-crashes 20
- 忽略超时异常:
--ignore-timeouts
adb shell monkey -v --ignore-timeouts 20
类型 | 选项 | 说明 |
---|---|---|
日志 | -v |
-v level 0(缺省值)除启动、测试完成和最终的结果之外,提供较少的信息。-v –v Level 1 提供较为详细的测试信息,如逐个发送到的Activity的事件; -v –v –v level 3 提供极为详细的测试信息,如测试中被选中的或者未被选中的Activity |
事件 | -s <seed> |
伪随机数生成器 seed 值,如果使用相同的 seed 值,会产生相同的事件序列 |
延迟 | --throttle <milliseconds> |
在事件之间插入延迟,通过这个选项可以减缓 Monkey 的执行速 |
随机延迟 | --randomize-throttle |
在事件之间插入随机延迟,通过这个选项可以减缓 Monkey 的执行速 |
--pct-touch <percent> |
调整触摸事件的百分比(一个触摸事件是由一个 down 事件和一个 up 事件组合完成)即按下与抬起。对应代码0 | |
--pct-rotation |
调整旋转事件的百分比,对应代码4。该事件由一个 rotation 事件组成,其中 degree 表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向 | |
--pct-pinchzoom |
调整缩放事件的百分比,对应代码2 | |
--pct-motion <percent> |
调整动作事件百分比,动作事件是有屏幕上某处的一个down事件,一系列的伪随机事件和一个up事件组成。例如滑动屏幕。对应代码1 | |
--pct-trackball <percent> |
调整轨迹球事件的百分比,轨迹事件是由一个或几个随机的移动组成,有时还伴随着点击事件。对应代码3 | |
--pct-nav <percent> |
调整基本导航事件的百分比,导航事件由安卓手机本身的 up、down、left、right 事件组成,用的较少。对应代码5 | |
--pct-majornav <precent> |
调整主要航事件百分比,如键盘的中间键,回退按键、菜单按键,对应代码6 | |
--pct-syskeys <precent> |
调整按键事件的百分比,这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键,对应代码7 | |
--pct-appswitch <precent> |
调整 Activity 启动的百分比。(在随机的时间间隔中,Monkey 将执行一个 startActivity() 调用,作为最大程度覆盖被测包中全部 Activity 的一种方法)对应代码8 | |
--pct-anyevent <precent> |
调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等),对应代码10 | |
--pct-flip <precent> |
翻译翻转,键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回 ,对应代码9 | |
约束条件 | -p <allowed-package-name> |
如果你指定一个或多个包,Monkey 将只允许访问这些包中的 Activity。如果你的应用程序需要访问这些包(如选择联系人)以外的 Activity,你需要指定这些包。如果你不指定任何包,Monkey 将允许系统启动所有包的 Activity。指定多个包,使用多个 -p,一个 -p 后面接一个包名。其实就是设置白名单,只允许执行某些包 |
--pkg-blacklist-file <存放包名的txt文件路径> |
设置黑名单,即不执行的 apk 应用 | |
--pkg-whitelist-file <存放包名的txt文件路径> |
设置白名单,即只执行的 apk 应用,作用和 -p 一样,注意,黑白名单只能设置其中一种,即不能同时既设置黑名单,又设置白名单 | |
-c <main-category> |
如果你指定一个或多个类别,Monkey 将只允许系统启动这些指定类别中列出的 Activity。如果你不指定任何类别,Monkey 将选择谢列类别中列出的Activity,Intent.CATEGORY_LAUNCHER 和 Intent.CATEGORY_MONKEY。指定多个类别使用多个 -c,每个 -c 指定一个类别。 | |
--port |
为 monkey 开启专用端口。此时 monkey 不会帮你乱点击,而此时你自己就是一只 monkey 了,在你乱点的时候,monkey会输出你点击后回馈的信息。如果你打完命令之后模拟器上没有启动你所要启动的包,你需要自己启动,但是你只能启动你-p中指定的那几个包。ctrl+c中断 | |
--step [-f scriptfile] |
指定运行 scriptfile 的一些 monkey 事件,可以实现部分简单有序的功能 | |
调试 | --dbg-no-events |
设置此选项,Monkey将执行初始启动,进入一个测试Activity,并不会在进一步生成事件,即monkey会启动待测应用,但不发送任何消息。为了得到最佳结果,结合参数-v,一个或多个包的约束,以及一个保持Monkey运行30秒或更长时间的非零值,从而提供了一个可以监视应用程序所调用的包之间转换的环境。 |
--hprof |
设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。 这将会在data/misc中生成大文件(~5Mb) | |
--ignore-crashes |
通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将 继续向系统发送事件,直到计数完成。 | |
--ignore-timeouts |
通常,当应用程序发生任何超时错误(如“Application Not Responding”对 话框)时,Monkey将停止运行。如果设置此选项,Monkey将继 续向系统发送事件,直到计数完成 | |
--ignore-security-exceptions |
通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。 | |
--kill-process-after-error |
通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系 统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之 后,简单地保持在最后的状态。 | |
--monitor-native-crashes |
监视并报告Android系统中本地代码的崩溃事件。如果设置了--kill-process-after-error, 系统将停止运行。 | |
--wait-dbg |
停止执行中的Monkey,直到有调试器和它相连接 |
辅助命令:
-
adb 命令
adb devices # 查看连接的所有设备 adb shell # 进入手机shell adb -s <device id> shell # 多个设备时,进入某个手机的shell adb disconnect # 断开所有连接 adb connect 192.168.1.100 # 连接某个设备 adb kill-server # 关闭adb命令 adb start-server # 启动adb adb -s <device id> root # root adb -s <devices id> remount # remount
-
列出手机安装的包
adb shell pm list packages -3 adb shell pm list packages
-
adb获取包名以及当前运行的activity
C:\Users\wztshine>adb shell a9xproltechn:/ $ dumpsys window windows|grep -E 'mCurrentFocus|FocusedApp' mCurrentFocus=Window{e2607e2 u0 com.sankuai.meituan/com.sankuai.waimai.business.page.homepage.TakeoutActivity} # / 前面是包名,/后面是activity名 mFocusedApp=AppWindowToken{ac1afe4 token=Token{13d0152 ActivityRecord{a0171dd u0 com.sankuai.meituan/com.sankuai.waimai.business.page.homepage.TakeoutActivity t214}}}
-
启动App应用
adb shell am start -n package/package-activity adb shell am start -n com.twitter.android/com.twitter.android.StartActivity
-
安装APK
adb install twitter.apk adb install-multiple *.apk
-
卸载APK
adb uninstall packageName //卸载时保留数据和缓存目录 adb uninstall -k packageName //清除缓存 adb shell pm clear packageName
-
手机和电脑传输数据
adb pull /sdcard/gen.apk ~/virtual # 从手机传输到电脑 adb push ~/Desktop/image/timg.jpg /sdcard/DCIM/Camera/timg.jpg # 从电脑传输到手机
-
通过keyevent来控制设备
adb shell input keyevent 26 # 点亮/熄灭手机屏幕
-
杀掉monkey进程:
adb shell $ ps -A|grep monkey $ kill -9 <pid>