Android Monkey
概念
Monkey是Android系统自带的一个命令行工具,可以在Android模拟器或手机设备中运行。通过向Android系统发送伪随机用户事件流(如屏幕的点击、滑动和系统按键操作等),实现对Android App进行稳定性测试。另外,由于Monkey可以做很多次随机事件,所以Mondey有时也做app的压测工具。
通讯
借助ADB与Monkey进行通讯
使用
查看包名
adb shell pm list packages
高级参数—throttle
使用百度进行1000次随机事件
命令格式:adb shell monkey -p com.baidu.searchbox 1000
命令解释:参数-p 是package的缩写,后面跟着你要指定测试的app的包名,如果不知道如何或者包名,请看ADB那篇文章。上面参数1000,表示要做多少个随机事件的次数。上面红圈的地方,表示事件注入了1000,看到这个表示,测试完成,如果出现小于1000这个数字,说明有些事件没有执行成功。从上面截图来看,虽然执行了1000个随机事件,一共耗时1.5595秒。
1000个事件只花了1秒多,我们肉眼看到的肯定没有1000个事件,主要是因为点击、滑屏、输入等容易被我们察觉,但是其他事件我们不容易察觉,我们可以让执行速度慢一点,看的更清楚一点。
可以使用throttle参数来实现,,throttle主要控制执行的速度。
1000单位是ms,代表执行一个事件所花的时间;10代表事件个数
高级参数—seed
monkey都是通过seed的值来产生随机事件,如果要进行相同的操作,加上seed就可,可以用来复现bug
参数-s代表seed,100表示seed的值,seed会根据这个值去生成随机事件序列,后面的50代表随机事件次数。
测试步骤:
1.手机端打开手机百度app
2.执行上面命令一次,发现我们打开的是北京市的天气预报网页
3.退出天气预报页面,后台杀掉手机百度这个进程
4.手机再次打开手机百度,电脑上cmd再次输入上面截图的命令
5.发现打开的还是北京天气的页面
高级参数—触摸事件
monkey是随机发送事件的,但是有时候我们需要只做一件事情,例如我们只需要做点击事件,在app中点击一般称为触摸,也就是touch。
1.只做100%的touch事件,下面的100表示百分比,10表示随机事件次数
2.通过添加-v参数,可以看到详细的信息
其他事件
前面一篇我们介绍了Monkey中的touch事件,也就是我们经常说的点击或者触屏事件。什么叫点击呢?相当于键盘,松开,这就完成了一次点击事件。在Monkey中,除了点击事件,还定义了其他10种事件。
1.事件种类
–pct-touch 后跟80,代表80%的概率,根据下方的详细信息,可以看出0代表点击事件
2.motion事件
什么事motion事件,就是不同手势的动作事件
所以,数字1表示手势事件
3.pinchzoom事件
这个事件称为二指缩放事件,就是用两个手指在屏幕上画一下
4.trackball事件
中文名称为轨迹球事件,效果有点像下拉刷新新闻列表。
这里后面的20 20 100不太懂,暂时放过
5.屏幕旋转事件rotation
屏幕旋转,主要有横屏和竖屏
6.permission事件
7.基本导航事件
设备的上下左右四个方向的导航操作。
8.主导航事件
设置主要导航事件,例如app的中间键,返回键,菜单按键,应该很多app底部都有三到四个按钮,例如首页,发现,我的这样的底部菜单。
9.系统导航事件
系统导航事件,主要是硬件设备的Home键,返回键和拨号键和音量键。数字8的类型表示系统导航事件
10.切换Activity事件
我们知道app里有多个Activity,我们切换到不同Activity事件,可以设置这样事件的百分比。