monkey测试

时间:2021-03-19 03:13:39

一、理解monkey测试

1、Monkey测试是Android自动化测试的一种手段。Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。

2、当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件。通常也称随机测试或者稳定性测试。

二、查看设备连接、包名、和入口Activity

1、进入cmd查看设备连接状态:

adb devices

2、查看包名、和入口Activity

进入cd D:\Program Files\adt-bundle-windows-x86_64-20130917\sdk\build-tools\android-4.3

目录下执行下条命令
aapt  dump badging  apk安装包绝对路径
 
三、运行monkey测试
 //不间断操作500次
adb shell monkey -p 包名 -v 500  
 
//每个操作间隔500ms,共执行100次
adb shell  monkey -p 包名  -v-v --throttle  500 100
 
//每个操作间隔100ms,共执行1000次 ,其中点击事件占比50%,轨迹50%                                                                            
adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000
 
//日志重定向到桌面文件夹
adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000   >C:\Users\xyp\Desktop\Android脚本\1.log
 
//每个操作间隔500ms、崩溃、超时、许可错误继续执行
adb shell  monkey -p  包名   --throttle  500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v-v-v  1000000>C:\Users\xyp\Desktop\Android脚本\1.log
 
四、停止monkey测试
重新打开一个cmd窗口
进入adb shell
ps | grep monkey      //查找monkey进程
kill  进程号   //结束monkey
 
五、结果分析
得到Monkey测试的log之后,我们可以通过几个关键词来判断测试是否通过。
1、Monkey finished
用记事本打开LOG,查看log的最下端,是否有类似以下字段:
## Network stats: elapsed time=3799ms (3799ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished
这个字段表明本次的Monkey测试通过,没有异常
2、CRASH
同样,在得到LOG后,搜索”CRASH”字段,如果搜索到有结果,则表明,在测试过程中,测试对象出现了报错现象,因此测试失败。
// CRASH: com.onekchi.downloadmanager (pid 12919)
3、NOT RESPONDING
在log中搜素该字段,如果有搜索有结果,则表示测试过程中,测试对象出现了进程无响应的现象,因此测试失败。
4、无法搜索到上述信息
出现这种情况,一般都是外界原因而非程序本身原因。比如测试过程中,电脑断电关机。或者测试过程中内存不足等等,结果作废,需要重新测试。
 
六、monkey说明
--throttle   时间间隔
--ignore-crashes    忽略崩溃
--ignore-timeouts  忽略超时
--ignore-security-exceptions   忽略许可错误
--ignore-native-crashes  忽略本地崩溃
--monitor-native-crashes   监控本地崩溃
 
--pct-touch  触摸、点击
--pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
--pct-trackball  调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

--pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

--pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

--pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

--pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

--pct-flip 调整“键盘翻转”事件的百分比。

--pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

注意:各事件类型的百分比总数不能超过100%。