lsekfe 发表于 2023-1-29 13:14:50

Monkey进行稳定性测试!

背景
  项目在Unity、白鹭引擎,增加Cocos-2dx游戏引擎,测试阶段需要内部跑一段稳定性,特使用adb+monkey的形式进行测试,再放到云测做批量的适配和深度稳定性测试。
  Monkey命令说明
http://www.51testing.com/attachments/2023/01/15326825_202301281629261ioXP.png


// 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

http://www.51testing.com/attachments/2023/01/15326825_202301281629262WGim.png
  其他稳定命令
语法: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 -pcom.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里面。
http://www.51testing.com/attachments/2023/01/15326825_202301281629263nMw3.png
  Monkey终止命令
  启动后,即使与PC断开后,其仍会继续执行,直到时间执行完毕或者发生异常停止。
  注:若未执行完,断开PC也会继续执行,所以需要及时停止。
// 查询 com.android.commands.monkey 进程ID
adb shell ps |grep monkey
...
...
// kill 对应的monkey进程
adb shell kill

其他注意事项
  屏蔽状态栏:
// 隐藏手机的状态栏
adb shell settings put global policy_control immersive.full=*
// 开启手机状态栏
adb shell settings put global policy_control null

屏蔽音量键:
--pct-syskeys 0





页: [1]
查看完整版本: Monkey进行稳定性测试!