1、网易游戏实时代码染色系统网易雷火 王华兰自我介绍目前在倩女幽魂手游项目中负责自动化测试、性能测试、工具开发等相关工作。从零开始,搭建了多个自动化测试框架、测试平台等,善于发现并解决问题。曾担任雷火游戏事业群性能组组长,负责并参与永劫无间、倩女幽魂手游、逆水寒等多个游戏产品的压测工作,对压力测试、性能优化等也有着丰富的经验。王华兰 网易游戏 雷火事业群 资深游戏测试开发工程师目录04 未来工作&总结01 背景介绍02 系统介绍03 架构搭建背景介绍线上事故1天降惊喜活动异常表现:玩家断线重连、顶号会导致重新计时原因:程序没有正确处理断线重连和顶号的情况,没有测到这两种情形影响:三级线上事故线上事
2、故2帮会仓库复制装备表现:出现多个百炼装备,除了词条,数值属性等一模一样原因:玩家通过外挂手段绕过客户端限制,服务器端没有进行正确的验证,没测到相关分支影响:二级线上事故线上事故总结在测试过程中已经修复过一个刷属性的bug,但是在验证测试用例的时候设计的还不够全面,覆盖度不够时间紧张的时候更多的是进行黑盒测试,有些逻辑上的漏洞还是需要从代码层面考虑.延迟触发AI易发生边界问题,在测试时要多考虑一些异常情况的发生测试未覆盖弱网情况下,登录同步协议丢失的情况当代码重构时,相关部分的内容要注意回归测试,避免有遗漏的部分没有测试这次是功能迭代,主要去测试新功能和旧功能是否都正常,没有测试这种条件复杂的
3、情况,测试覆盖面也不广,经过这次事故后及时补充了测试用例.BUG分类32%68%BUG分类覆盖不全其它考虑不全测试遗漏时间紧迫.最大影响范围:全服直接收入影响:10,000,000+常见修复代价:停服、回档、补偿测试痛点依靠经验、能力测试?个体差异大不易把控质量如何评估测试质量?游戏系统复杂不断开发迭代如何优化代码?占用内存空间快速了解边界及异常处理review代码有一定门槛?更有针对性地设计用例测试行为如何与代码联系?测试与程序同学无缝对接解决思路代码覆盖是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。系统介绍系统功能介绍实时代码覆盖率获取实时显示用户当前
4、操作所涉及的代码及覆盖率结果。多样化数据分析支持跨版本、跨平台、跨进程等多样性结果分析。可查看代码实现逻辑及覆盖详情了解产品的代码实现并通过颜色来确认该模块是否有测试到。历史结果追朔可查看历史测试记录。完善测试流程跟进QA,责任程序对相关提交的测试结果进行标记,测试结果进一步促进提升质量。代码测试结果验收自动验收测试是否覆盖程序每一次提交。使用场景黑盒测试黑盒测试白盒白盒化化灰盒灰盒化化黑盒测试转换:全员迈向灰盒化、白盒化,用最直观的方式呈现测试用例的效果,测试者可以是个对代码0基础的用户,用最“小白”的方式进行输入输出的观测。Code Review在做白盒代码Review时,采用实时代码染色
5、系统可以更高效的验证逻辑问题,同时也可以实时监控玩家操作对应的代码执行逻辑,加速整体Review效率。闭环链路黑盒测试可视化-测试行为与代码结合,所见即所得,快速上手。全链路保证质量-实时捕捉“服务器-客户端”结果,对用户无感知。精准锁定遗漏点-问题锁定在代码层,快速定位,使用零门槛。工具的定位代码覆盖率只是一种度量标准实时代码染色系统只是一种检测工具代码覆盖率100%!=无BUG代码覆盖率高!=测试质量高代码覆盖率低-测试质量低倩女幽魂手游永劫无间新倩女幽魂online逆水寒天谕手游忘川风华录接入项目流星群侠传接入项目10+检测版本1000+架构搭建覆盖率语言对象的确定某手游项目C+Lua/
6、PythonC#(C+)Lua某端游项目C+Lua/PythonC+Lua引擎层代码稳定,出BUG概率极低是否需要为稳定的引擎层代码增加测试工作量脚本语言如何收集代码覆盖率?自带库函数Luapythondebug.sethook(.)debug.getinfo(.)Coverage.py报告延迟生成-所有用例执行结束,再计算覆盖率结果产品质量挂钩-游戏产品的异常影响覆盖率结果的生成1.0版本流程1.0版本:自动化测试1.0版本:覆盖率报告1.0版本:使用结果难用拿到覆盖率数据有什么用?操作复杂,使用成本高每天报告没什么变化好卡啊客户端崩溃数据展示性能问题