小游戏质量保证测试实践之路 王昱杰

QCon大会

2019/06/25 发布于 技术 分类

QCon  QCon2019 

文字内容
1. 小游戏质量保证测试实践之路 王昱杰 腾讯互动娱乐高级工程师
2. 自我介绍
3. 自我介绍 • 2015年5月 - 同济大学毕业 • 2015年5月 ~ 至今 - 腾讯互娱品质管理中心 • Unity游戏自动化测试 • 微信小游戏,QQ厘米秀小游戏测试 • QQGame小游戏测试 • 掌上英雄联盟小游戏测试 • H5游戏测试工具 – H5Argus开发与维护(http://wetest.qq.com/product/argus/)
4. 腾讯小游戏进化史 17年7月 首批H5游戏上线 18年3月 微信小游戏向开发者开放 17年12月 微信小游戏正式发布 18年9月 掌上英雄联盟内嵌H5小游戏 18年7月 QQ厘米秀小游戏正式发布 19年2月 QQGame累计上线50款对战小游戏 18年11月 微信发布创意小游戏计划
5. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
6. 功能及容器测试 Ø 稳定性要求 • 不出现crash • 不影响游戏对局数据 • 不影响重新进入游戏 正常游戏中 收到语音通话 通话中 返回游戏
7. APP和小游戏数据互通测试 帐号互通 匹配互通 货币互通 道具互通 结算数据互通 安卓APP版本 独有部分互不影响 APP独有 – 小游戏独有 小游戏版本
8. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
9. 小游戏的三种内存 内存过高的风险 • 被微信终止 Chrome 性能面板 微信小程序性能面板 JS Heap 内存 vs 业务内存 • 被操作系统终止 JS堆栈 < 业务内存 < 内存
10. 同一款小游戏在不同机型上的内存相差很大? 根据不同机型制定内存标准 机型 高端机 测试机型 OPPO R9s vivo x9 华为Mate9 中端机 OPPO A57 vivo Y66 华为Mate8 低端机 OPPO A33 vivo Y51 华为畅享5S 测试场景 持续游戏回合10min 游戏界面前台挂机 10min 持续游戏回合10min 游戏界面前台挂机 10min 持续游戏回合10min 游戏界面前台挂机 10min 内存峰值 <600MB <500MB <400MB
11. 同一款小游戏在不同机型的内存对比 通过dumpsys meminfo观察小游戏内存占用 item Native Heap Dalvik Heap Stack Gfx dev GL mtrack .so mmap .dex mmap unknown … Total vivo x9plus 38,876 华为Mate8 40,821 37,782 39,885 9,928 89,920 19,428 10,722 78,936 … 297,567 16,060 249,152 13,030 10,921 57,504 … 439,182 Ø 对比结论 • 内存占用:华为Mate8 > vivo X9plus • 主要差异在于Gfx dev 和 GL mtrack两项 • 其他内存项差别不大 • vivo x9plus使用GPU:Adreno 510 • 华为Mate8使用GPU:Mali-T880 Ø 不同机型上内存差异较大的原因 • 屏幕分辨率 • 屏幕密度 • 不同GPU芯片的内存策略不同
12. 内存优化方案 • 压缩美术资源 • 减少模型的动画 • 时间换空间 • 合并渲染对象 优化前渲染次数:24 优化后渲染次数:10
13. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
14. 影响小游戏流畅度的因素 Ø 帧率越高游戏体验越好? • 电影和动漫的帧率是24帧 • 大部分手游帧率是30帧 • 主机游戏和PC游戏提供60帧 • 电竞显示器刷新率可达到144Hz Ø 相比于帧率,稳定性更重要 电影中运动模糊提供了很好的过渡效果
15. APP游戏的帧率测试方法并不适合小游戏 Ø 安卓手机获取帧率的方式 • 从OpenGL获得 • 从SurfaceFlinger获得 • 从游戏引擎获得 Ø 不适合小游戏的两点原因 • 包含宿主容器的渲染数据 • 浏览器的绘帧不连续 小游戏使用Hybrid渲染模式 Native 组件 系统层面采集的帧率比实际偏高
16. 衡量小游戏绘帧情况的三种帧率 游戏引擎绘帧频率 engine-fps 浏览器以60帧的频率绘制 有效绘帧频率 real-fps 小游戏绘帧与浏览器同步 浏览器绘帧频率 reqAF-fps Ø 三种fps对比 • engine-fps比real-fps高, 存在无效绘帧 • engine-fps 与 reqAF-fps接近,达到浏览器上限 • engine-fps 比 reqAF-fps小很多,游戏绘帧有富足
17. 如何准确测试小游戏的帧率 每次绘帧时间(JS代码执行时间)较长 每次绘帧时间(JS代码执行时间)很短 连续两次绘帧(JS代码执行)间隔很短
18. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
19. 首屏加载时间影响玩家留存 某小游戏各个阶段流失比例分析 流程 第1日 第2日 加载累积流失 6.58% 9.14% 战斗环节累积流失 13.17% 14.78% 战斗结算累积流失 5.87% 7.39% 进入大厅累积流失 11.03% 15.56% 微信游戏loading 腾讯游戏loading 授权页面 第4日 6.99% 13.98% 6.58% 16.56% 首屏时间测试标准 机型 高端机 游戏资源loading 首屏时间 游戏首屏 第3日 4.52% 14.17% 8.67% 14.96% 中端机 低端机 测试场景 首次加载10次 非首次加载10次 首次加载10次 非首次加载10次 首次加载10次 非首次加载10次 标准(秒) <10 <8 <20 <18 <30 <28
20. 首屏时间现有测试方法 手动测试 • 效率低 业界已有的H5页面测试工具 在基础库中统计 • 精度不准确 • 统计白屏时间而非首屏时间 • 精度高 • 中间环节不易区分 • 无法区分中间环节 • 额外开发代码支持
21. 基于chrome远程调试协议进行首屏时间测试 建立远程调试的步骤 • 打开webview调试模式 • 查找socket文件 • 执行adb forward • 访问本地端口 Webview页面信息 • id • title • type • url 打开QQGame调试模式 打开QQ调试模式
22. H5游戏首屏时间计算过程 建立远程调试 新增页面 采集webview中页面信息 关闭页面 URL变化 循环采集 到达首屏 结束采集 (人工判断) 可视化绘制 top页面变化 tabid: title: url: start time: end time: top start: top end: xxx 欢乐斗地主 tab当前链接地址 tab开始时间 tab结束时间 前台开始时间 前台结束时间 获取首屏过程中页面加载信息
23. 欢乐斗地主首屏加载过程 • x轴表示时间,y轴表示不同页面 • 线条的长短表示该标签页存在的时间 • 虚线表示前台可见的页面 • 线条上顶点表示URL发生跳转 欢乐斗地主H5s首屏加载过程示意
24. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
25. 弱网络测试要求 Ø 弱网络达标的基本要求 • 弱网络时有合理的提示 • 核心场景有断线重连机制 正常 弱网 • 不允许出现收支不等的现象 Ø 提升弱网络体验 • 增加离线状态
26. 弱网络测试场景和测试方法 Ø 弱网络测试场景 • 请求回应超时异常处理 • 特征弱网络场景测试 配置弱网络参数 • 实际网络模拟场景测试 Ø 弱网络测试内容 • 支付(若游戏内已开通) • 购买物品、消耗物品 • 游戏核心玩法 Network Emulator for Windows Toolkit
27. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
28. 适配兼容测试内容 Ø 为什么要做适配兼容测试? • 异形屏、不同尺寸的屏幕影响体验 • 定制安卓系统影响功能 • 对于H5游戏,需要适配不同浏览器内核 • 对于小游戏,需要适配不同的微信版本 Ø 适配测试需要覆盖哪些内容? • 各个场景的UI • 音效检查 • 手机功能键 • 系统设置
29. 常见适配兼容问题 文字超框 花屏 ANR 问题原因:该机型WebGL存在适配问题 修复方式:使用Canvas渲染模式
30. 目录 1. 功能及容器测试 2. 小游戏内存标准及内存测试方法 3. 如何准确测试小游戏的帧率 4. 首屏时间的测试和优化 5. 弱网络场景测试要点和测试方法 6. 常见适配测试问题 7. 服务器性能测试方法
31. 服务器性能测试方法 Ø 服务器压测方案 • 预估单台服务器承载玩家数 Ø 压测需要满足的指标 • 核心场景的TPS不低于100 • 事务成功率大于99.9% • 按照实际玩家的协议比例编写脚本 • 90%事务耗时小于1秒 • 阶梯式逐渐加压 Ø 服务器稳定性指标 • 压测期间登录客户端观察现象 • 服务器没有宕机、进程崩溃 • 12小时运行期间没有内存泄漏 • 整机CPU占用不超过70%
32. 服务器性能异常案例 测试期间内存占用持续增长 存在内存泄漏风险 CPU占用降低到0%,且产生新的进程id 服务器进程重启
33. 总结 功能 客户端性能 适配兼容 弱网络 服务器性能 • 容器稳定性 • 内存 • 机型适配 • 测试场景 • 单接口性能 • 数据互通 • 帧率 • 浏览器内核 • 核心要求 • 12小时稳定 • 首屏时间 适配 • 微信版本适 配 性测试