中文站

作为游戏测试的核心竞争力是什么?

当收到知乎推送的这个话题后,自己也思考了许久,其实之前也会时不时思考,并也总结过,可以看这篇文章:《优秀游戏测试工程师的特性》,但这里提到的更多的是任何职业都要具备的基本技能,是附着于人的能力,可能和具体的职位没有多大关系。我又查阅了一些资料,借着这个机会,再把思考的结果和大家分享下。其中有些文字和总结是摘抄网上的一些资料的。本着独思而无友,必孤陋而寡闻的心态,在此借地和大家做一个交流。

经常有这样的声音在我们的耳边:测试就要做接触到代码的,点点鼠标谁都……,我承认,的确有那么一段时间,我认为作为一名测试如果能够对于代码了如指掌,能够写出一个个的工具才有可能成为武林的盟主,寿与天齐。似乎,作为测试来说最核心的竞争力就是对于代码的掌握程度,除此以外,那些什么功能测试的用例似乎就是个最低端,最没有价值的产出而已。但是就今天看来,就我现在自己遇到和看到的一些问题和现象,我已经完全摒弃了这种幼稚的想法。例如:现在很多组都在做和预研一些代码级别的测试工具,例如覆盖率工具,代码扫描工具。表面看起来非常的高端,大气,上档次,一切都在自动化,一切看起来都在掌握之中。但是实际情况呢?代码在进行了自动扫描也好,覆盖率统计分析也好,最终产品外放后的质量还是体现在了功能测试上。很多质量问题,比如弱网环境下的bug、异常操作下的bug等,这些通过代码扫描,甚至自动化都是难以发现的。我们必须首先要做好功能测试,有了这个基石,其他的自动化工具才有了意义,才有了发展的基础。

目前游戏测试一般分为游戏测试工程师和游戏测试开发工程师两个职位。

游戏测试工程师主要的任务目标是确保各个游戏功能按照策划案被完整地、正确地实现,实际制作出来的游戏场景、任务、功能要与策划设计的一致。游戏测试工程师的基本要求是对所测游戏的功能和需求非常熟悉。游戏测试工程师平时的主要工作有:按版本进行系统测试或功能测试,跑场景(检查障碍、物件、任务、怪物分布等等)、测试怪物AI、检查和测试物品掉落机率、检查NPC对话、测试技能等等。同时还会做兼容性测试。

测试开发工程师主要的任务目标是保障程序代码的质量,比如通过“代码走查”和“单元测试”来发现程序代码规范性问题和潜在的bug;同时开发和提供各种调试、测试需要用到的辅助工具,还会开发一些自动化的测试工具,如可以自动检查配置表错误的检查工具,可以帮助测试工程师自动跑任务的游戏机器人等。测试开发工程师的基本要求是掌握较好的编程能力和程序调试能力,有一定的软件系统设计能力,同时对所开发的产品的相关领域知识有一定的了解和掌握,如我们是基于unity开发游戏,那么就要会unity相关的技术。

因为业界大力提倡自动化测试,自动化测试人员的薪水也要比手工测试更胜一筹。因此很多QA从一毕业开始就着急的想要置身于自动化测试中,关注于写代码,而忽略了测试本身。我认为,路走偏了。如果只是写代码,开发就够了。QA的竞争力在哪里呢?测试开发的前提是测试,必须要深入了解测试,才能做好测试开发。

测试在项目中的工作流程基本可以通过下面的图概括:


网络上有一篇文章,大意是“测试人员必备的十大素质”,有耐心,细心,良好的沟通能力,很好的抗打击能力,较好的总结能力,问题发散能力、洞察力,对问题的敏感能力等等。除了这些基本的附着于人的能力,我想结合测试岗位来谈谈需要具备的素质:

1.做最熟悉系统或产品的那个人。及时的、快速的发现潜在的bug。有同学可能觉得这应该是产品经理或者主策的事情。其实他们可能对系统或产品的正常行为比较清楚,对一些异常的行为可能关注度不够,测试同学是有能力做最熟悉产品和系统的那个人的,毕竟任何一个地方出问题首当其冲的就是测试同学。

2.测试用例设计能力。无论对于什么游戏类型的测试,你所设计的测试用例总能高效的发现程序缺陷,保障产品质量,这就要求你不仅需要深入理解被测游戏功能需求和用户使用习惯,还要熟悉项目的技术架构。另外,在平时都得多积累,对常见缺陷模式、类型进行归类总结形成体系和经验。在一个领域的时间长了,试过许多错,自然就知道哪些地方出错的概率比较高,提前抛出问题,识别盲点。

3.非功能性测试能力。对于大多数QA来说,非功能测试(性能、安全、兼容性等)都是个神秘的存在,现在比较流行的一个词是全栈,如果要成为全栈测试人员,这些维度的测试必须要掌握。

4.质量和风险管理能力。质量是很难度量的一件事,要具体项目具体分析,横向比较基本没有多大意义。但是,质量管理恰恰是QA的一项必备技能。在敏捷交付过程中,常常受制于时间、范围和成本的约束,质量往往成了不得不妥协的事情。QA既要做好把控,又要学会合理妥协,着实是一门很深的学问。针对不同被测模块,能够快速准确理解需求,且在有限的时间和资源的前提下,明确测试重点及最适合的测试方法,以及对测试风险的应用的评估。这些需要经过大量项目的实战,并且不断总结提炼出共性内容。

最后,我想再说下时下火热的AI。无论作为哪个岗位,我觉得都有必要了解下AI,这将是一次大的技术革命。

不知道大家前段时间有没有被一篇叫做《AlphaGo Zero:这个世界人类是多余的》的文章刷屏。总之,就是一个词,生无可恋。从严格意义上说,测试领域尚未达到真正意义上人工智能的应用阶段,并且在可见的一段时间内,测试的基本形式还是会保持不变。但我们必须要意识下,迟早有一天,测试也将迈入AI时代。测试领域迈向人工智能的世界,需要经历三个阶段:

手工测试。该阶段偏向于用人工来做测试执行。

测试自动化。该阶段偏向于测试执行的自动化,尤其将重复手工测试部分进行自动化,从而提高测试效率,降低人工成本。其本质是人工编写脚本,程序操作,属于任务型程序。

自动化测试。虽然跟测试自动化前后颠倒一下,然而意义完全不一样,它是将测试过程自动化,其包括了测试需求、测试用例设计、测试数据准备、测试环境搭建、测试版本部署、测试执行及测试报告都将自动化。然而这个过程仍然是人工设计干预,确定输入,只是把过程进行自动化,机器本身并没有达到自我学习的能力水平,属于过程管理程序。

AI化测试。进入人工智能阶段以后,测试人工智能的流程和框架可能会发生颠覆性的改变,其过程及手段并不一定遵守当前的测试生命周期理论。AI化测试将进行阶段性的发展,测试工程师这一职业或许将不再存在,测试工作任务将会被AI逐步代替。整个测试领域会将随着人工智能的发展分为:

弱AI化测试,测试工作任务化人工智能,通过对人类提出的知识图谱,根据知识点,处理结构或非结构化数据,并通过对程序代码的分析,计算出系统的可能的薄弱环节,自动提供测试方案,完成测试验证,指出问题所在,给予问题解决方案,甚至修改好程序。测试阶段会从过去的单元测试、集成测试、系统测试和验收测试缩减为两个阶段:机器测试和用户测试。由于最终使用者是人类,所以前端仍需要人类的介入,只是后端得到了整合,缩短了产品开发上市的时间。测试的本质还是基于传统的“机器为人服务”的关系。

强AI化测试,将进一步的向测试领域上游渗透,对测试需求,甚至产品需求进行自我认知与学习,通过对用户使用数据的分析,挖掘用户需求、产品特性,根据得出的结果,提出产品需求,开发实现产品,并执行相关测试,与需求进行匹配运算,确认产品质量。因此在强AI化测试阶段,测试概念已经进化到“机器为机器服务”的关系。

超AI化测试,对用户的需求进行引导,使用户在潜意识受到人工智能的暗示做出决策,也就是说人工智能引导需求,人类反而潜意识会认为这个需求是由自我产生。人工智能的测试则演变成为人工智能服务的工作,这已不是传统意义的测试和验证,更趋向于人类世界的医生与病人的关系。测试已经演变成“人为机器服务”的阶段了。

当然以上这些都是对未来的一个畅想,目前相关的探索还属于弱AI化测试。目前网上有介绍的基于AI测试的有:瑞典一公司采用Monte Carlo树搜索算法、自动启发式构建算法、增强拓扑的神经元演化算法来训练 AI测试工具,模拟人类交互能力,完成对Candy Crush Soda游戏的功能测试、稳定性测试和性能测试,并评估游戏难度级别,预测游戏的成功率。美国一家公司(Appdiff)推出测试机器人,能够全面分析App应用中的每个界面、元素和操作流,进行性能测试和用户体验测试。Appdiff的智能机器人,可以克服经典的测试方法所存在的速度慢、开销大的问题,具备类似人类的洞察力,就像魔术一样快速完成测试,而且具有学习能力,App应用程序测试越多,工具会自动地变得越来越聪明。采用的AI,就可以替换过去脚本的开发,让自动化测试进行得更轻松,而且AI能处理的测试输入,手工是无法相比的。

这并不是杞人忧天,AI化测试目前只是一个美好的愿景,但作为测试,我们应该抱有理想,不能改变世界,但我们能改变测试。

来源:“ 不安分的小QA”微信公众号,作者:彩虹小金刚

原文链接:https://mp.weixin.qq.com/s/xv3E7KcFal4RR5_kHffbxQ

【声明】文章来源于网上采集整理,版权归原作者所有,如有侵权,请邮件反馈yidunmarket@126.com,我们将尽快核实修改。  

相关阅读:

优秀游戏测试工程师的特性