monkey---常用的一些这些那些

上一篇 / 下一篇  2015-11-10 10:24:44 / 个人分类:monkey

    monkey的用法命令,我就不写了,网上到处都是,这一节只说我平时的使用和实践的一点东西,
    首先monkey是用来干嘛的?我觉得 : 
        一是用来偷懒的,有时候别的公司提供过来的apk,他们的测试已经做了足够的功能验证等等,拿过来我验证,怎么验证呢?开跑monkey,发现有crash,anr打回改了再来,不耽误啊什么都~
        二,最初始版本的验证,本公司的开发和其他杂牌的开发一样,从来不知自我验证为何物,初始版本上来都乱七八糟,跑个monkey看看,crash的种类和数量多不多,多了直接打回
        三,性能测试的利器,几轮功能下来了,没感觉了,上monkey,看看还有没有遗漏的bug,尤其是整机测试,24h以上的monkey测试简直必不可少,一方面是发现过程中会否发生的重启,关机,黑屏,还有crash,anr等,这样的bug只需提取log给开发即可,但是我认为更多的是,长时间的monkey跑下来,是为了模拟用户的真实操作,看看在密集的手机操作之后,手机的各方面性能表现如何?cpu表现?mem表现,手机有没有明显的卡顿,这些数据本身的衡量,即你用什么样的指标去证明手机的性能就是不行,而不是我感觉很卡。。。具体量化为数值的体现,甚至提取多次数字用图标绘制,让观者有一个明显的认知,比如24hmonkey之后,手机卡顿要死,打开新的apk慢的不行不行,那么,测试之前的cpu,mem,帧率是个什么样子,测试之后这些数值时什么样子
 
    用法:adb shell monkey --pct-touch 60 --pct-motion 35 --pct-appswitch 5 --pct-syskeys 5 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --throttle 500 -v -v 40000 > E:m.log
    为了方便只抓错误信息,还可以开一个adb命令,adb logcat -v time *:E >F:\log99.txt 只打印出错log的命令,然后放在F盘中,当然管你是无线连adb也好,还是直接跟我一样偷懒开mtk最后只看dropbox,反正怎么方便提bug怎么来

   说一下如何结束,monkey一开,结果你发现你忘了什么重要操作,一般就是长按后关机啊,结果有时候太快了半天不行,所以最好的方式是直接杀掉monkey的进程:
 
adb shell                        #进shell
ps|grep monkey                   #然后ps|grep monkey找到monkey的id
kill id

再说下黑白无常,monkey很贴心,有时候你要跑的只是几个包,而非全部,白名单滚出来:
将10个的包名写进白名单----whitelist:
adb push E:\01_AutomationTest\01_Monkey\05_NbBank\whitelist.txt data/local/tmp/
adb shell
monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 15000 

做整机,我们一般不跑设置里面的东东,因为很容易把wifi,BT, 恢复出厂,开关机这样的操作给动了,就白跑了,所以,一般把settings扔进黑名单----blacklist:

adb push E:\01_AutomationTest\01_Monkey\05_NbBank\blacklist.txt data/local/tmp/
monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 15000 

其实想要说的还有点点,开发对monkey不是待见,怎么说呢,只要log,而他们的代码可能是反编译过的,所以有时候bug中的log不能够真正表明原因,所以他们不知道也没法找到真正原因,而且,比如我发现的一个问题,monkey5000次之后,一个app的activity栈中居然保存了之前几乎一大半的activity,没有释放,我不知道他们具体的编码,但是我认为这个是一个问题,虽然我手动暂时没有复现,但是我认为这个bug有意义,证明他们编码实现还是有够优化的

其次:注意这个:

-c <main-category> 
如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。

一般来说,90%的人用monkey是没有指定这个的,也是因为不知道怎么用,不了解安卓的intent机制,以及类别,其实我也不知道,所以觉得,做安卓测试,对安卓framework有一些了解还是有必要的,有时间了还是要多学习一些开发知识,这篇文章先到这,后续会把monkey源码再看看,以及固定moneky到一个界面或者几个界面的脚本编写,这才是重点内容。

对包测试命令:
上面命令敲错了,对于包的测试:

adb shell monkey -p com.abovegem.distributorapp --pct-touch 80 --pct-motion 20 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --throttle 500 -v -v 10000 


TAG: Monkey

 

评分:0

我来说两句

Open Toolbar