• Monkey命令


    目录

    一、Monkey测试简介

    二、Monkey程序介绍

    三、Monkey命令的简单帮助

    四、Monkey命令参数介绍

    1) 参数:-p

    2) 参数:  -v

    日志级别 Level0 

    日志级别 Level 1

    日志级别 Level 2

    3)参数:-s

    4) 参数: --throttle <毫秒>

    5) 参数:--ignore-crashes

    6) 参数:--ignore-timeouts (无响应ANR)

    7) 参数:--ignore-security-exceptions (许可证书崩溃)

    8) 参数:--kill-process-after-error(发生错误停止运行并保持当前状态)

    9)参数:--monitor-native-crashes(监视并报告Androids系统本地代码的崩溃事件) 

    10) 参数:  --pct-{+事件类别}{+事件类别百分比}

    参数: --pct-touch {+百分比}

    参数:--pct-motion {+百分比}

    参数: --pct-trackball {+百分比}

    参数: --pct-nav {+百分比}

    参数: --pct-majornav {+百分比}

    参数: --pct-syskeys {+百分比}

    参数: --pct-appswitch {+百分比}

    参数: --pct-anyevent {+百分比}

    五、Monkey命令使用常遇问题及处理


    一、Monkey测试简介

    Monkey测试是一种随机测试的技术,用于检测软件系统的稳定性和健壮性。在这种测试中,测试工具会随机地执行各种操作,如点击、滑动、输入等,以模拟用户的行为,从而揭示系统中的潜在缺陷或问题。Monkey测试通常用于测试Android应用程序,但也可以应用于其他类型的应用程序。它可以帮助开发人员发现和修复应用程序中的问题,同时提高应用程序的质量和可靠性。

    二、Monkey程序介绍

    1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;

    2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;

    这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。 

    三、Monkey命令的简单帮助

    要获取Monkey命令自带的简单帮助,在CMD中执行命令:

    adb shell monkey –help
    1. ```
    2. usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
    3. [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
    4. [--ignore-crashes] [--ignore-timeouts]
    5. [--ignore-security-exceptions]
    6. [--monitor-native-crashes] [--ignore-native-crashes]
    7. [--kill-process-after-error] [--hprof]
    8. [--match-description TEXT | --pct-touch | --pct-motion |
    9. --pct-trackball | --pct-syskeys | --pct-nav |
    10. --pct-majornav | --pct-appswitch | --pct-flip |
    11. --pct-anyevent | --pct-pinchzoom | --pct-permission]
    12. [--pct-screenshot] [--pct-syskeys] [--randomize-throttle]
    13. [--wait-dbg] [--dbg-no-events] [--setup] [-s SEED]
    14. [--throttle MILLISEC] [--randomize-script] [--script-log]
    15. [--bugreport] [--periodic-bugreport] [--permission-target-system]
    16. [--permission-target-all] [-v [-v] ...]
    17. [--output-format {simple,compact,full}]
    18. [--agent-agent]
    19. COUNT
    20. -p ALLOWED_PACKAGE: 规定被允许测试的包名
    21. -c MAIN_CATEGORY: 规定测试时默认启动的 Activity 的 category
    22. --ignore-crashes: 忽略崩溃
    23. --ignore-timeouts: 忽略超时
    24. --ignore-security-exceptions: 忽略安全性异常
    25. --monitor-native-crashes: 监控并报告本地崩溃事件
    26. --ignore-native-crashes: 忽略本地崩溃事件
    27. --kill-process-after-error: 在发生错误后杀死进程
    28. --hprof: 在发生错误时生成内存转储文件
    29. --match-description TEXT: 匹配包含指定文本的事件
    30. --pct-touch: 规定“触摸”事件的百分比
    31. --pct-motion: 规定“移动”事件的百分比
    32. --pct-trackball: 规定“轨迹球”事件的百分比
    33. --pct-syskeys: 规定“系统”事件的百分比
    34. --pct-nav: 规定“导航”事件的百分比
    35. --pct-majornav: 规定“重要导航”事件的百分比
    36. --pct-appswitch: 规定“应用切换”事件的百分比
    37. --pct-flip: 规定“翻转”事件的百分比
    38. --pct-anyevent: 规定任何事件的百分比
    39. --pct-pinchzoom: 规定“双指缩放”事件的百分比
    40. --pct-permission: 规定“权限请求”事件的百分比
    41. --pct-screenshot: 规定“屏幕截图”事件的百分比
    42. --randomize-throttle: 随机化输入间隔时间
    43. --wait-dbg: 等待调试器连接后,再开始运行
    44. --dbg-no-events: 不向设备发送任何事件,只打印调试信息
    45. --setup: 只需启动设备,并不执行任何测试 (用于检查设备是否连接成功)
    46. -s SEED: 设置随机数种子
    47. --throttle MILLISEC: 规定事件输入之间的间隔时间,单位为毫秒
    48. --randomize-script: 随机播放事件脚本
    49. --script-log: 以脚本形式记录事件
    50. --bugreport: 在脚本执行结束后,收集设备信息并生成 Bug 报告
    51. --periodic-bugreport: 在脚本执行期间定期生成 Bug 报告
    52. --permission-target-system: 只测试系统权限
    53. --permission-target-all: 测试所有权限
    54. -v: 打印更详细的调试信息 (-v: verbose, -vv: extra verbose)
    55. --output-format {simple,compact,full}: 规定日志输出格式,分别为简单、紧凑、完整
    56. --agent-agent: 以 Agent 方式运行
    57. COUNT: 指定要执行的事件数量
    58. ```

    四、Monkey命令参数介绍

    1) 参数:-p

    参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

    * 指定一个包:

     adb shell monkey -p com.htc.Weather 100

    说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

    * 指定多个包:

    adb shell monkey -p com.htc.Weatherp com.htc.pdfreader  -p com.htc.photo.widgets 100

    * 不指定包:

    adb shell monkey 100

    说明:Monkey随机启动APP并发送100个随机事件。

    * 要查看设备中所有的包,在CMD窗口中执行以下命令: 

    1. >adb shell
    2.   #cddata/data
    3.   #ls

      

    2) 参数:  -v

    用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

    日志级别 Level0 

    示例

     adb shellmonkey -p com.htc.Weather –v 100

    说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

    日志级别 Level 1

    示例

    adb shellmonkey -p com.htc.Weather –v -v 100

    说明  提供较为详细的日志,包括每个发送到Activity的事件信息

    日志级别 Level 2

    示例

    adb shellmonkey -p com.htc.Weather –v -v –v 100

    说明  最详细的日志,包括了测试中选中/未选中的Activity信息

    3)参数:-s

    用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

    * 示例:

     Monkey测试1:

    adb shell monkey -p com.htc.Weather –s 10 100

      Monkey 测试2:

    adb shell monkey -p com.htc.Weather–s 10 100

       两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽   然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

    4) 参数: --throttle <毫秒>

    用于指定用户操作(即事件)间的时延,单位是毫秒;

    * 示例:

    adb shell monkey -p com.htc.Weather –throttle 3000 100

      

    5) 参数:--ignore-crashes

    用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

    * 示例1:

    adb shellmonkey -p com.htc.Weather --ignore-crashes 1000

      测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

    * 示例2:

    adb shellmonkey -p com.htc.Weather 1000

      测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

    6) 参数:--ignore-timeouts (无响应ANR)

    "--ignore-timeouts"是一个adb命令的选项。当使用"adb shell am start"命令启动应用程序时,如果应用程序在启动过程中出现长时间等待或ANR(无响应)错误,则该命令可以忽略该错误,继续运行应用程序。

    这个选项对于测试人员特别有用,因为它允许他们测试应用程序的性能和响应时间,而不必担心应用程序在启动过程中出现ANR错误而停止运行。但是,使用此选项时,请务必注意应用程序的行为,并确保其在真实设备上的性能与在模拟器上的性能相同。

    7) 参数:--ignore-security-exceptions (许可证书崩溃)

    "--ignore-security-exceptions" 是 Android 平台上的一个选项,用于忽略应用程序中的许可证书错误或异常,允许应用程序继续执行。通常情况下,Android 应用程序需要在运行时验证其许可证书是否有效,以确保应用程序只能在有效许可证下运行。但有时许可证书出现异常或错误,导致应用程序无法验证其许可证书,从而阻止应用程序继续执行。在这种情况下,使用该选项可以忽略许可证书错误或异常,使应用程序继续执行。但同时也可能会导致安全问题,因此需要谨慎使用。

    8) 参数:--kill-process-after-error(发生错误停止运行并保持当前状态)

    --kill-process-after-error是一个命令行参数,当设置为true时,表示在程序发生错误时,立即停止运行并保持当前状态。这个参数通常用在自动化测试中,可以确保测试用例在失败时不会继续运行导致更多的错误。

    例如,在运行自动化测试时,如果一个用例失败了,一般会停止执行所有用例,此时--kill-process-after-error参数就派上用场了。当设置该参数为true时,程序在遇到失败的用例时就会立即停止,并保持当前状态,以便调试和分析错误。

    9)参数:--monitor-native-crashes(监视并报告Androids系统本地代码的崩溃事件) 

    --monitor-native-crashes 是 Android Debug Bridge(ADB)命令的一个选项,用于在应用程序崩溃时监视并报告 Android 系统本地代码的崩溃事件。当应用程序崩溃时,该选项启用 ADB 以便它可以监视崩溃堆栈跟踪中的本地库函数,并将这些信息报告回开发人员以便进行后续调试。

    该选项的语法为:

    adb shell am start -n com.example.app/.MainActivity --monitor-native-crashes
    

    使用该选项可以更方便地调试应用程序崩溃问题,并快速找出根本原因。

    10) 参数:  --pct-{+事件类别}{+事件类别百分比}

    用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)

    参数: --pct-touch {+百分比}

    使用说明:

    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

    示例:

    adb shell monkey -p com.htc.Weather--pct-touch 10 1000

    参数:--pct-motion {+百分比}

    使用说明:

    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)

    示例:

    adb shell monkey -p com.htc.Weather --pct-motion 20 1000

    参数: --pct-trackball {+百分比}

    使用说明:

    调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

    示例:

    adb shell monkey -p com.htc.Weather--pct-trackball 30 1000

    参数: --pct-nav {+百分比}

    使用说明:

    调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    示例:

    adb shell monkey -p com.htc.Weather--pct-nav 40 1000

    参数: --pct-majornav {+百分比}

    使用说明:

    调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    示例:

    adb shell monkey -p com.htc.Weather--pct-majornav 50 1000

    参数: --pct-syskeys {+百分比}

    使用说明:

    调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    示例:

    adb shell monkey -p com.htc.Weather--pct-syskeys 60 1000

    参数: --pct-appswitch {+百分比}

    使用说明:

    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

    示例:

    adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000

    参数: --pct-anyevent {+百分比}

    使用说明:

    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

    示例:

    adb shell monkey -p com.htc.Weather --pct -anyevent 100 1000

    * 指定多个类型事件的百分比:

    示例:

    adb shell monkey -p com.htc.Weather--pct-anyevent 50 --pct-appswitch 50 1000

    注意:各事件类型的百分比总数不能超过100%;

    五、Monkey命令使用常遇问题及处理

    1. 无法连接到 SSH:这通常是由于网络连接问题引起的。请确保您的网络连接正常,并检查您的 SSH 配置是否正确。可以尝试使用 "ping" 命令来测试网络连接。

    2. 密码认证失败:如果您使用密码进行身份验证,并且认证失败,请确保您输入的密码是正确的,并且没有使用错误的大小写。如果您仍然无法登录,请尝试重新设置密码。

    3. 文件上传失败:如果您使用 "put" 命令上传文件并且失败,请确保您已经有权限将文件上传到目标文件夹,并且文件名是正确的。您还可以尝试将文件复制到您的主机上,并重新上传。

    4. 无法运行脚本:如果您尝试运行脚本,但出现错误,请确保您已经正确安装脚本需要的依赖项和版本。此外,您可以检查脚本文件是否具有可执行权限。

    5. 处理进程失败:如果您的进程在 Monkey 中运行失败,请确保您的代码没有出现任何错误或死锁。您可以尝试使用调试工具来查找问题。

    6. 无法正常关闭 Monkey:如果您无法正常关闭 Monkey,请尝试使用 "kill" 命令手动终止进程,或者重新启动您的主机。也可以检查您的日志文件以查找任何异常行为。

  • 相关阅读:
    javax.servlet.ServletException: 非法访问资源(/j_spring_security_check)
    【Hello Go】Go语言并发编程
    IO系列第三篇——NIO(Selector)
    免费的秘密:免费,不是真的免费,是看起来像免费……
    ヾ(⌐ ■_■)— HTML-动画和布局
    客厅、厨房、卫生间瓷砖怎么挑选,看完不再烦恼!福州中宅装饰,福州装修
    Day08--自定义组件的插槽
    机器学习算法 —— 决策树
    46LVS+Keepalived群集
    MySQL视图、用户管理
  • 原文地址:https://blog.csdn.net/LYX_WIN/article/details/133249404