美文网首页
adb之Monkey测试

adb之Monkey测试

作者: 清明捉鬼 | 来源:发表于2018-12-14 14:59 被阅读20次

    前言

    本来想用adb命令看看当前程序运行的Fragment实例有多少,却无意间发现这个东西,刚看时感觉晕晕的,翻墙去看官方api却发现一堆参数,单个使用都很明白,但是其效果明显组合使用就很好,故将adb命令理解为 字符串拼接进行尝试,实际运行也是如意,就像叠加buf一样被叠加,主要分两种MonkeyRunnerUI/App Exerciser Recorder,其中MonkeyRunner需结合脚本控制adb命令测试,官方提到的语言是Python。UI/App Exerciser Recorder就是我们此篇说明的方法。
    adb命令公式:adb shell monkey A+B+C
    示例:

    adb shell monkey -s 100 -vvv  -p com.mr.lbs 1000
    

    概要

    Monkey是一个命令行工具,可以在任何仿真器实例或设备上运行。它将伪随机的用户事件流发送到系统中,作为您正在开发的应用程序软件的压力测试。
    Monkey包含许多选项,但它们分为四个主要类别:

    • 基本配置选项,例如设置要尝试的事件数。
    • 操作约束,例如将测试限制为单个包。
    • 事件类型和频率。
    • 调试选项。

    当Monkey运行时,它会生成事件并将它们发送到系统。它还可以监视 被测系统,并查找三种特殊情况:

    • 如果您已将Monkey限制为在一个或多个特定包中运行,则会监视尝试导航到任何其他包并阻止它们。
    • 如果您的应用程序崩溃或收到任何类型的未处理异常,Monkey将停止并报告错误。
    • 如果您的应用程序生成一个没有响应错误的应用程序,Monkey将停止并报告错误。

    根据您选择的详细级别,您还将看到有关Monkey的进度和正在生成的事件的报告。

    命令选项参数

    类别 选项 描述
    普通 --help 打印一个简单的使用指南。
    -v 命令行上的每个-v都会增加详细级别。级别0(默认值)提供的信息除启动通知,测试完成和最终结果外几乎没有。级别1提供有关测试运行的更多详细信息,例如发送到您的活动的单个事件。级别2提供更详细的设置信息,例如选择或未选择用于测试的活动。
    事件 -s <seed> 伪随机数发生器的种子值。如果您使用相同的种子值重新运行Monkey,它将生成相同的事件序列。
    --throttle <milliseconds> 在事件之间插入固定的延迟。您可以使用此选项来减慢Monkey的速度。如果未指定,则没有延迟,并且事件尽可能快地生成。
    --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()调用,作为最大化包中所有活动的覆盖范围的方法。
    --pct-anyevent <percent> 调整其他类型事件的百分比。这是所有其他类型事件的全部功能,例如按键,设备上其他较少使用的按钮等等。
    约束 -p <allowed-package-name> 如果以这种方式指定一个或多个包,Monkey将允许系统访问这些包中的活动。如果您的应用程序需要访问其他包中的活动(例如,选择联系人),您还需要指定这些包。如果您没有指定任何包,Monkey将允许系统在所有包中启动活动。要指定多个包,请多次使用-p选项 - 每个包一个-p选项。
    -c <main-category> 如果以这种方式指定一个或多个类别,则Monkey将允许系统访问使用指定类别之一列出的活动。如果您未指定任何类别,Monkey将选择使用Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY类别列出的活动。要指定多个类别,请多次使用-c选项 - 每个类别一个-c选项。
    调试 --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 -p package_name -v times>route
    参数解释:
    package_name被测应用的包名
    times想要monkey模拟的事件次数,具体事件是什么请参考monkey概念中提到的,辅助了解
    -p此参数后面附包名,如果不指定该参数,monkey测试会随机选取手机系统应用测试
    -v此参数代表monkey测试过程中生成日志的详细程度,详细程度分为3个等级,具体对应参数写法-v;-vv;-vvv
    route此表示存放monkey日志的位置
    示例:

    adb shell monkey -p com.tencent.mobileqq -vvv 2000>E:\info.txt
    

    相关文章

      网友评论

          本文标题:adb之Monkey测试

          本文链接:https://www.haomeiwen.com/subject/pxxghqtx.html