游戏项目中的自动化测试和持续集成

发表于:2009-11-04 18:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试博客

  游戏中自动化测试的局限性

  尽管使用自动化测试对于游戏开发来说获益匪浅,但是也有其局限之处。显然,很难用它来测试游戏的平衡性,也不太可能用它来测试游戏性和画面的美观性。在这几年里,我们总结了一些编写自动化测试的要点,重点如下:

  * 测试最重要的模块(比如,最复杂和最常用的)。对那些最有可能出问题或者不会破坏原先设计的重构任务进行自动化测试,性价比最高。

  * 当上层功能性测试难以进行的时候,把精力集中在不同的子系统上。例如,你也许不能通过自动化测试来验证AI系统是否正常工作,但你可以测试当一个怪兽的体力低于一定数值的时候,它是否会“投降”。

  * 用压力测试来验证你的代码的强壮性。如果你的游戏在极端条件下运行的很好,比如,每秒有2000个怪兽出生和死亡,一个场景中同时放入500个有真实物理特性的物体,一幅地图轮流载入200次,那么玩家作一些异常操作时,宕机的可能性就会小很多。

  * 在修改Bug前,也为它编写测试用例。这样的话,可以确保这些Bug在今后的版本中不会重现。

  * 回归测试。例如,图像或状态比较的话,使用指定的测试场景要比使用产品地图更容易维护。如果你认为测试用产品数据可能会经常变动,那么你最好使用小的测试场景。否则,不断的生成新的参考数据会使得开发团队产生疲倦和厌烦的情绪。

  * 测试用例越简单越好,不要奢望有非常大的覆盖面。搭建一个易维护和可扩展的自动化测试是一个长期的任务。一般来说,“底层”代码,例如算术、碰撞检测和渲染,更容易进行自动化测试,对于游戏性和完整的游戏测试来说,还是需要经过QA人员亲自测试。当然,QA部门的注意力也要从技术转移到与游戏性相关的问题上去。“到A房间后,因为通风口前面的箱子太高了,所以出不去”这样的报告就会取代“当我的角色转动的时候,屏幕上出现了很多扭曲的三角面”。

  持续集成

  在一个复杂的软件项目中引入自动化测试,你会发觉运行它也需要一定的时间,我们看到的一些项目甚至需要几个小时。如果让开发者在他们的开发用机上运行的话,测试会完全占用他们的机器,影响工作,那么结果就是他们不去运行测试用例,很显然,没有被运行的用例是没有任何价值的。

  解决方法就是搭建一台或多台专用的自动化测试机。它同时还运行版本管理软件(Subversion/CVS/Perforce),一旦发现提交了新代码,那么代码就会被Checkout并编译,测试用例也会自动运行。最后,系统会将测试结果报告以email的形式自动发送给最近提交代码的开发者。

  完全自动化、重复的build和测试过程,这种过程每天运行多次,在极限编程中,我们把它称为:持续集成。为了更好的实行持续集成,像CruiseControl或者Anthill这样的开源代码工具可以将版本管理软件和自动build工具,例如ANT,整合起来。使用这样的工具,可以很轻松的搭建适合自己的持续集成系统。

  我们发现搭建专用持续集成服务器使得开发过程变得更顺畅,开发者可以更专注于自己的工作。与此同时,测试可以被很好的运行,一旦提交了错误的代码,持续集成系统会自动通知开发者和项目经理,因此开发者也可不必为此分心。自动化,自动化!

  自动化测试和持续集成的使用为我们在游戏和工具的开发上带来了极大的收益。例如,持续集成服务器根据Wiki中的变化,每天自动生成CHF(windows帮助文件)文件。而且,使用ANT和CruiseControl来制作软件自动分发包会非常容易。这样一来,用最新的代码(或最新的tag)创建一个完整的分发包就是举手之劳。

  自动化过程中的自动化测试执行,例如测试框架中的常规单元和回归测试,他们不是用来检查错误,而是用在相同环境下得到测试结果来衡量和比较引擎的性能(系统配置的结果以XML文件格式存放在版本管理软件系统上)。如果当前的结果比参考结果差很多,那么测试失败,反之,它就成为了新的参考结果。

  性能测试是一种特殊的回归测试。当引擎代码被重构,我们通过它来确保修改不会降低引擎原有的性能。这样,就迫使我们时刻关注代码的运行效率和对代码的优化工作,可以避免遇到在实际运行中,速度突然变慢的现象发生。

  结论

  根据我们的经验,使用自动化测试和持续集成可以使开发团队工作更有效而开发出更好、稳定、简单的软件。而且,减少人工测试也可以减少开发团队的压力和工作负荷,可以在开发过程中尽早的发现Bug。

  当然,自动化测试不会使你的游戏想当然成为畅销品。但毋庸置疑,它会使各类开发人员甚至玩家活得更自在。

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号