目录
1.monkey测试原理
2.Monkey启动架构图
3.Monkey为什么是Android测试工具原理解析
4.Monkey命令
5.Monkey日志分析
1.monkey测试原理
monkey是向系统发送一系列的伪随机的用户事件流,这些事件流包括:按键输入、触摸屏输入、手势输入。实现对应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性和健壮性。
2.Monkey启动架构图
3.Monkey为什么是Android测试工具原理解析
Monkey 程序是由 Android 系统自带,使用 Java 语言写成。在Android文件系统中的存放路径是:
/system/framework/monkey.jar;
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:
/system/bin/monkey;
也就是说monkey可以直接通过打包进测试工具中,被测试人员直接使用,网络上许多第三方的monkey工具就是通过对原生的Monkey.jar包进行二次开发实现。
为什么说monkey是自带的命令
输入命令:
adb shell
cd /system/framework
/system/framework $ ls
可以看到有Monkey的jar包,所以说Monkey命令是Android自带的命令。
是怎样运行Monley命令
输入命令:
$ cd /system/bin$ ls
可以看到bin目录下包含有“Monkey”的shell脚本
可以通过命令:
$ cat monkey
4.Monkey命令
参数
使用命令
adb shell monkey
能够看到所有的Monkey命令
(1)-p参数
获取所有三方包名:
adb shell pm list packages -3
指定APP Monkey测试
adb shell -p com.xiachufang 500
启动多个应用只需要增加多个 -p 包名字段就可以实现。
(2)-v参数
显示日志详细程度,命令行不同个数的-v会有不同的效果
-v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
-v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
-v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
(3)-s参数
seed值,如果不指定seed值,会随机生成一个seed值,seed值的作用是指定发送的序列,seed一样,发送的序列才一样
输入命令:
adb shell monkey -s 123456 -v -p com.xiachufang 500
(4)–throttle
事件之间加入延时操作,在某些不需要频率过快,或需要定频率进行交互时,可以采用–throttle来做事件之间的延时操作。
输入命令:
adb shell monkey -s 123456 -v -p com.xiachufang --pct-touch 60 --throttle 300 100
(5)指定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>:指定任意事件的百分比。
输入命令:
adb shell monkey -s 123456 -v -p com.xiachufang --pct-touch 60 500
指定touch事件占比60%
(6)–ignore-crashes 忽略崩溃/–ignore-timeouts 忽略超时/–ignore-security-exceptions 忽略安全异常
一般情况下,APP在操作过程中会存在崩溃、超时、异常等情况,按照前面所提到的,这会导致monkey直接停止测试。如果想要忽略掉这些情况,直接配置忽略设置就可以了。ps:这里的超时并不是网络超时,而是相应超时导致的ANR。
adb shell monkey -s 123456 -v -p com.xiachufang --ignore-crashes --ignore-timeouts --pct-touch 60 --throttle 300 100
5.Monkey日志分析
(1)Event percentages:
- Event percentages本次测试的事件分布频率
- 0:触摸事件百分比,即参数–pct-touch
*1:滑动事件百分比,即参数–pct-motion
*2:缩放事件百分比,即参数–pct-pinchzoom
*3:轨迹球事件百分比,即参数–pct-trackball
*4:屏幕旋转事件百分比,即参数–pct-rotation
*5:获取危险权限事件百分比,即参数–pct-permission//低版本没有
*6:基本导航事件百分比,即参数–pct-nav
*7:主要导航事件百分比,即参数–pct-majornav
*8:系统事件百分比,即参数–pct-syskeys
*9:Activity启动事件百分比,即参数–pct-appswitch
*10:键盘翻转事件百分比,即参数–pct-flip
*11:其他事件百分比,即参数–pct-anyevent
5.1 log文件配置
将level 1的文件命名为verbose,主要是用来观看日志信息和事件分布信息
将level 2的文件命名为error。主要是用来观看error的信息,做进一步的bug分析。
2>D:\zuoting\works\Monkey测试/error.txt Level 2日志保存到电脑上的error.txt中
1>/sdcard/verbose.txt Level 1日志保存到sdcard上的verbose.txt中
在monkey自动化测试(命令行)这里我们需要在最后的命令行里面加上配置。
adb shell monkey -s 123456 -v -p com.xiachufang --ignore-crashes --ignore-timeouts --pct-touch 60 --throttle 300 100 2>D:\zuoting\works\Monkey测试/error.txt 1>D:\zuoting\works\Monkey测试/verbose.txt
5.2 获取log文件
error.txt 记录了MONKEY测试时产生的一些ANR、强制关闭等异常
verbose.txt 记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等
log.txt 此文件在手机上的LOG文件夹中(data/log目录)中,主要记录程序对MONKEY测试时的响应情况