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
  1. 最简单的命令:adb shell monkey <事件数> 可以让monkey 自动执行多少个随机操作
adb shell monkey 20
  1. 日志:三种详细程度: -v, -v -v, -v -v -v
adb shell monkey -v 20
  1. seed 复现步骤:seed 是某个步骤的号,通过 "-s seed号" 可以指定当前事件的 seed 号,然后通过这个 seed 号,可以复现之前的步骤。操作序列虽然是随机生成的,但只要指定了相同的 Seed值,就可以保证两次测试产生的随机操作序列完全相同
adb shell monkey -v -s 234 20
  1. 事件间的时间间隔:--throttle 毫秒数
adb shell monkey --throttle 3000 20
  1. 各种事件类型占比:--pct-touch 百分比
adb shell monkey -v --pct-touch 90 20
  1. 忽略崩溃等错误,使monkey脚本继续运行: --ignore-crashes
adb shell monkey -v --ignore-crashes 20
  1. 忽略超时异常:--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,直到有调试器和它相连接

辅助命令:

  1. 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
    
  2. 列出手机安装的包

    adb shell pm list packages -3
    adb shell pm list packages
    
  3. 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}}}
    
  4. 启动App应用

    adb shell am start -n package/package-activity
    adb shell am start -n com.twitter.android/com.twitter.android.StartActivity
    
  5. 安装APK

    adb  install twitter.apk
    adb  install-multiple *.apk
    
  6. 卸载APK

    adb uninstall packageName //卸载时保留数据和缓存目录
    adb uninstall -k packageName //清除缓存
    adb shell pm clear packageName
    
  7. 手机和电脑传输数据

    adb pull /sdcard/gen.apk ~/virtual  # 从手机传输到电脑
    adb  push ~/Desktop/image/timg.jpg /sdcard/DCIM/Camera/timg.jpg # 从电脑传输到手机
    
  8. 通过keyevent来控制设备

    adb shell input keyevent 26 # 点亮/熄灭手机屏幕
    
  9. 杀掉monkey进程:

    adb shell
    $ ps -A|grep monkey
    $ kill -9 <pid>
    
posted @ 2021-01-31 22:06  wztshine  阅读(584)  评论(0编辑  收藏  举报