游戏测试策略


13

我继承了一个基于网络的教育游戏。在过去的一年中,我一直致力于稳定代码和添加新功能。大多数逻辑都在前端,因此后端单元测试虽然很有用,但只覆盖了一小部分代码。

游戏已经到了开始变得复杂的地步。每个游戏有两种不同的模式,并且游戏的行为取决于模式。还有各种影响游戏玩法的标志。

我担任应用程序开发人员已有10多年了,这使我感到困惑。在企业界,算法始终以相同的方式起作用。我将为算法编写一个单元测试,我期望值42,如果我没有得到该值,它将出错。

说到游戏,我迷路了。我该如何测试?我有可用的测试仪。我可以花时间编写单元测试。

测试人员...不可靠。他们不是最能根除问题的人,我也没有给他们最好的方向。在每个发行周期花大量时间测试游戏的每个排列和组合时,我应该如何将它们用作资源?

单元测试似乎很有限。由于大多数逻辑是javascript(并且我继承了意大利面条代码),因此我可以使用诸如Cucumber或selenium之类的前端套件来确保某些功能正常工作。

那是最好的策略吗?游戏公司如何测试游戏?

我已经读过“ 复杂游戏的测试驱动开发 ”(以及网站上的其他问题)的问题,但是它没有解决我所寻找的问题。我要的是策略,而不是具体的测试示例。


每个帮助中心都明确地在书外资源建议。参见meta.programmers.stackexchange.com/questions/6483/…–
gnat


这不是重复的。这个问题在问如何编写单元测试。我要策略。
jeffkolez 2014年


2
FWIW,当涉及到测试GUI时,它不再是单元测试-它更像是集成测试或验收测试
slebetman 2014年

Answers:


16

在企业界,算法始终以相同的方式起作用。我将为算法编写一个单元测试,我期望值42,如果我没有得到该值,它将出错。

这在游戏中并没有很大的不同。您正在开发的游戏中存在两种模式和多个标志不会改变任何东西:如果您采用带有一组特定标志的特定模式,则在测试游戏的一部分时仍然会一次又一次获得相同的值源代码。

太多的模式和标志,由于可能的变体数量众多,游戏很快就会变得很难测试。为了减轻及早陷入此困境的风险,您应该:

  • 严格模拟/存根。保持被测零件较小,并模拟它们所依赖的一切。

    如果他们依赖时间,请模拟时间对象以始终给出特定结果或一组特定结果,而与实际时间无关。

    如果他们依赖random(),请每次模拟它以提供一个常量。

  • 重构。如果测试开始变得过于复杂,或者您看到一个类(为了进行测试)在实现“依赖注入”后需要十二个参数,而在之前仅需要两个参数,则需要重构代码。

  • 质疑应用程序的实际业务规则。我停止计算几乎无法测试的项目数量,因为功能需求所需要的不同变体的数量无人需要,甚至都不是利益相关者。

    当一个小型的电子商务网站需要十页来解释用于确定如何计算运费的功能要求时,不应从编写测试或代码开始,而应与利益相关者联系并与他们合作以产生结果。理智的要求。

最后,使每个测试自动化。需要测试人员发现应用程序失败的情况。使用测试人员一次又一次地执行每个修订版的相同动作会适得其反,并且不尊重测试人员:回归测试应该由机器而非人员来完成。另一方面,人们在发现可能的错误方面要好得多。他们可以使用的一种技术是“如果......(如果我在要求我的年龄的字段中输入几兆字节的包含多个\ x00的二进制数据,然后看看会发生什么呢?”,)但是也可以使用更正式的方法。


感谢您的意见。听起来我有很多工作要做!
jeffkolez 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.