华为OpenLab游戏自动化测试能力探索和实践

Razor

2019/07/03 发布于 技术 分类

安卓绿色联盟 

文字内容
1. 安卓绿色联盟·第21期技术沙龙 华为OpenLab游戏自动化测试能力探索和实践 北京场 主办方: 日期:2018年9月15日
2. 01、行业痛点和技术难点 目录 02、游戏SDK关键技术 03、游戏AI关键技术 04、游戏性能关键技术
3. 01 行业痛点和技术难点
4. 痛点 & 难点 • 游戏对象识别难 • 分辨率、屏幕尺寸五花八门 • 传统基于控件/特征方式乏力 EMUI X 游戏相关核心问题 主要问题 1:闪退/黑屏 (45.27%) 主要问题 2:卡顿无响应(26.37%) • 游戏场景复杂多变 • 游戏类型多样(棋牌、射击、益智…) • 游戏玩法独特 • 游戏操控多样(Touch、Sensors…) 主要问题 3: 触摸无效/掉线/低电量(11%) 其它:(17%) 17% • 性能瓶颈 • 内存超标 • CPU稳定性差 • … 11% 闪退/黑屏 45% 卡顿 触摸无响应 其它 27%
5. 策略 • 游戏SDK内嵌 • 功能脚本测试 • 重度游戏场景 • 游戏AI遍历 • 基础兼容遍历(安装/卸载/启动/闪退/无响应/运行异常/…) • 新手引导测试(自动登录/自动升级/弹窗识别/…) • 深度兼容遍历 • GP工具( GamePerceptio) • 游戏性能、功耗测试 • 核心指标:F(FPS)、P(Power)、C(CPU)、G(GPU)、M(Memory)、T(Temperature)
6. 02 游戏SDK关键技术
7. 初衷
8. 游戏SDK架构设计 def test(): element = engine.find_element("/*/AutoButton") engine.click(element) engine.press(element,1000) engine.press_position(100,100,1000) ...
9. 游戏对象识别 • GameObject • Component-Based • Unity查找对象方法 • • • • • static GameObject Find (string name) static GameObject FindWithTag (string tag) static GameObject[] FindGameObjectsWithTag (string tag) static Object FindObjectOfType(Type type) static Object FindObjectsOfType(Type type)
10. 插件交互 • Game & SDK & Service • SDK Integration • RPC • GDB • Unity & Android • dll & aar • dll & so • so & aar • GDB • Service & Script • ADB + TCP/IP public static void UnityPlayer.UnitySendMessage(String arg0, String arg1, String arg2) AndroidJavaClass cls = new AndroidJavaClass(“xx.xx.xx")) AndroidJavaObject locale = cls.CallStatic<AndroidJavaObject>(“xx")
11. 插件交互
12. 实际效果
13. 03 游戏AI关键技术
14. 游戏AI架构设计 • AI Service
15. 游戏文本识别 • 文本检测 • Connectionist Text Proposal Network (CTPN) • An Efficient and Accurate Scene Text Detector ( EAST ) • 文本识别 • Convolutional Recurrent Neural Network(CRNN) • CTPN • Sequence • RNN(BLSTM) + CNN
16. 游戏物体识别 • Faster RCNN • SSD • YOLO v2/v3 18大类 40小类物体
17. 区域“泛物体”识别 • 泛物体发现 • Ghaph Segmentation • Highlighted Regions • Game Objects • 泛物体识别 • RP + Directs Feature • Gradient Boosting Decision Tree(GBDT)
18. 04 游戏性能关键技术
19. GamePerceptio工具 • 核心功能 • 采集F、P、C、G、M和T等信息 • 支持异常自动截图 • 对性能功耗影响<3% • 使用步骤 • • • • • • 登录注册 任务创建 数据采集 报告上传 任务查询 报告展示
20. 性能关键技术 • F(FPS) • dumpsys SurfaceFlinger –latency <window_activity> • P(Power) • Voltage:/sys/class/power_supply/battery/voltage_now • Current:/sys/class/power_supply/battery/current_now • Capacity:BatteryManager.BATTERY_PROPERTY_CAPACITY • C(CPU) • Frequency :/sys/devices/system/cpu/cpu%d/xxx/xxx • Load:/proc/stat • G(GPU) • Frequency: /sys/class/kgsl/xxx/xxx • Load: /sys/class/kgsl/xxx/xxx • M(Memory) • dumpsys meminfo • T(Temperature) • /sys/devices/virtual/thermal/xxx/xxx • 低帧率 • 衡量游戏卡顿程度 • low frame rate= low nums / total nums * 100% • 均帧率 • 衡量游戏流畅程度 • ave frame rate= ave(FPS) • 抖动率 • 衡量游戏画面稳定性 • 帧率很高,但是上下波动较大,用户仍能感受到卡顿
21. 实际效果 性能表现 硬件资源占用 功耗消耗 温度表现 整体打分 每秒截图 图形信息
22. THANKS