Android Monkey测试与分析要点

Monkey测试的功能

Monkey是内置在Androidshell中的命令行工具。Monkey测试可以模拟用户点击行为,通过脚本的形式不断地执行,然后可以导出到本地日志,进行奔溃分析。模拟方式是系统发送伪随机的用户事件流。

Monkey测试的使用

设置ADB环境

{android sdk location}\platform-tools加入环境变量,以便使用终端执行adb命令。

编辑Monkey脚本

基本语法:

$ adb shell monkey [options] <event-count>
monkey脚本格式

脚本示例:

monkey -p com.arisan1000.android  --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-appswitch 30 --pct-touch 15 --pct-motion 50 --pct-anyevent 5 -s 1000 43200 2>/sdcard/error.txt 1>/sdcard/info.txt 
Category Option Description
General� --help 打印简单的使用向导
-v 每个-v表示增加信息的冗余级别。默认是Level 0,打印启动通知、测试结束和最终结果。Level 1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。Level 2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。
Events -s <seed> 指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
--throttle <milliseconds> 指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
--pct-touch <percent> 调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct-motion <percent> 调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
--pct-trackball <percent> 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
--pct-nav <percent> 调整基本的导航事件(上下左右),事件来自直接的输入设备。现在的设备一般没有设置导航按钮了。
--pct-majornav <percent> 调整“主要”导航事件的百分比。 (这些是通常会导致您的UI中的操作的导航事件,例如5向按键中的中心按钮,后退键或菜单键。)
--pct-syskeys <percent> 按键消息比例,主页、后退、音量增减
--pct-appswitch <percent> 启动Activity的事件比例
--pct-anyevent <percent> 其他不常用的按键比例的设置,不常用
-p <allowed-package-name> 用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
-c <main-category> 指定启动Activity的category。若无指定,monkey会选择带有Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY的Activity。使用时,一个-c指定一个category,可以多次使用。
Debugging --dbg-no-events 指定该选项时,Monkey会执行测试Activity的初始启动,但不会生成进一步的事件。为了获得更好的结果,可以结合 -v选项,一个或多个包限制 和 非0的throttle选项 (为了保持Monkey运行30s或以上)。这提供了一个监控应用调用的包转换的环境。
--hprof 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
--ignore-crashes 在monkey测试的过程中遇到crash不终止monkey进程,直到计数结束。
--ignore-timeouts 在monkey测试的过程中遇到timeout error 或者 ANR 不终止monkey进程,直到计数结束。
--ignore-security-exceptions 忽略权限问题,直到事件计数结束。
--kill-process-after-error 当发生错误时终止monkey进程。
--monitor-native-crashes 监视崩溃时的本地代码。当设置 --kill-process-after-error时,monkey进程会停止。
--wait-dbg 当调试器失去连接时,停止monkey进程。

执行和停止脚本

  1. 连接设备并开启调试模式
  2. 执行脚本命令:复制脚本到终端
  3. 回车执行停止脚本,如下:
// 获取monkey所在的进程id
adb shell top | grep monkey
示例结果:
 5447  0   1% S 10 262960K  10328K  root    com.android.commands.monkey
 5447  0   0% S 10 262960K  10324K  root    com.android.commands.monkey
//彻底停止monkey进程
adb shell kill -9 5447

分析本地日志

  1. 找到是monkey里面的哪个地方出错。
  2. 查看Monkey里面出错前的一些事件动作,并手动执行该动作。
  3. 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。

详情参考Monkey测试3——Monkey测试结果分析

参考

  1. UI/Application Exerciser Monkey

  2. monkey实战--测试步骤、常用参数、常规monkey命令

附录 A:Linux中的输入输出重定向

n> file 表示将文件描述符为 n 的文件重定向到 file。常见的文件描述符为:

文件描述符 名称 常用缩写 默认值
0 标准输入 stdin 键盘
1 标准输出 stdout 屏幕
2 标准错误输出 stderr 屏幕

点击链接了解更多

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

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,458评论 9 467
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,766评论 25 708
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,202评论 2 33
  • 夜雨声起,簌簌的落雨声击打着外面的空气,穿破了密静的深夜。还有微微的风声,说实话我喜欢这样的雨夜。 想闭上眼在这美...
    奔跑在山野的阅读 212评论 2 2
  • 看到一篇文章 男生没有写过情书 女生没有收过情书他的感情生活是不完整的 在这个年代,我想要是哪个男生还在送情书的话...
    你打扰到我学习啦阅读 429评论 0 1