Skip to content

现阶段对游戏要开展单元/白盒测试的一些构想

Notifications You must be signed in to change notification settings

hotDOGEEE/unit-testing-in-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

现阶段对游戏要开展单元/白盒测试的一些构想

​ 最近部门有打算对游戏进行白盒相关的测试,由于相关人员确实不好招聘到,所以决定自己开坑学习相关知识。

​ 做事之前先调研。从网上目前的资料来看,都是讲服务器或者客户端其中一项的单元测试,并没有从项目整体角度讲的。

有没有必要?

​ 很多人认为现在做游戏单元测试是没必要的。从接口或者UI的角度成本更低,效果更好。

​ 我自己也这么想了一下,确实如此。但如果抛开成本这个问题,他真的没必要吗?

​ 首先,我们都知道,不管是接口还是UI,他本质上依然是一种黑盒或者灰盒的测试。

​ 其次,UI只能放到游戏的出包阶段,接口也是服务器出了一个版本后进行校验的测试。测试环境与生产环境总是分离的,属于是验收阶段才能做的测试。而单元测试一般是在开发环境,也可以集成到打包流程中,所以从这两者所处的阶段来看是并不冲突的。

​ 总结一下:在开发环境中进行,可以被集成在流程中,比起UI、接口和功能,处于软件开发周期中不同的阶段的不同测试方法。

​ 那他有没有作用?应该不辨自明了。有没有必要?就得结合项目需求,看我们想把他做到什么程度。

项目类型决定

我想把项目分为两种来说明。

一种是单机游戏,一种是CS端的网游。

单机

​ 单机游戏往往是游戏本体就包含了游戏几乎所有的逻辑内容,计算和界面都由他来承担。

​ 比如别的帖子里面有举到的例子,使用一瓶血药,回血做断言检测。对函数的输入输出进行断言验证即可,其针对的,是游戏的计算部分。

​ 比较详细的系统有fami通上面记载了一篇关于如龙系列的自动化测试,那个已经超出了单元测试的范畴,是一套完备的包含集成的自动化系统: https://www.famitsu.com/news/202009/11205564.html

​ 玩过这个系列游戏的同学应该知道,这类的游戏事件类型固定,有固定的流程,而且引擎也是专门为这个游戏服务的,想要实现一些接口内容,大家都是一个公司沟通协作成本也会比较低,再加上他们那边昂贵的人力成本,做这样一套系统的成本和可行性就变得很有空间了。而他们也确实做出来了,从博文来看效果还是不错的。算是有涉及白盒相关的一个成功的单机游戏案例。(或许还有别的,但我并没有具体做过主机游戏项目,了解不够充分。)

网游

​ 我们这里只讨论C/S端的情况。

​ 首先来讨论客户端。客户端操作事件多,网游多人情况下场景一般比较复杂。单元测试难以涵盖各种流程上的操作和复杂场景遇到的问题。而这往往是手游的主要场景。况且客户端相比服务端而言,变化是更多的,要对客户端维护一套完备的单元测试成本高,也没有那么有必要。只需要对一些主要的部分做好单元测试就好,也就回到了最先有提到的,可以做,但是要做到什么程度的这个问题上来了,需要项目自己具体衡量。

​ 服务端,这是我认为单元测试应该进行的重点。接口上验证通过了,不代表服务器没问题了。总有一些我们想不到的异常流程问题出现。服务器涉及具体的计算,变化不会很频繁,而且服务器出错面临的损失往往比客户端要大,受影响的也不会是个别玩家,对服务器代码的逻辑做进一步的校验,比起客户端而言,我认为是应该要更细致一些的。同时,服务器不像客户端要依赖游戏引擎,一般是自己独立构建的一套服务,而一般主流用的开发语言,都有它对应的单元测试框架工具,这也使得服务器进行单测的门槛更低,而必要性更高。比如go和java

TDD模式

​ 以测试结果为出发,能够完成测试用例和单元测试代码为目标,完成逻辑代码的开发方式。即测试驱动开发。

​ 为满足这样的模式,开发人员不会以实现业务为出发顺着编写代码,这种模式下产出的代码耦合性低、复用率高、定位问题也很容易,是一种强面向对象的模式。白盒在这样的模式下,是可以起到主要推动作用的。

如何开展

​ 开发用什么语言,白盒就要会什么语言。目标是验证函数各种情况下的输入输出,所以服务器方面的内容就会为主,客户端也有,但具体操作类的,我觉得就交给一般测试人员,手动触发各种场景就好了。这里只是从总体进行一下论述。本人也在进行白盒相关的学习,文章必有不足之处,仅供参考学习。也希望同样对白盒有兴趣的朋友可以一起交流。谢谢。

About

现阶段对游戏要开展单元/白盒测试的一些构想

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published