作者:weien王者荣耀项目组高级测试工程师

写在前面的话

不要期望自动化能帮你去找bug,不要觉得自动化做得越多越好,这里面的原因我相信大家或多或少都了解。本文主要是介绍王者荣耀项目,如何利用腾讯WeTest平台提供的GAutomator自动化测试框架,来解决王者荣耀项目研发测试过程中的几个痛点,从测试角度保证游戏基础体验,助力打造高品质手游。希望本文能够给大家提供一些思路。

我们遇到的问题

MOBA手游核心玩法是5V5对战模式,5V5的核心玩法决定了王者荣耀在测试时需要投入更多的人力和机器,每次测试需要10个测试人员来协助完成。其次项目更新迭代速度非常之快,一个版本需求点超过300个,比如已经上线的V12版本增加了新的迷雾地图模式、全新的战队赛、5人排位赛、新英雄、新装备等。游戏的核心玩法和快速迭代,也决定了测试同学需要使用全新的方式来解决测试过程中的一些难题。

自动化测试特点

王者荣耀的更新迭代非常快,需要使用自动化来进行快速验证。中国有句话叫“上医治未病”,及时的发现bug并修复能够有效的避免,发布前的紧急修复和发布延迟。自动化测试能够让测试人员更多的关注游戏功能性问题、游戏体验问题,以及将更多的时间用在问题总结之上。基于CI的自动化测试,能够在游戏构建好之后,在1个小时左右收到当前版本的测试报告。在WeTest平台,一次测试能够覆盖top200的手机类型,发现兼容性问题也更加的高效。

王者荣耀测试过程中3大痛点

1.难以复现的同步问题

王者荣耀使用帧同步技术来实现实时的PVP对战。帧同步要求所有客户端基于相同的初始状态,相同的输入,相同的处理逻辑,最终有相同的输出的同步方式,所有的客户端保证逻辑一致。服务器不做仲裁处理。这里可能因为不稳定的排序、随机数、浮点数、状态缺少检查等原因造成客户端不同步问题。出现了不同步问题不可修复,一旦出现玩家本局将直接作废,对玩家的影响是致命的。下图是游戏早期测试阶段的一张图,同一局对战里面差不多同一时刻,敌我双方都出现了龙buff。两边的人头数也相差巨大,右边这张图的玩家一个人13杀0死,这种严重的不同步问题,已经脱离整个战局。

  帧同步出现概率极低,需要大量的人员来进行测试。部分不同步问题需要到体验服上才会暴露,才能修复问题。

2.Android手机的适配问题

Android手机碎片化非常严重,品牌、型号、分辨率种类繁多,适配问题难以验证。

王者荣耀android机型中top10的机型用户占比为16%,top100的占比为56.2%,碎片化严重。但是,王者荣耀项目组对手游的crash要求极高,现在线上的crash在0.4%-0.6%之间。以前在功能测试过程中发现兼容问题+上线前ATC兼容实验室进行测试略显不足,功能测试覆盖的手机类型有限,ATC实验室往往需要排队预约,而且测试的次数有限。

举个例子:某个机型在5v5对战中更新抛出异常。单纯的人工测试和一次适配测试可能都无法发现类似的问题。自动化不断的去对战发现此类问题的概率较大。

3.英雄数值平衡性验证

英雄是王者荣耀的生命线,如何验证英雄的平衡性是手游可持续发展的关键。一个新的英雄上线,需要大量人力和对局才能验证新英雄数值的合理性,目前使用的方式是英雄设计组+体验服的方式。需要更加详细的,英雄之间对比的数据报告。

构建自动化测试系统

王者荣耀的自动化测试,使用WeTest的GAutomator来完成,由WeTest平台和王者荣耀共同完成bug的检验和发现工作。GAutomator框架主要完成5V5 PVP的战斗的测试工作,WeTest平台主要负责收集crash信息、日志信息、性能数据等,王者荣耀通过检测上报发现“不同步问题”。

自动化测试用例

自动化测试的主要过程包括,登录->选区->弹出框处理->5V5匹配->英雄选择->英雄集合->技能学习,装备购买->团战->对战结束退出。

为了能够更好的发现不同步问题和测试性能,需要10个英雄尽可能团战。团战需要更多的同步数据,也往往是性能的瓶颈所在。

比如,英雄选择看起来是这样子的,V12版本需要优先选择亚瑟和安妮。

选区的代码是这样子的

构建自动化云测系统

测试用例构建完毕并在本地执行通过之后,就需要能够在平台上运行自动化测试用例,并选择所需要测试的机型种类和数量。

项目组通过CI构件好客户端后,可以直接通过python脚本提交到WeTest平台。WeTest平台根据上传的测试脚本和选择的机型执行自动化测试用例。在执行自动化测试用例的过程中会检测crash、性能数据、采集图片和手机日志信息。所有的手机全部执行完毕后,会输出一份测试报告。测试报告由测试外包同学负责整理,并提交bug给开发。不同步问题由测试人员,根据服务器记录的日志信息分析,获取不同步产生的过程还原问题。

自动化测试效果

V12版本总共发现了5次低概率的不同步问题,检测出了10种C#异常,1种屏幕渲染问题,1种机型适配问题。至少能够减少1次体验服的发布次数,bug能够提前暴露约5天。

最后分享一下GDOC(腾讯游戏内部开发交流大会)上比较集中的Q&A

Q:如何发现不同步问题A:在5V5自动化测试过程中,王者荣耀服务器会记录每个客户端的上报的日志。可以通过日志对比检测,10个客户端中哪些客户端与其他客户端日志不一致。从不同步的客户端日志中能够找到,不同步发生的原因。

Q:如何获取英雄的战斗数据A:自动化框架无法获取英雄的战斗数据,GAutomator仅仅负责进入战斗,由开发者通过日志等其他方式记录战斗数据。然后再有独立的系统,对战斗数据进行解析验证。目前这部分内容尚未,正式投入应用,正在开发之中。

Q:自动化测试用例人力投入如何?需要多少时间?A:王者荣耀包括5V5 PVP,PVE,开房间打电脑,迷雾模式,1V1,3v3总共代码在500行多。投入人力7天左右。

Q:脚本的维护性如何,是否支持录制A:已经开发出基于控件的录制方式,玩一遍游戏之后能够尽可能的回放

Q:GAutomator支持的游戏引擎类型A:目前支持支持Unity引擎

目前GAutomator自动化测试框架正在开放内测中,想了解更多技术细节可以报名内测。截止2016.12.31总计送出20个免费内测名额。

报名联系腾讯WeTest助手(QQ:800024531)或访问Unity论坛置顶活动贴自助申请。

王者荣耀装备测试软件,王者荣耀首度公开5v5 PVP自动化测试方案相关推荐

  1. 王者荣耀装备测试软件,王者荣耀里有3个“测试仪”,可以测出辅助玩家的真实水平!...

    前言:在王者荣耀游戏中辅助是一个上限非常高的位置,不会玩的辅助就是敌人的ATM,会玩的辅助就是节奏的发动机.怎么看一个辅助会不会玩呢?答:王者荣耀里有3个"测试仪",可以测出辅助玩 ...

  2. 王者荣耀cpu测试软件,王者荣耀90帧模式实测:骁龙888对比骁龙865,谁最强?

    [科技犬] <王者荣耀>已经提供了90帧率模式的开关按钮.目前开放的机型如下:华为 nova 8 Pro.一加 8T.一加 8.OPPO Reno5 Pro+.OPPO Find X2.O ...

  3. 王者荣耀cpu测试软件,你的手机能否玩王者荣耀,主流处理器新版王者荣耀测试...

    说道国民级手游,目前来看那绝对是王者荣耀和刺激战场,之前的话那可是王者荣耀的天下,甚至许多手机厂商在发布新手机的时候会专门公布王者荣耀的帧率,可见王者荣耀带来的影响有多大. 新版王者荣耀 随着王者荣耀 ...

  4. 显存测试软件linux环境_CI/CD 中的自动化测试的概要知识 | Linux 中国

    持续集成和持续交付是由测试驱动的.以下是如何做到的. • 来源:linux.cn • 作者:Taz Brown • 译者:geekpi • (本文字数:1601,阅读时长大约:2 分钟) " ...

  5. 王者荣耀测试自己本命英雄软件,王者荣耀本命英雄测试

    王者荣耀本命英雄测试是一款只能测试玩家王者本命英雄的软件,在软件中拥有许多的测试题目可以进行回答,通过回答相应的测试题目在里面获得相应的本命英雄答案,通过如实的回答里面的问题可以从而得知自己的本命英雄 ...

  6. 测试服务器角色转移系统,王者荣耀转区测试什么时候开始 跨系统角色转移测试时间...

    王者荣耀转区规则已经出炉,虽然转区具体操作都出来了,但要等测试开启才能参加,那么转区测试什么时候开始呢?小编下面就给大家分享一下跨系统角色转移测试开始时间,大家都可以做个了解. 王者荣耀转区测试什么时 ...

  7. 关于游戏平衡性——王者荣耀装备百分比参考值

    在游戏中,玩家可以通过购买装备来增强自身属性,那么这些装备对游戏平衡性起了至关重要的作用. 首先介绍的是被动.被动:在游戏过程中自动触发.被动的规则是,同一装备购买多次被动不叠加.唯一被动:购买多个装 ...

  8. 安卓微信王者荣耀野区服务器,王者荣耀安卓微信140区彼岸红莲

    游戏简介: 王者荣耀是一款moba策略对战手机游戏,王者荣耀是腾讯2015年度英雄对战手游! 热血竞技.抗塔强杀,体验极致的英雄实时对战,领略爽快连招.推塔三杀.团灭超神的酣畅淋漓!1v1.3v3.闯 ...

  9. 王者荣耀微信哪个服务器人最少,王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实...

    原标题:王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实 王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实 大家好!王者荣耀S16赛季已经开启一月之余,但是微信区的王者段位却相 ...

最新文章

  1. 保护嵌入式802.11 Wi-Fi设备时需要考虑的10件事
  2. 机器学习之贝叶斯分类(python实现)
  3. golang 日志输出
  4. C++ STL泛型编程——在ACM中的运用
  5. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
  6. 3.10 深度学习框架-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  7. java重新执行_(转载)java线程 - 线程唤醒后并被执行时,是在上次阻塞的代码行重新往下执行,而不是从头开始执行...
  8. 【报错解决】gcc编译运行c语言程序报警告warning: no newline at end of file
  9. 转:【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图
  10. vs 2012/2013 等工具中,使用正则表达式,查找、替换
  11. TextToSpeech文本转语音,从开始说话到结束的监听
  12. 淘宝运营到底是做什么的?
  13. 什么是数据标准化、中心化、归一化?SPSS又如何实现?
  14. java中文转英文_Java中文转换为英文拼音
  15. blos硬盘启动台式计算机,惠普台式机bios设置硬盘启动操作步骤
  16. VBA-使用inputbox函数
  17. js12---闭包,原型,继承
  18. 物联网信息安全复习笔记(从头开始,两天速成)
  19. 键盘按键错乱,鼠标也失灵怎么办。。。。。
  20. 十年老前端整理的前端全套视频教程,自学者们的福音

热门文章

  1. STL中的双向队列deque
  2. 基于图割优化的多平面重建视觉 SLAM(ISMAR2021)
  3. 公开处刑:研究者自建Papers Without Code网站,张贴复现不了的论文
  4. Deepfit: 通过神经网络加权最小二乘法进行3D表面拟合
  5. 从零开始学习「张氏相机标定法」
  6. vue checkbox 默认选中
  7. 人类dna信息量_多大容量的硬盘才能装下全部人类的DNA?
  8. 资源高效搜索方法,你 Get 到了吗?
  9. 在线分析|在线做随机森林分析
  10. 零基础入门学习Python(13)-字符串