51Testing软件测试论坛

标题: Monkey进行稳定性测试! [打印本页]

作者: lsekfe    时间: 2023-1-29 13:14
标题: Monkey进行稳定性测试!
背景
  项目在Unity、白鹭引擎,增加Cocos-2dx游戏引擎,测试阶段需要内部跑一段稳定性,特使用adb+monkey的形式进行测试,再放到云测做批量的适配和深度稳定性测试。
  Monkey命令说明



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

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

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

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

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

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

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

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

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

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

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

  31. // 忽略崩溃   
  32. --ignore-crashes   
  33. // 忽略超时 系统ANR时,继续发送事件
  34. --ignore-timeouts   
  35. // 忽略安全异常
  36. --ignore-security-exceptions

  37. // 详细信息
  38. -v -v -v

  39. // 事件数量
  40. 192000

  41. // 输出日志
  42. > 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



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


典型示例:
  1. 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 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里面。

  Monkey终止命令
  启动后,即使与PC断开后,其仍会继续执行,直到时间执行完毕或者发生异常停止。
  注:若未执行完,断开PC也会继续执行,所以需要及时停止。
  1. // 查询 com.android.commands.monkey 进程ID
  2. adb shell ps |grep monkey
  3. ...
  4. ...
  5. // kill 对应的monkey进程
  6. adb shell kill [pid]
复制代码


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


屏蔽音量键:
  1. --pct-syskeys 0
复制代码










欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2