物理引擎的简单测试代码,如果任何一个VTEST条件没有满足,那么测试就失败。该测什么?当要决定测试的范围时,实用第一。一般来说,为简单的功能编写单元测试是没有意义的,比如常见的getter和setter方法。为了让自动化测试物有 所值,被测试的代码至少应该是可能会产生错误的,比如,发射一束穿透游戏场景的光线并且返回它穿过的任何几何物体的方法(光线测试),然后将返回的结果与 编写测试用例的作者提供的预期结果作比较。
到底是只为类的公用 接口编写测试用例(黑盒测试)还是要兼顾类的私有成员(白盒测试),是一个有争议的问题。通常来说,黑盒测试比白盒测试粗糙,它们只能检查一个操作的最终 结果,不能检查内部中间状态,它们对于被修改的测试代码比较迟钝。刚才提到的光线测试功能可能被全部重写(比如原先的版本运行效率不够),但是它返回的结果没有变化。这时,白盒测试用例就需要跟着重写,然而黑盒测试可以继续用来检测代码修改后,所产生的结果是否与原先一致。
因此,我们认为自动化测试中,测试范围只要包括类的公有成员就够了,毕竟,类的内部修改比它接口修改要频繁得多。
回归测试
特别是在游戏开发领域,大多数情况下,把测试结果和用例编写者提供的数据手工作比较是不太现实的。例如,检测与复杂的几何体碰撞的交点,人工提供相关测 试数据几乎不可能。相反,将测试结果与早期代码产生的结果数据相比较,被称为“回归测试”。用例编写者可以评审参考数据,例如,使用简化图形的碰撞物体,如果被证实是正确的,它就可以一直用于测试。这样,自动化测试可以帮助你确认新代码产生的结果与原先的一致。
代码功能测试会生成非常复杂的输出数据,比如游戏的图形渲染引擎,回归测试是唯一可行的自动化测试。以图形渲染引擎为例,所有图形测试以输出最终平台相关的图形文件为结果。一旦自动化测试开始运行,渲染出来的图形文件与样本图形文件逐一像素的进行比较,如果有差异,那么测试失败。为了减少样本图形文件的存占用,你可以使用图形快照来进行测试。
图形回归测试的优势在于即使是肉眼难以发现的微小差异也不会被漏掉。除非人们对这个场景非常熟悉,否则很难会有人注意到场景中缺失的一个阴影或一个物体或者某个光源的R值与B值被错换了。而回归测试就不会放过任何一个这样的错误。
必须注意到,任何情况下,回归测试的样本数据都是自动生成的。样本数据也许是平台相关,特别涉及到渲染输出的时候,因此,它也许要被生成多次,即使是这样,当渲染通道发生变化导致生成的图形文件有所改变,样本数据也要重新生成。为了不打击开发者编写回归测试的积极性,要做到只需点击框架用户界面上一个按钮就可以重新生成新的参考数据。
如何把所有的整合在一起
此文章共有6页 上一页 1 2 3 4 5 6 下一页
文章来源:中国项目管理资源网
软件开发项目管理培训课程方案 |