Monkey的概念
“猴子测试”是指没有测试经验的人甚至对计算机根本不了解的人(就像猴子一样)不需要知道程序的任何用户交互方面的知识,如果给他一个程序,他就会针对他看到的界面进行操作,其操作是无目的的、乱点乱按的。
这种测试方式在产品周期中的早期阶段会找到很多很好的bug,为用户节省不少的时间。
Monkey的介绍
它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。 monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。
monkey包括很多选项,大致四大类:
- 基本配置选项,如设置尝试的事件数量。
- 运行约束选项,如设置只对单独的一个包进行测试。
- 事件类型和频率。
- 调试选项
monkey命令特性
不可能使用monkey来指定做一样测试,重复做很多次。因为monkey产生的是伪随机的事件流。但是我们可以通过添加命令选项将操作限制在一定的范围内。
常用的Monkey脚本
下面的demo是工作中简单测试用的
demo 1
adb shell monkey -v -v -p com.125la.test --throttle 5000 1000
-v -v Level 1级日志,提供更详细的安装信息,如测试中被选中或者未被选中的Activity
-p com.125la.test 仅测试这个包名
5000 每个指定之间延迟5秒
1000 随机事件个数
demo 2
adb shell monkey -p com.125la.test --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 -s 1 -v -v --throttle 200 100000 2>./error.txt 1>./info.txt
PS: 电脑上运行monkey命令,./error.txt 和 ./info.txt会在当前目录自动生成对应的文件。
- -p com.125la.test 仅针对这个包名测试
- --ignore-crashes 忽略应用程序崩溃(force & Close 错误),继续发送并执行事件,直到事件执行完成
- --ignore-timeouts 忽略应用程序发声ANR(Application No Responding)错误时,直到事件执行完成
- --ignore-native-crashes 忽略本地程序奔溃,直到事件执行完成
- --pct-touch 30 调整触摸事件为30%,即整个事件中触摸实际占30%
- -s 1 伪随机数生成器seed值。seed值为1,相同的seed值再次执行monkey,将产生相同的序列
- -v -v 日志等级为level 1,将提供较为详细的日志,包括每一个发送到Activity的事件信息
- --throttle 200 事件直接延迟200ms 可以控制monkey事件的执行速度,如果不指定该选项,monkey事件不会延迟
- 100000 执行事件为10万次
- 2>./error.txt Level 2日志保存到sdcard的error.txt中
- 1>./info.txt Level 1日志保存到sdcrad的info.txt中
demo 3
白名单whitelist.txt
创建白名单whitelist.txt,里面放入需要测试的包名
com.qq.music com.baidu.carlife com.125la.test
白名单中有的包名都会测试,然后
# push 到测试机器的/data目录 adb push whitelist.txt /data
monkey命令1
adb shell monkey --pkg-whitelist-file /data/whitelist.txt --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-native-crashes --pct-touch 80 --pct-motion 10 --pct-syskeys 0 --throttle 400 -v -v -v 2000000
命令中monkey中忽略异常,闪退,等直到测试完成。
至于命令的具体意义,你可以访问我摘抄的文章《[摘]Android monkey命令详解》
monkey命令2
monkey --pkg-whitelist-file /data/whitelist.txt --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error --monitor-native-crashes --ignore-native-crashes --pct-touch 80 --pct-motion 10 --pct-syskeys 0 --throttle 400 -v -v -v 2000000
参考文章
历史上的今天
暂无评论...
随机推荐
叶芝 :当你老了(冰心版)
当你老了头发花白睡意沉沉倦坐在炉边取下这本书来慢慢读着追梦当年的眼神那柔美的神采与深幽的晕影多少人爱过你青春的片影爱过你的美貌以虚伪或是真情惟独一人爱你那朝圣者的心爱你哀戚的脸上岁月的留痕在炉栅边你弯下了腰低语着带着浅浅的伤感爱情是怎样逝去又怎样步上群山怎样在繁...
费孝通:文字不能使人聪明起来
乡下人在城里人眼睛里是“愚”的。我们当然记得不少提倡乡村工作的朋友们,把愚和病贫联结起来去作为中国乡村的症候。关于病和贫我们似乎还有客观的标准可说,但是说乡下人“愚”,却是凭什么呢?乡下人在马路上听见背后汽车连续的按喇叭,慌了手脚。东避也不是,西躲又不是,司机拉住闸车,在玻璃窗里,探出半个头,向着那...
李娟: 通往一家人去的路
有时候我会扔下杂货店跑出去满山遍野地玩,来店里买东西的人就只好坐在我家帐篷里耐心等待,顺便替我守着店,有人来买东西的话,就告诉他:“人不在。”有时候他实在等急了,就出去满山遍野地找我。而有的时候呢,我在帐篷里耗一整天,也没有一个人来买东西,连把头伸进帐篷看一眼的人也没有。害我白白浪费了本该出去玩的...
Android Studio重构清除无引用资源
前言Android开发中,发现移植的APP模块存有很多图片和xml等资源,至于是否有引用,不去查询是不太好知道的。但是Android Studio有个功能,也就是Android Studio Refactor/Remove Unused Resources【重构,移除没有引用的资源】。PS:...
嫣然若雪:余生,看淡所有,珍惜拥有
现实生活中,有太多的欲望,求不到,爱不得,为自己搭建了牢笼,囚禁在很深的执念里,得不到,放不下。人生本就不易,生活里本就有太多的苦,烦恼不捡自然无,要捡天天有,没有谁能把日子过得一直顺遂。有些人,因为自己的执念,让生活增添不必要的负担;有些人,因为一点小事,让自己活得心烦意乱。人生的痛苦都是自...
Android 强制性横屏和设置系统横屏简介
前言简单记录一下应用横屏和系统横屏的使用。网上很多,但还是自己整理一下,方便自己查阅。正文Android横屏有应用横屏和系统横屏。单个应用横屏就是只对当前应用有效,其他应用依旧跟系统保持一样,系统横屏的话对所有应用有效(前提是应用没有自己单独处理)。下面介绍应用横屏,系统横屏的配置,以及...