关于Monkey的一切都在这里
来源:互联网 发布:linux ftp登录 编辑:程序博客网 时间:2024/06/10 18:45
关于Monkey的一切都在这里
版权声明:
本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。
允许有条件转载,转载请附带底部二维码。
一、什么是Monkey
Monkey是Android自身提供的,可以通过adb shell模拟用户行为,发送一些伪随机用户事件到目标设备上。
Monkey和它的直接意思一样,可以像一个猴子一样,疯狂的输入各种随机事件到设备上,像是一个猴子在疯狂的点击设备。
既然Monkey有这样的功能,我们就可以利用它来对Android App做压力测试,可以在规定的范围内,任意随机触发各种事件,来验证App的抗压性和稳定性。这些随机事件包括:点击屏幕、滑动屏幕、各种无力按键等。
二、简单的使用Monkey
Monkey主要是借助adb命令来让PC与Android设备连接,adb是一种Android调试工具,在PC上配置好环境即可使用。
Monkey使用起来非常的简单,基本命令如下:
adb shell monkey <event-count>
这样直接在Terminal中输入,就会像设备上发送指定的事件数的事件。但是在Terminal中不会有任何输出,如果需要有输出,可以加上-v
参数。-v
表示输出的Log级别,-v
最低,-v -v -v
最高。
adb shell monkey -v <event-count>
上面的命令表示向设备输入100个随机事件,如果正确输出,可以在设备上看到各种点击效果一闪而过。
但是这种随机的输入其实也是没什么作用的,通常我们会需要制定在某一个App内做随机事件。那么,可以再增加-p
参数,完整命令如下:
Adb shell monkey -p com.mipay.wallet -v <event-count>
更多其他高级的命令,可以通过adb shell monkey -h
进行查看。
三、Monkey的高级用法
1、设置事件间隔
上面给出的例子,基本上100次点击会在瞬间被完成,肉眼可能可以感受到被点击,但是无法明显的感觉到有那么多次。所以设定每次事件的间隔时常,是有必要的。为Monkey设定事件的间隔,使用--throttle
参数。
adb shell monkey —throttle <milliseconds>
2、复现随机点击的事件
Monkey虽然是随机点击的,但是我们主要是用它来做压力测试。所以如果在碰到崩溃的时候,可以通过一种方式,重复之前的随机事件,再来一次,看看崩溃的问题。Monkey也提供了这样的参数-s
。
adb shell monkey -s <seed> <event-count>
可以看到,在每次执行完Monkey之后,从输出里可以看到当前的seed值,只要通过-s
参数指定相同的seed,就可以重复刚才的操作。
例如如果需要重复上面的操作,就需要在Terminal中输入:
adb shell monkey -s 1487572980979 -v 1000
3、忽略崩溃
正常来说,如果在Monkey执行的阶段,出现了崩溃,会立即停止接下去的执行。但是有时候,我们在执行Monkey的时候,是在无人员干涉的情况下,例如想要它执行一夜,等等情况。那么如果出现崩溃就停止执行,明显不是我们需要的。在Monkey中,可以通过—ignore-crashes
来忽略掉异常崩溃。
adb shell monkey —ignore-crashes <event-count>
如果用此参数忽略了崩溃,在发生崩溃的时候,会继续指定,表现是又从新开始执行Monkey了,而同时,用-s
设定的seed值将不会生效。
4、忽略ANR
ANR是Android的一个错误,在页面无法响应事件的时候会报出来。一般遇到这样的情况,表示当前有耗时操作在UI线程指定,导致卡UI了。
在Monkey中,如果遇上ANR,同样会停止继续执行。如果想要忽略ANR,让其触发的时候依然执行下去,可以使用—ignore-timeouts
参数。
adb shell monkey —ignore-timeouts <event-count>
同样它也会导致-s
失效。
四、指定Monkey事件
在Monkey中,虽然输入的事件是随机产生的,但是可以指定输入事件类型的百分比,让其控制在我们需要的范围内。
在Monkey中,可以设定的事件类型有:
--pct-touch <percent>
:指定触摸事件的百分比。--pct-motion <percent>
:指定滑动事件的百分比。--pct-trackball <percent>
:指定轨迹球事件的百分比。--pct-nav <percent>
:指定导航事件中,up、down、left、right等事件的百分比。--pct-majornav <percent>
:指定导航事件中,back、menu等事件的百分比。--pct-syskeys <percent>
:指定系统按键的百分比,包括HOME、Back、音量等。--pct-appswitch <percent>
:指定Activity之间切换的比例。--pct-anyevent <percent>
:指定任意事件的百分比。
默认情况下,如果不设置,会是--pct-anyevent
为百分之百,也就是纯随机事件。如果通过其他的参数配置了之后,如果相加的百分比不为百分百,余下的百分比部分也会生成随机事件。
从Monkey的输出Log中,可以看出指定事件的百分比。
例如这里输入触摸事件为百分百,Event percentages的0表示的就是触摸事件,为100%。
五、举个栗子
到这里基本上就介绍为Monkey中一些主要的参数含义了,更多的可以通过-h查看帮助文档。
基本上配置事件百分比,有一些事件已经随着Android发展被消失掉了,例如轨迹球,在现在主流的设备上,已经基本上看不见轨迹球的影子了。
那么就本文介绍的一些命令,简单配置一个可以直接使用的例子:
adb shell monkey -p com.miui.cal —throttle 100 —-ignore-crashes —-ignore-timeouts --pct-touch 50 --pct-majornav 10 --pct-syskeys 20 --pct-appswitch 20 -v 1000 > ./monket_log.txt
- 关于Monkey的一切都在这里
- 关于Monkey的一切都在这里
- 关于Monkey的一切都在这里
- 关于RN的导航,你需要了解的一切都在这里!
- 微信Tinker的一切都在这里,包括源码(一)
- 微信Tinker的一切都在这里,包括源码(一)
- 微信 Tinker 的一切都在这里,包括源码
- moodle config-dist.php -> config.php 一切都在这里,需要的加点注释
- 【腾讯Bugly干货分享】微信Tinker的一切都在这里,包括源码(一)
- 业界首部安卓热修复宝典出炉!你想知道的一切都在这里了
- 业界首部安卓热修复宝典出炉!你想知道的一切都在这里了
- 业界首部安卓热修复宝典出炉!你想知道的一切都在这里了
- 业界首部安卓热修复宝典出炉!你想知道的一切都在这里了
- 所有的一切都在那里
- 一切都在
- 在这里开始Monkey的Android进阶之路
- 关于android的monkey测试
- 关于monkey
- 欢迎使用CSDN-markdown编辑器
- 数据结构——离散事件模拟
- iOS webview与Js的交互。以及修改cookie、header头
- Access-Control-Allow-Origin与跨域
- Oracle与Sql Serer的链接桥梁之透明网关的部署与配置详解(二)安装GateWays
- 关于Monkey的一切都在这里
- Java HashMap、HashTable详解
- Problems encountered during text search
- Android架构思考(模块化、多进程)(转载学习)
- Linux上部署web应用(mysql,tomcat)
- js事件冒泡和委托
- OpenCV对数极变换变换示例
- "libcudnn.so.5 cannot open shared object file: No such file or directory"
- 【排序三】交换排序(冒泡排序&&快速排序)