Android Monkey—持续更新

一、概念

Monkey是Android系统自带的一个命令行工具,可以在Android模拟器或手机设备中运行。通过向Android系统发送伪随机用户事件流(如屏幕的点击、滑动和系统按键操作等),实现对Android App进行稳定性测试。另外,由于Monkey可以做很多次随机事件,所以Mondey有时也做app的压测工具。

二、特点

1.Monkey测试的仅为应用程序包,有一定的局限性。
2.Monkey测试使用的事件流数据流是随机的,不能进行自定义。
3.可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

三、通讯

借助ADB与Monkey进行通讯

四、使用

命令介绍

monkey命令格式:adb shell monkey [options] <event_count>
[options]:这个是一个多选值,我们可以通过adb shell monkey -help来查看这个值有什么选项,或者打开monkey官网也可以查看到选项值
<event_count>:这是一个必须参数,这个参数表示我们monkey测试应该在这次测试中出现的数量,比如你设置这个参数是100,那么monkey就会随机产生100随机用户事件        
例如:adb shell monkey -p com.example.app 100

可以通过adb shell monkey -help查看有哪些选项
在这里插入图片描述

基本配置选项

-p:指定一个或多个包名,让monkey只向这些应用发送事件,可以指定多个包名, 例如:adb shell Monkey -p com.example.app1 -p com.example.app2,如果不指定包名,则monkey将向所有安装的应用发送事件。
-v:设置反馈信息的详细级别,可以添加多个-v来增加详细程度,例如:
-v:表示默认的详细级别
-vv:表示更加详细的内容
-vvv:表示最详细的内容信息

操作约束

-s:设置随机事件生成器的种子值(seed value),使用相同的种子值可以重现相同的事件序列,种子值在随机事件中异常重要,例如:当我们在第一次运行 adb shell monkey -s abc -p com.example.app 100时,问题在这个阶段出现,当我们再次运行adb shell monkey -s abc -p com.example.app 100时,monkey就会再次生成相同事件序列,通过对比两次的日志输出,就容易发现问题的所在

–throttle:设置用户操作间的时延,以毫秒为单位,还可以模拟用户操作的速度,用于控制事件之间的速率,例如: adb shell monkey -p com.example.app --throttle 200 -v 10000当我们输入如上命令,这个命令会让monkey在com.example.app应用里面生成10000个事件,每个事件之间都会等待200毫秒,通过 --throttle 我们可以控制事件速率

调试及按键选项

–ignore-crashes:忽略应用程序的崩溃或ANR(应用无响应)错误,继续发送
–ignore-timeouts:忽略超时错误,继续发送事件
–ignore-security-exceptions:忽略安全异常,继续发送事件
–kill-process-after-error:在发生错误后,结束正在运行的应用进程
–monitor-native-crashes:监控并报告应用程序的本地代码崩溃
–herof:在事件序列结束时生成herof文件,该文件可用于分析应用发内存使用情况
–pct-touch<百分比>:设置触摸事件在monkey生成发事件流中所占的百分比,包括屏幕的滑动以及触摸
–pct-motion<百分比>:设置轨迹球(移动轨迹)事件在事件流中所占的百分比
–pct-trackball<百分比>:设置轨迹球(点击轨迹)事件在事件流中所占的百分比
–pct-nav<百分比>:设置基本导航事件在事件流中所占的百分比
ege:adb shell monkey --pct-nav 5 1000 {生成1000个随机事件,其中百分之五是基本导航键随机点击}
–pct-majornav<百分比>:设置主要导航键事件在事件流中所占的百分比
–pct-syskeys<百分比>:设置系统按键事件在事件流中的百分比
–pct-appwitch<百分比>:设置启动活动(应用切换)的事件在事件流中的占比
ege:adb shell monkey --pct-appwitch 10 800 {生成800个随机事件,其中百分之十是切换应用事件}
–pct-anyevent<百分比>:设置任意类型的事件在事件流中的百分比

高级参数—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.发现打开的还是北京天气的页面

高级参数—touch

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事件,可以设置这样事件的百分比,数字9表示启动Activity事件。
在这里插入图片描述

11.flip事件

指的是键盘轻弹,点击文本框,键盘弹起,点击其他区域,键盘收起。
在这里插入图片描述

12.其他事件百分比设置

其他事件是指除了上面的事件。因为不知道划分在那种事件,就放在其他事件这个分类。数字11表示其他事件。
在这里插入图片描述
总结:如果你需要制定只做2种或者三种事件,那么你几种事件百分比相加一定要等于100%,否则剩下的会自动随机分配。语法格式,参考motion部分的这张图。

猜你喜欢

转载自blog.csdn.net/T1314_/article/details/140831492