Android稳定性测试---Monkey篇

引入

今天学习了Monkey工具,虽然网上有很多关于Monkey的资料,但是还是要自己写一下~
Monkey,也就是猴子。为什么要叫这个名字呢?假如你把手机给一个猴子,它会干嘛?当然了,他不会打王者,刷抖音,他只是胡乱操作,乱点,乱按等。我们这个工具也是如此,简单来说,他就是随机模拟各种用户操作(点击,滑动,按键等)流,通过adb发送给终端,从而就像一个猴子在毫无章法的操作终端。从而观察终端在这种情况下,所表现出的抗压情况,说白了,就是是否出现异常,Bug等问题。
说了这么多,那Monkey到底是什么?其实就是adb命令。所以关于Monkey的环境搭建,安装好安卓SDK就好了。接下来打开cmd窗口,准备学习这条命令~

Monkey的运行命令详解

在命令窗口中输入以下命令:

adb shell monkey

结果如图:
adb参数图
我们可以看到列出许多参数,接下来我们就针对部分常用的参数进行学习。

COUNT

这些参数中只有一个参数是不可省略的,那就是COUNT,它代表着发送的事件流的个数。下图是发送100个随机事件流给终端。

adb shell monkey 100

count演示图

- -throttle

如果你运行上面刚刚提到的命令,你会发现:命令马上就执行完了,而终端也没有太多的动作反应。那是因为你没有设置 --throttle 这个参数(注意前面是两个杠),它代表着每个事件之间的固定延迟,单位是ms。如果不设置将默认无延迟。一般我们都将延迟设为500ms。

adb shell monkey --throttle 500 100
-v

-v 代表着日志级别。如果不添加该参数,将不会有日志打印;最多可以添加3个-v,-v越多日志越详细,依次是仅包括启动,完成等少量信息;包括每个发送到终端的事件信息;包括测试中选中/未选中的信息。

adb shell monkey --throttle 500 -v -v -v 100
-s

-s(seed)是随机生成的一串数字。每次执行测试都会生成seed值,如果再一次运行monkey测试时将上一次生成的seed值传入,那么将生成和上一次相同的事件流,重复上一次的随机操作。生成的seed值如图:
生成的seed值图
我们要重复上面的随机操作,运行下面的命令:

adb shell monkey -s 1552149200819 --throttle 500 -v -v -v 100
- -pct-touch

–pct-touch参数代表触摸事件的百分比。如下命令是定义触摸事件的百分比为10%:

adb shell monkey --throttle 500 --pct-touch 10 -v -v -v 100
- -pct-motion

–pct-motion参数代表动作事件的百分比,所谓的动作事件,指的就是手指按下屏幕滑动后抬起。如下命令是定义动作事件的百分比为20%:

adb shell monkey --throttle 500 --pct-motion 20 -v -v -v 100
- -pct-trackball

–pct-trackball参数代表轨迹球事件的百分比,轨迹球事件是多个移动事件和点击事件组成的。如下命令是定义轨迹球事件的百分比为10%:

adb shell monkey --throttle 500 --pct-trackball 10 -v -v -v 100
- -pct-nav

–pct-nav参数代表基本导航事件的百分比,基本导航事件是设备上下左右四个方向键。如下命令是定义基本导航事件的百分比为20%:

adb shell monkey --throttle 500 --pct-nav 20 -v -v -v 100
- -pct-majornav

–pct-majornav参数代表主要导航事件的百分比,主要导航事件是菜单键,回退键等主要按键。如下命令是定义主要导航事件的百分比为10%:

adb shell monkey --throttle 500 --pct-majornav 10 -v -v -v 100
- -pct-syskeys

–pct-syskeys参数代表系统按键事件的百分比,系统按键事件是返回键,音量键,home键等。如下命令是定义系统按键事件的百分比为20%:

adb shell monkey --throttle 500 --pct-syskeys 20 -v -v -v 100
- -pct-appswitch

–pct-appswitch参数代表应用切换事件的百分比。如下命令是定义应用切换事件的百分比为10%:

adb shell monkey --throttle 500 --pct-appswitch 10  -v -v -v 100
- -pct-anyevent

–pct-anyevent参数代表其他事件的百分比。如下命令是定义其他事件的百分比为20%:

adb shell monkey --throttle 500 --pct-anyevent 20  -v -v -v 100
-p

-p参数代表执行测试app的包名(安卓app包名的查询方法)。也可以通过定义多个-p,是测试只在几个app中进行。

adb shell monkey --throttle 500 -p com.hytera.contacts -v -v -v 100
- -ignore-crashes

–ignore-crashes参数代表当测试遇到app崩溃时,不会停止测试。(说到这想说一下,如果某个app崩溃只是某个页面崩溃但不退出app,我们用这个参数可以有效地继续执行测试;但是如果某个app崩溃到退出,我们的monkey能否重新打开这个app(包)继续测试?这个还不知道答案,如果有大神了解,跪求告知。)

adb shell monkey --throttle 500 -p com.hytera.contacts --ignore-crashes -v -v -v 100
- -ignore-timeouts

–ignore-timeouts参数代表当测试遇到app请求超时,不会停止测试。

adb shell monkey --throttle 500 -p com.hytera.contacts --ignore-timeouts -v -v -v 100
-f

-f命令指的是运行指的monkey脚本。个人感觉不会经常用,要是指定了时间流,就不叫猴子了。

adb shell monkey -f <name> 100
日志保存到本地

正常来讲,monkey会在测试的过程中将日志信息实时显示在cmd窗口,这样关闭窗口日志信息将不会存在。我们可以用如下的方式将日志保存在本地。下面命令我们是将日志保存在E盘下。

adb shell monkey --throttle 500 -p com.hytera.contacts --ignore-timeouts -v -v -v 100>E:\monkey_log.txt
小荔枝

以下是一个综合的小荔枝。如果你写monkey命令的时候忘记了参数都有哪些或者对于这些参数的顺序存在疑问,可以通过-h查看参数信息,至于顺序按照他的显示顺序写即可。

adb shell monkey -p com.hytera.ocean --ignore-crashes --ignore-timeouts --pct-touch 40 --pct-motion 30 --pct-majornav 10 --pct-syskeys 10 --pct-anyevent 10 --throttle 500 -v -v -v 500>E:\monkey_log.txt

中断monkey测试

一旦monkey开始测试,关闭cmd窗口或者断开数据线都不能中断测试。我们可以采用杀掉进程的方法来停止测试。
首先我们先找到进程。打开cmd窗口执行下面命令:

adb shell ps | findstr "monkey"

查找monkey线程结果图
如图所示,monkey进程的PID是5947,我们用下面命令杀掉该进程即可关闭monkey测试:

adb shell kill 5947

monkey日志分析

我们的日志是一个文本文件,所谓的日志分析其实就是看我们的日志是否有异常信息:
1.通过在日志中搜索“ANR”来判断是否有程序无响应问题。
2.通过在日志中搜索“Exception”来看程序有没有异常问题。
3.通过在日志中搜索“CRASH”来看程序有没有崩溃。
4.通过在日志中的“Switch”来查看切换的包。
5.通过在日志中的“Sleeping”来区分每个事件(因为我们会设置事件间隔)。
如果发现问题需要复现,我们可以通过seed值来重新进行一次相同的测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值