Monkey test——Mr.Monkey 移动测试培训课后总结(三)

2012-11-15  白云 

    这周乱七八糟的事情太多啦。。现在才整理。。 希望对大家还有帮助。。
一、Monkey test简介
  • Android的SDK 里面,Monkey的tools是一个命令行工具,当连接Android设备时,只要在命令行里输入相应命令就能运行tools;
  • Monkey test是一项压力测试,可以在规定的次数范围内做任何随机的操作,随机操作包括点击、滑动、Application切换、横竖屏、应用关闭等等,用户能做的操作统统可以模拟;
  • Monkey test跑出来crash的bug等级永远为1,版本release前,Monkey跑出的结果中crash要为0。业内标准:final release前,Monkey跑完的总次数应为25W次,其结果里不允许有nullPointException出现.
二、Monkey test的使用流程

三、简单的Monkey脚本示例

adb shell monkey -v 10
其中10代表运行脚本的操作次数为10次,若seed不指定值默认为0;
后面两行为intent的描述,运行了Android基本的LAUNCHER主进程,LAUNCHER主进程之后运行了MONKEY进程;
Event percentages,因为命令中只加了一个限制条件,次数为10,当其余参数没有添加时,就如上图百分比出现;
//Money finished 完成。
四、Monkey test实例1

第一个-s emulator-5554 设备的序列号;
-p com.lovebizhi.wallpaper-1 要测试对象的package name(adb shell data/data),若测试多个对象,则应为-p package_name1 -p package_name2;
--pct-xxx 用来设定每个事件在测试中的百分比,百分比总和不能超过100%;
--pct-touch 调整触摸事件的百分比
--pct-motion 调整动作事件的百分比
--pct-trackball 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随着点击)
--pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
--pct-majormav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作)
第二个-s 同样的seed值(seed值由自己定义,相当于一个文件的文件名,monkey的操作顺序相当于文件)有同样的随机序列,复现问题时,需要monkey用同样的操作步骤重新跑一遍,可以在日志的第一行看到seed值;
--throttle 设定事件发生的间隔,不设置时,在android系统极限内操作,若手机性能较低,容易出现系统无响应,最佳的时间间隔在300或者500,单位是毫秒;
-v 指定Log的详细程度,共有三个级别:
-v 日志级别为level 0
-v -v 日志级别为level 1
-v -v -v 日志级别为level 2     日志的详细程度越来越详细
 
Monkey tools在Android内只能针对Activity做测试,不能对service做测试。
tips: adb devices 可以获取设备id

adb shell data/data获取应用包的名称

Monkey test中只能指定activity属性的应用包进行测试,当出现指定的应用程序不是activity的时候,monkey会出现以下log,并终止运行:

备注:activity和service的区别,activity是android应用的核心概念,简而言之activity为用户交互管理者,有一个可视界面呈现,而service是在后台运行,没有界面呈现。

五、Monkey test实例2



想要跑完脚本后再去总结过程中出现的crash或者系统无响应,需要指定参数--ignore-crashes --ignore-timeouts,若不指定,遇到问题就会停止运行,效率会降低。

当且仅当设备有滚轮时需要设定--pct-trackball,如果没有滚轮需设置为0。

monkey可以不指定-p后的应用,若为了有针对的跑需要指定。

六、检查结果

查找关键字crash

//sending event表示目前已经执行的测试次数

查看有效crash,注意crash:后的进程(pid),及其后的package name是被测对象;java.lang.NullPointerException下会给出错误在开发工程中的第几行。

tips:指定要保存log的路径(> d:\test.txt)可以进入D盘下的test.txt进行crash关键字的筛选 

注意事项:


  • 在进行monkey的测试时,最好不进行adb的操作;
  • 跑monkey时需要记录3个log,monkey的log(重新指向到某个txt中),dump system的log(查看系统占有),android本身的log logcat。

[如需转载,请在转载时注明出处,并保证本文的完整性]

2577°/25652 人阅读/12 条评论 发表评论

熊志男  2012-11-16

辛苦啊 勤奋啊 加油啊


白云  2012-11-16

熊志男: 辛苦啊 勤奋啊 加油啊


晏佳  2012-11-16

有点不知云里雾里了


白云  2012-11-16

晏佳: 有点不知云里雾里了
可以加到我们的“移动测试培训讨论小群”来。。课上不懂的都可以问。。群里肯定有人能解答的。。


王涞  2012-11-16

总结的挺好


白云  2012-11-16

王涞: 总结的挺好
是Mr.Monkey讲的好。。


付民  2012-11-19

哈哈,不错哦...


孙艳玲  2014-03-21

最底部注意事项里: 跑monkey时需要记录3个log,monkey的log(重新指向到某个txt中),dump system的log(查看系统占有),android本身的log logcat。 dump system的log和android本身的log怎么查看


孙艳玲  2014-03-21

啊,知道了,http://www.testwo.com/blog/6146这里面有介绍。。。


卧槽  2015-09-07

3个log只有为什么另外两个log是空的,我执行的是monkey -s 2015009021030 --pct-appswitch 25 --pct-motion 30 --pct-touch 45 --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error -v -v -v 500000 >/data/system/monkeylog.txt bugreport >/data/system/bugreport.log dumpstate >/data/system/dumpstate.log。拜谢


刘健  2015-11-02

我也想知道这dump system的log和android本身的log怎么查看


小丫头  2016-05-02

@白云 怎么加入“移动测试培训讨论小群”呢


登录 后发表评论