ADB与Monkey有着密切的关系,但是我为什么要分开讲呢,虽然有密切的关系,但是作用的领域还是有所区别的,Monkey猴子,模仿人的动作完成指定或者随机的操作,代替人为操作手机的。ADB模拟管理手机的,通俗点这么说。废话不多说,看完你就知道了两者之间有何具体的区别。
目录
在测试中如果要进行APP稳定性测试Monkey绝对是首选,那么什么是稳定性测试呢?
稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户 提供服务
那么Monkey又是怎么来做到的呢。
Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等), 实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。
adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试
看了Andrioid-SDK包的就明白了,里面有这么些东西,我们通过输入命令辗转反侧才到设备上,设备识别到了才会有相应的操作。
Monkey选项主要分为3大类:
1. 基本配置选项,如设置尝试的事件数量,运行约束选项,如设置只对单独的一个包进行测试
2. 事件类型和频率
3. 调试选
之前讲过怎么装Android-SDK,那么我们通过输入adb shell monkey可以看到
这么多命令,怎么办呢,也看不懂,看不懂就跟着来。
不管怎么样万能的结构就是adb shell monkey ... count
count什么意思呢,事件数,也就是执行多少次的意思 ,这个结构中就是你随意填入的命令了,接着看。
基本配置
事件间隔(--throttle)
eg:时间间隔单位是ms,1s=1000ms发送10个事件,持续1分钟。换算一个事件间隔6s,10个事件就是60s
adb shell monkey --throttle 6000 10
指定包(-p)
1、-p 此参数指定了一个包,Monkey将只允许系统启动这些包里的 Activity
2、-p -p 如果用此参数指定了几个包, Monkey将只允许系统启动这些包里的Activity
eg:执行CSDN100次事件
adb shell monkey -p net.csdn.csdnplus 100
日志设置(-v)
1、-v Level 0 除启动提示、测试完成和最终结果之外,提供较少信息
2、-v-v Level 1 提供较为详细的测试信息,如逐个发送到Activity的事件
3、-v-v-v Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
eg:执行日志导出到本地
adb shell monkey -p net.csdn.csdnplus -v-v-v 100 >d:\CSDN.txt
seed值(-s)
在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现 呢?
-s seed 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成 相同的事件序列。也可以指定值。
eg: 复现bug
adb shell monkey -s 20210728 -p net.csdn.csdnplus -v-v-v 100 >d:\net.csdn.csdnplus.txt
回归测试(验证bug)
adb shell monkey -s 20210728 -p net.csdn.csdnplus -v-v-v 50
调试选项
在Monkey运行过程中,我们可以通过结束进程的方式来终止Monkey的执行,当然在运行过程中遇 到异常、奔溃等情况Monkey也会停止。为了保证执行的事件数执行完整,我们可以通过调试选项 的设置来防止在运行过程中Monkey命令的提前结束。
--ignore-crashes 忽略在应用程序出现crash时导致的monkey停止
--ignore-timeouts 忽略在应用程序出现ANR问题时导致monkey停止
--ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止
--kill-process-after-error 当应用程序发生错误时,应用程序停止运行并保持在当前状态
eg:对CSDN进行稳定性测试,执行50次事件,忽略过程中遇到的异常,直到50次事件完成
adb shell monkey -p net.csdn.csdnplus --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security- exceptions --kill-process-after-error -v-v-v 50 >d:\CSDN.txt
事件类型
0:触摸事件百分比,即参数--pct-touch 实际操作类似于点击
1:滑动事件百分比,即参数--pct-motion 实际操作是一个没有拐弯的直线滑动操作
2:缩放事件百分比,即参数--pct-pinchzoom 智能机上的放大缩小手势操作
3:轨迹球事件百分比,即参数--pct-trackball 一系列的曲线滑动操作
4:屏幕旋转事件百分比,即参数----pct-rotation 手机屏幕在横竖屏之间不断地切换
5:基本导航事件百分比,即参数--pct-nav 设备上、下、左、右键
6:主要导航事件百分比,即参数--pct-majornav 键盘的中间键、回退按键、菜单按键
7:系统事件百分比,即参数--pct-syskeys 点击Home键、返回键、音量调节键等
8:Activity启动事件百分比,即参数--pct-appswitch 页面的切换与跳转
9:键盘翻转事件百分比,即参数--pct-flip 点击输入框、键盘弹起、点击输入框以外区域、键盘收回等
10:其他事件百分比,即参数--pct-anyevent 除了上面的一些其他事件,如按键、其他不常用的设备上的按钮,
eg:adb shell monkey -p net.csdn.csdnplus -s 100 --pct-touch 30 --pct-motion 30 --pct-appswitch 10 --pct-rotation 5 --throttle 1000 --ignore-crashes --ignore-timeouts -v-v-v 36000 >d:\CSDN.log
注:将adb shell monkey写到.bat文件中即可,事件类型根据测试的app自行决定事件的百分比,如果APP的滑动需求较多,那就增加滑动的事件百分比。
分析日志(找BUG)
作为一名合格的测试人员,既然能跑稳定性测试,那么出现的BUG也不能放过,需要记录起来,那么怎么样找BUG呢,这里稍作说明。
ANR程序无响应、crash程序崩溃、exception异常、timeout超时,这四种,timeout可以忽略,可能是因为网络原因造成的也不一定,但是合格的测试都会记录下来。
1、统计出现的异常次数、出现频率
2、定位错误事件
3、提交bug,并附上日志信息
4、回归验证
最好的是把次数记录好后把对应的BUG提示也一起附在后面,记录好多少行,最后提交的时候把整个日志文件也给到开发。