Monkey学习过程与个人见解_参数

前不久我转到一个本地化项目做安卓测试,还只有一个安卓测试那种。这要是测得不好就有点尴尬了,这么觉得的我于是想着虽然那种很洋气的自动化我还不会,但是至少跑个monkey还是没问题的!刚好今天比较闲于是就开始挤时间准备开始学学怎么跑monkey了!

【本次仅记录如何使用monkey各常用参数及对其的理解,脚本及报告分析放到下一篇。】


Monkey,顾名思义就是猴子,引申出来即是猴子瞎点能发现一些平时进行正常操作发现不了的问题。【纯属个人理解。_(:зゝ∠)_】

关于如何连上手机开启调试就略过不提,当连上需调试的手机后进入cmd的操作界面,使用adb shell进入shell端, 然后monkey+参数。即adb shell monkey+参数。

在命令最后加上的一个整数即为想要产生的随机事件数量。

Monkey的参数大致分为四类:General,Events,Constraints,Debugging。

一、General参数即是常规参数,一般指-v与--help。

按照我自己学习Linux的习惯就来先搞懂命令的缩写是什么意思。

1、-v即level,打印出的log的详细程度。详细程度一共有三级0/1/2,详细如下。

Level0(默认)-v,除了启动、测试完成和最终结果外只提供较少的信息。

Level1 -v -v,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。

Level2 -v -v -v,提供了更多的设置信息,如测试中选中或未选中的Activity信息。

1_例子:adb shell monkey -v -v -v 1000

2、--help,关于help命令就不必多说了。

此外不知道大家有没有跟我一样的困惑:有的教程里写的是-help,而有的是--help,这两个命令有区别吗?

查询后得出的结论是--后一般接命令完整单词,-后一般接命令简写。比如--help与-h其实执行的是同一命令,但是有的参数只能使用完整单词比如后面将提到的--throttle。

【如有问题请在评论里给我提出,谢谢。】

二、Events参数即为操纵每个事件的参数,比如-s,--throttle等。

1、-s参数为seed,种子。种瓜得瓜种豆得豆,即我们可以根据出现错误时的seed值运行出相同的随机事件序列。【这个参数我其实没太明白如何使用,就是比如我想复现seed=12312时的事件序列,然后后面需要选择执行多少次呢?希望有人解答。】

2、--throttle 压制,节流阀即控制,我们可以通过这个参数操作每个事件的间隔时间来模拟用户的真实操作速度,比如一般取值为300ms。

2_例子:adb shell monkey -s 152342 --throttle 300 -v 1000

3、除了以上两个参数外还有一系列以--pct开头的控制每种事件百分比的参数,当测试不同类型APP时可以针对对应的事件百分比做调整。详细内容如下。

--pct-touch 指定触摸事件的百分比

--pct-motion  (滑动事件)

--pct-trackball  (轨迹球事件)

--pct-nav  (导航事件 up/down/left/right)

--pct-majornav  (主要导航事件 back key 、 menu key)

--pct-syskeys  (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)

--pct-appswitch  (activity之间的切换)

--pct-anyevent (任意事件)

3_例子:adb shell monkey --pct-motion 30 --pct-touch 20 -v 1000(注意--pct数值后不用加百分号%)

三、Constraints约束参数,即对运行的随机事件范围等进行约束的参数,如-p。

1、-p package包,使用这个参数可以针对指定的包产生随机事件。并且可以指定多个包,一个包名对应一个-p参数。

1_例子:adb shell monkey -p xx.xxx.xxx -p zz.zzz.zzz -v 1000

2、-c category类别,这个参数只允许系统启动这些类别中某个类别列出的Activity。使用这个参数需要知道应用的activity名称。如不手动指定,monkey只会启动Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活动。【这个因为我没看到代码所以没有怎么尝试,感到遗憾,之后会好好看看这个参数。】

2_例子:adb shell monkey -p xx.xxx.xxx -c android.intent.category.LAUNCH -v 1000

四、Debugging调试参数,即用于调试的参数命令,如--hprof。

1、--dbg-no-events 使用此参数时monkey会启动待测应用,但不发送任何消息,建议与-v,-p,-throttle一起使用。

2、--hprof 这个参数生成的profiling报告可以由HPROF查看工具会列出类、类的实例和实例的引用树,以此来帮助你跟踪内存的使用情况,找出内存泄漏的地方。HPROF最初是由J2SE支持的一种二进制堆转储格式。

相对于静态代码分析,Profiling 是通过收集程序运行时的信息来研究程序行为的动态分析方法。其目的在于定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率。

使用此参数时monkey会在发送事件前后生成性能报告(即内存的快照文件),一般在设备的/data/misc目录下生成一个hprof文件。【这个命令我今天还没试过,等明天试试看,看看打印出的报告。】

3、--kill-process-after-error 一般情况下,当monkey因为某个错误指定运行时,出问题的应用会留在系统上继续执行,这个选项通知系统当错误发生时杀掉进程。

注意:当monkey正常执行完毕后,它不会关闭所启动的应用,设备依然停留在最后接受到消息的状态。

4、--monitor-native-crashes 监视由Android C/C++代码部分(cpu计算部分)引起的崩溃,此时如果设置了“--kill-process-after-error”,整个系统会关机。【这个命令我今天还没试过,等试了看看能不能结合日志分析下原因。】

5、--wait-dbg 即我们启动monkey后,只有连上被测设备且打开调试时才继续进行monkey测试。

1-5_例子:adb shell monkey -p xx.xx.xx--dbg-no-events --hprof --kill-process-after-error --wait-dbg -v 1000

6、除了以上参数还有以ignore开头的一系列参数,可以便于在问题发生后继续进行monkey测试直到指定个数的消息全部发送完毕,而不会直接中断停止。

--ignore-crashes 忽略待测应用崩溃或发生异常的情况

--ignore-timeouts 忽略待测应用停止响应(如弹出“应用无响应”对话框)的情况

--ignore-security-exceptions 忽略待测应用碰到权限方面的错误的情况

6_例子:adb shell monkey -p xx.xx.xx --hprof --kill-process-after-error --wait-dbg --ignore-crashes --ignore-security-exceptions -v 1000


其中一些未尝试的参数我接下来会再试试,等尝试了继续更新或在更新下一篇关于脚本&报告分析的时候加在其中。


参考:

http://www.cnblogs.com/yajing-zh/p/4340795.html

http://www.cnblogs.com/wanqieddy/p/4312814.html


Submitted by 梅湖

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

推荐阅读更多精彩内容