ADB+Monkey+日志分析

背景

项目在Unity、白鹭引擎,增加Cocos-2dx游戏引擎,测试阶段需要内部跑一段稳定性,特使用adb+monkey的形式进行测试,再放到云测如Wetest等做批量的适配和深度稳定性测试。

一、Monkey命令说明

ADB+Monkey+日志分析_第1张图片

// monkey 测试命令 使用方式 及 含义详细说明

adb shell monkey
// 包名
-p com.xiaxl.demo  

// motion 滑动事件:在屏幕某处按下、随机移动、抬起的操作;
// 事件百分比:滑动事件 5% 
--pct-motion 5 

// trackball 滚动球事件(不常使用参数,现在手机基本没有滚动球);
// 事件百分比:轨迹事件 0%
--pct-trackball 0

// nav 基本导航事件:点击键盘上下左右按键的操作(不常使用参数,现在手机基本没有方向键);
// 事件百分比:导航事件 0%
--pct-nav 0

// majornav 主要导航事:5-way 键中的KEYCODE_DPAD_CENTER、KEYCODE_MENU键(不常使用参数,现在手机基本没有这几个实体键);
// 事件百分比:主要导航事件 0%
--pct-majornav 0

// syskeys 系统按键事件: Home、Back、startCall、endCall、volumeControl;
// 事件百分比:系统按键 例:Home、Back 20%
--pct-syskeys 20

// appswitch 切换Activity事件:执行一个startActivity()操作;
// 事件百分比:activity跳转 15%
--pct-appswitch 15

// touch 触摸事件:模拟点击操作;
// 事件百分比:触摸事件 15%
--pct-touch 15

// anyevent 其他类型事件:除了上述事件之外的其他事件;
// 事件百分比:任何事件 45%
--pct-anyevent 45

// 实际用户操作的最快300毫秒左右一个动作事件,所以可以设置为300毫秒
--throttle 300   

// 忽略崩溃    
--ignore-crashes    
// 忽略超时 系统ANR时,继续发送事件
--ignore-timeouts    
// 忽略安全异常
--ignore-security-exceptions 

// 详细信息
-v -v -v 

// 事件数量
192000

// 输出日志
> 1.txt

二、常用Monkey命令

adb shell monkey -p com.xiaxl.demo  

// 滑动事件 10% 
--pct-motion 10
// 触摸事件 90%
--pct-touch 90

// 每个事件结束的时间间隔(300毫秒)
--throttle 300   

// 忽略崩溃   
--ignore-crashes    
// 忽略系统ANR时
--ignore-timeouts    
// 忽略安全异常
--ignore-security-exceptions 

// 详细信息
-v -v -v 
// 事件数量
192000

// 输出日志
> 1.txt
adb devices                    查看手机与adb是否连接
adb connect IP地址:端口号       连接设备
adb shell                      打开设备
adb -s 设备号 命令              打开指定设备
exit                           退出设备
adb kill-server                关闭服务
adb star-server                打开服务
adb install apk的路径           安装APP
adb shell pm list package -3   查看第三方软件的包名
adb uninstall 应用程序的包名     卸载APP
adb pull  手机路径(/mnt/sdcard/文件名)  电脑路径       将手机文件推送到电脑
adb push  电脑路径  手机路径(/mnt/sdcard/文件名)       将电脑文件推送到手机
adb logcat -v time >电脑路径                          日志文件导入到电脑

典型示例:

adb shell monkey -p com.xiaxl.demo --pct-motion 10 --pct-touch 90 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 192000 > 1.txt

ADB+Monkey+日志分析_第2张图片

 

其他稳定命令

语法:adb shell monkey -p 包名 (-s 种子数) 事件 调试选项 -v 执行次数 >日志路径

事件:
0:触摸事件百分比           参数--pct-touch
1:滑动事件百分比           参数--pct-motion
2:缩放事件百分比           参数--pct-pinchzoom
3:轨迹球事件百分比         参数--pct-trackball
4:屏幕旋转事件百分比       参数 - -pct-rotation 
5:基本导航事件百分比       参数 --pct-nav
6:主要导航事件百分比       参数--pct-majornav
7:系统事件百分比           参数--pct-syskeys
8:Activity启动事件百分比   参数--pct-appswitch
9:键盘翻转事件百分比       参数--pct-flip
10:其他事件百分比          参数--pct-anyevent

-p                            后面接包名
-v                            反馈信息的级别,共三级
-s(seed)                    随机数种子
--throttle 300                延时300ms
--randomize-throttle 300      随机延时300ms
--ignore-crashes              忽略崩溃
--ignore-timeouts             忽略反应时间过长
--ignore-native-crashes       忽略本地代码导致的崩溃
--ignore-security-exceptions  忽略安全异常

我自己的实例:(touch事件及motion事件各执行10000次)
adb shell monkey -p  com.IGRS.shtmeeting --throttle 300 --pct-touch 50 --pct-motion 50 --ignore-crashes --ignore-timeouts --ignore-native-crashes --ignore-security-exceptions  -v -v -v 200000 >D:\Log\monkey_log\2020_09_28.txt

日志分析

在文件中查找failed失败 error错误 crashes崩溃 timeouts超时 exception异常 ANR等字段

可以放到IDE或者编辑器里面进行搜索对应的关键字:error、exception等,比如在VScode里面

ADB+Monkey+日志分析_第3张图片

 

三、Monkey终止命令

启动后,即使与PC断开后,其仍会继续执行,知道时间执行完毕或者发生异常停止。

*若未执行完,断开PC也会继续执行,所以需要及时停止

// 查询 com.android.commands.monkey 进程ID
adb shell ps |grep monkey
...
...
// kill 对应的monkey进程
adb shell kill [pid]

四、其他注意事项

  • 屏蔽状态栏
// 隐藏手机的状态栏
adb shell settings put global policy_control immersive.full=* 
// 开启手机状态栏
adb shell settings put global policy_control null 
  • 屏蔽音量键
--pct-syskeys 0

五、参考文章

Android developer Monkey:
https://developer.android.com/studio/test/monkey

monkey学习总结笔记
 

你可能感兴趣的:(移动测试,专项测试,游戏测试入门到精通,android,java,apache)