Android命令Monkey测试

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容