Monkey事件注入机制:是通过framework层的hidenApi(如:activemanager,inputmanager,windowmanager)获取系统服务
inputmanagaer(触摸事件)–屏幕以及物理键的触摸,滑动,点击事件。
activitymanager–调用android系统组件的事件
windowmanager–比如转屏
-
触摸事件:由ACTION_DOWN–>一个ACTION_UP组成
–pct-touch参数来配置此事件比例
-
手势事件:由一个ACTION_DOWN–>多个ACTION_MOVE–>一个ACTION_UP组成
–pct-motion来配置其百分比
-
二指缩放事件(双指在屏幕同时按下并滑动,最后抬起):由一个ACTION_DOWN&ACTION_POINTER_DOWN–>多个ACTION_MOVE–>一个ACTION_UP&ACTION_POINTER_UP组成
–pct-pinchzoom参数来配置此事件的百分比
-
轨迹事件
–pct-trackball参数来配置其事件百分比
-
屏幕旋转事件:由一个rotation事件组成,degree表示的是旋转方向,顺时针方向,0表示90度的方向,1:180度、2:270度方向、3:360度方向
–pct-rotation参数来配置其比例
adb shell monkey -p com.jiuxing.token -v -v --pct-rotation 50 100
-
基本导航事件:是指上下左右按键操作。由一个Key的ACTION_DOWN和ACTION_UP组成
–pct-nav参数来配置其百分比
-
主要导航事件:ui界面发生变化。如back key,menu key等
–pct-majornav来配置其百分比
-
系统按键事件:如home,音量键
–pct-syskeys参数来配置其百分比 -
启动activity事件:–pct-appswitch参数来配置其事件百分比
-
键盘事件:输入框键盘弹起
–pct-flip参数来配置其事件百分比
-
其他类型事件:如具体的数字,字母键等
–pct-anyevent参数来配置其百分比
保存到pc:adb shell monkey [options] < count> > [pc保存地址]
保存到手机中:adb shell monkey [options] < count> > /sdcard/monkey.txt
运行日志和异常日志分开存放: monkey [options] < count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt
0:标准输入
1:标准输出
2:标准错误输出
monkey输出日志一般为4类信息:测试命令,伪随机事件,异常信息,monkey执行结果信息。
测试结果分析:
a、程序无响应,ANR问题:在日志中搜索“ANR”
b、崩溃问题:在日志中搜索“CRASH”
c、其他问题:在日志中搜索”Exception”
adb shell pm list package查看手机上所有安装包
adb shell pm list package -3 查看第三方安装包
adb shell pm list package -s 查看系统包
adb shell pm list packages -e “要搜索的内容” 查看启动包中搜索的包
adb shell dumpsys window | grep mCurrentFocus 获取当前打开的APP包名(前面的为包名,斜杠后面的是当前启动的acivity)
- -p:指定包,若不指定则在整个系统中执行
指定多个包执行10次:adb shell monkey -p 包名 -p 包名 10
- -v 用于反馈日志详细程度
adb shell monkey -p 包名 -v 10 —level 0 默认级别,仅提供启动,测试完成和最终结果等
adb shell monkey -p 包名 -v -v 10 —level1 较为详细的日志,包括每个发送到actvity事件
adb shell monkey -p 包名 -v -v -v 10 —level2 提供最详细的日志,包括了测试中过选中/未选中的activity - -s:用于指定伪随机数生成器的seed值
命令:adb shell monkey -p 包名 –s seed值 执行次数
如果seed值相同,则两次Monkey测试所产生的事件序列也相同的,示例:
测试1:adb shell monkey -p com.kugou.android –s 1540475754297 100
测试2:adb shell monkey -p com.kugou.android –s 1540475754297 100 - –throttle:指定用户事件的操作间隔时延
命令:adb shell monkey -p 包名 --throttle 3000 100 - –ignore-timeouts:忽略超时错误
- –ignore-crashes:忽略crash
- –ignore-security-exceptions 忽略许可错误
- –monitor-native-crashes,用于指定是否监视并报告应用程序发生崩溃的本地代码



