×

Android命令Monkey测试

96
Art_Collector
2016.10.11 15:49* 字数 629

Monkey是一个在仿真器或设备上运行的程序,并生成用户事件(如点击,触摸或手势)以及一些系统级事件的伪随机流。 您可以使用Monkey以随机但可重复的方式对您正在开发的应用程序进行压力测试。

Monkey测试介绍

Monkey是一个命令行工具,您可以在任何模拟器实例或设备上运行。它发送用户事件的伪随机流到系统中,对您正在开发的应用软件进行压力测试。

Monkey包括许多选项,但它们分为四个主要类别:

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

当Monkey运行时,它会生成事件并将它们发送到系统。 它还监视被测系统,并特别处理三种条件:

  • 如果你限制Monkey在一个或多个特定包中运行,它会监视并禁止导航到任何其他包。
  • 如果您的应用程序崩溃或收到任何未处理的异常,Monkey将停止并报告错误。
  • 如果您的应用程序生成应用程序无响应错误,Monkey将停止并报告错误。

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

Monkey的基本使用

您可以使用命令行或脚本在开发机器上启动Monkey。 因为Monkey必须在模拟器/设备环境中运行,所以必须从该环境中的shell启动它。 您可以通过将 adb shell 作为每个命令的前缀,或者直接输入shell并输入Monkey命令来完成。

基本语法是:

$ adb shell monkey [options] <event-count>

如果没有指定选项,Monkey将以安静(非详细)模式启动,并将事件发送到目标上安装的任何(和所有)包。 下面是一个更典型的命令行,它将启动您的应用程序并向其发送500个伪随机事件:

$ adb shell monkey -p your.package.name -v 500

命令选项参考

下表列出了您可以在Monkey命令行中包含的所有选项。

类别 选项 描述
普通 --help 打印简单的使用指南。
-v 命令行上的每个-v将增加反馈信息级别(日志的详细程序)。</br>级别0 示例 adb shellmonkey -p com.htc.Weather –v 100</br>(默认值)仅提供了启动信息,测试完成和最终结果等少量信息。</br>级别1 示例 adb shellmonkey -p com.htc.Weather –v -v 100</br>提供较为详细的日志,包括每个发送到Activity的事件信息。</br>级别2 示例 adb shellmonkey -p com.htc.Weather –v -v –v 100</br>最详细的日志,包括了测试中选中/未选中的Activity信息。
事件 -s <seed> 伪随机数生成器的种子值。 如果你用相同的种子值重新运行Monkey,它将生成相同的事件序列。
--throttle <milliseconds> adb shell monkey -p com.htc.Weather --throttle 3000 100 在事件之间插入固定延迟。 你可以使用这个选项来减慢Monkey。 如果未指定,则不存在延迟,并且尽可能快地生成事件。
--pct-touch <percent> adb shell monkey -p com.htc.Weather --pct-touch 10 1000 调整触摸事件的百分比。 (触摸事件是屏幕上单个位置的 down-up事件。)
--pct-motion <percent> com.htc.Weather --pct-motion 20 1000 调整运动事件的百分比。 (运动事件包括屏幕上某处的down事件,一系列伪随机运动和up事件。)
--pct-trackball <percent> adb shell monkey -p com.htc.Weather --pct-trackball 30 1000 调整轨迹球事件的百分比。 (跟踪球事件由一个或多个随机移动组成,有时后跟一次点击。)
--pct-nav <percent> adb shell monkey -p com.htc.Weather --pct-nav 40 1000 调整“基本”导航事件的百分比。 (导航事件由来自方向输入设备的up/down/left/right组成)。
--pct-majornav <percent> adb shell monkey -p com.htc.Weather --pct-majornav 50 1000 调整“主要”导航事件的百分比。 (这些是通常会在您的UI中执行操作的导航事件,例如5向键盘中的中心按钮,后退键或菜单键)。
--pct-syskeys <percent> adb shell monkey -p com.htc.Weather --pct-syskeys 60 1000 调整“系统”键事件的百分比。 (这些是通常保留供系统使用的键,例如Home,Back,Start Call,End Call或音量控制。)
--pct-appswitch <percent> adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000 调整活动的百分比。 在随机的时间间隔,Monkey将发出一个startActivity() 调用,作为最大限度地覆盖你的包中所有Activity的一种方法。
--pct-anyevent <percent> adb shell monkey -p com.htc.Weather --pct -anyevent 100 1000调整其他类型事件的百分比。 这是所有其他类型的事件的全部,例如按键,设备上的其他较少使用的按钮等等。
约束 -p <allowed-package-name> adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 如果以这种方式指定一个或多个软件包,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)文件,因此请小心使用。 有关跟踪文件的更多信息,请参阅Traceview
--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 -p com.htc.Weather -v -v -v 10000 > monkey.txt

如需保存logcat日志,可以新开个dos窗口执行

adb shell logcat > logcat.txt
Android
Web note ad 1