APP下载

浅谈网页游戏的测试方法

2015-06-24吴召坚

电脑知识与技术 2015年11期
关键词:性能测试

吴召坚

摘要:近年来,网页游戏发展迅猛,其游戏测试也越来越受重视,目前已经成为开发过程中的重要环节。该文主要介绍网页游戏测试的方法、特点、技术技巧等。

关键词:网页游戏;游戏测试;接口测试;性能测试;内存泄露

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2015)11-0185-02

On Test Method of Web Game

WU Zhao-jian

(Shanghai Game Reign Network Technology Co., Ltd, Shanghai 201317, China)

Abstract: With the rapid development of web game , the web-game testing is getting more attention in recent years. It has become an important part of game software development process. This article mainly introduces the test method, feature and test skills of web game.

Key words:Web game; game testing; interface testing; performance testing; memory leak

1 概述

网页游戏就是基于Web浏览器的网络在线多人游戏,因为无需下载客户端,用户进入和上手都比较容易。随着互联网的快速发展以及社会快节奏的生活,越来越多的玩家投入到操作简单且不那么费时的网页游戏中。据2014年的《中国游戏产业报告》数据显示,中国网页游戏市场实际销售收入为202.7亿元人民币,网页游戏用户数量达3.07亿人。在这样一个成熟庞大的行业中,对游戏运营商来说,收益永远是最重要的。而游戏质量直接影响着运营收入。因此,游戏测试开始成为大家关注的话题。

2 游戏测试的重要性

游戏是计算机软件的一个特殊种类,因此游戏测试也是软件测试的一个分支,具备了软件测试大部分特性。在工作中,软件测试的一些理论方法同样也适用于游戏测试。

在互联网高速发展的今天,如果同时有10万人在线玩一款游戏,这款游戏最好能保持运行良好,玩家才会愿意不断的付费充值。对游戏厂商而言,为运营商提供质量保证的重要性不言而喻,否则直接影响到公司的声誉及收益。

因此,越来越多的游戏厂商已经不把游戏测试保留到开发末期才做了,相反的,他们都遵循了软件工程学中对于测试的一个基本原则:尽早测试。游戏测试已经被当做游戏开发过程中极其重要的一个环节。测试工作的好坏,直接决定着游戏产品的质量。

3 游戏测试的方法

网页游戏基于web浏览器,而web浏览器的B/S架构,其实只是一种特殊的C/S架构。相对于传统的客户端网络游戏,网页游戏有着类似的结构,游戏网页的前端就是client,游戏服务器后端就是server。后端是游戏程序的逻辑功能设计,前端主要是游戏UI设计。这就意味着,游戏的前端和后端要分开测试。而且,后端程序逻辑的正确性、安全性更加重要,是测试的重点。

比如,当游戏中某个角色没有金币时仍尝试去购买装备,前端的逻辑判断中已经返回出“金币不足无法购买”的message,进而不会向游戏服发包。但是如果绕过前端直接向后端游戏服发包,而后端逻辑中没有这一层逻辑判断,那么玩家就能在没有金币的条件下非法获得装备,造成游戏的不平衡。一些网页游戏的外挂制作者,可以轻松的通过浏览器截包工具查询到游戏后端接口,进而自己直接向后端游戏服发包。如果后端接口的逻辑不严谨,利用外挂的玩家就能非法获利。因此,测试工程师的大量精力,会放在后端测试上。

3.1 游戏后端测试

3.1.1 接口功能测试

接口用于游戏前后端的数据交互,前端通过网络协议传递的数据往后端接口的输入数据。网页游戏的测试工作量主要偏向于接口测试。测试工程师首先通过游戏策划文档确定需求,而后针对需求以及后端工程师提供的接口定义文档进行测试用例设计,通过后端接口功能测试来确保游戏功能的正确实现。

后端接口的测试用例设计主要从有游戏业务场景、基本功能以及异常测试几个方面,利用等价类、边界值、流程分析等基本方法考虑。除了这些,接口测试还需要注意一下几点:

1)参数检查:对接口的输入参数务必进行有效性检查,比如整型数值的上限,字符串长度上限等。

2)数据库数据测试:接口的输入项不只是前端所传的参数,还包括数据库中的现有数据。比如,玩家花费金币购买装备的接口,输入项包括花费金币值的接口参数和存在数据库中的现有金币值。因此,必须对数据库中的相应数据进行边界值测试,比如在金币不足的情况下调用购买装备接口。

3)接口依赖关系检查:上面的策略只是对单个接口的测试方法。在线上游戏中,玩家的一个操作在程序中可能已经多次发包,即对游戏后端调用了多个接口来完成的。因此,还需要从业务处理的角度,对游戏需求中所设计的多个接口之间依赖调用进行测试。

3.1.2 后端性能测试

网页游戏的性能测试主要是后端服务器负载测试,以及一些特殊接口的并发量测试。使用LoadRunner自动化性能测试工具不是为一种简单高效的方式。

一款新游戏刚上线时,大量玩家会受新鲜感好奇心的驱使注册账号进行试玩,此时游戏服通常会处于最大的用户数的阶段。成千上万个玩家频繁向游戏服发包,如果服务器承受不了这么大的压力,造成玩家的体验将会相当差,那么这款游戏从刚出生就没法吸引玩家。

做游戏服负载测试时,通常使用LoadRunner构造成千上万个虚拟用户,执行游戏的“新手教程”所包含的一系列接口,测试游戏服务器在此压力下是否会有响应错误、响应缓慢、数据丢失等错误。

对于一些特殊场景,比如SLG游戏的大型国战期间,也需要执行多用户并发测试。在这种场景下,可能会产生某些隐藏问题,如内存泄露、线程锁等问题。

3.2 游戏前端测试

3.2.1 前端内存泄露测试

网页游戏的前端一般用Flash制作,除了达到策划文档的需求,更需要考虑的是性能的优化,界面流畅度等内在体验的问题。对于测试工程师来说,测试前端性能时最需要关注的地方就是是否有内存泄露。

内存泄露是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄露会使玩家的网页随着时间越来越卡,严重影响玩家的游戏体验。

举个例子,游戏策划要求当玩家没有金币时购买装备,前端弹出一个金币不足的提示框,显示2秒后消失。Flash程序构造出提示框时,提示框是一个有效对象,2秒之后这个框消失,在程序中这个提示框对象就没有用了,正确的做法应把这个提示框对象回收并释放所占内存,因为下一次再出现这种提示框,实际上是程序构造的一个新的对象。但是在某种条件下,程序中存在另一个对象对这个提示框的引用,则Flash的GC(垃圾收集器)认为这个提示框对象是有用的而不回收,当玩家不断的点击购买装备,Flash程序也就不断的构造出新的提示框实例,就会造成内存泄露,久而久之,玩家的网页会卡爆。

对于Flash前端的内存泄露问题,通常使用Adobe Flash Builder中自带的内存概要分析功能进行测试。重复加载某个动画,使这个类的实例数不断增加,再使用Flash的垃圾收集器清掉之前构造的无效实例。如果垃圾收集器无法回收这些无效实例,那么程序中就存在内存泄露。

3.2.2 游戏界面友好性测试

由于游戏行业中激烈的市场竞争,以及其特殊的娱乐目的,游戏界面的友好性、易用性、合理性设计相对于其他行业的软件界面有更为重要的意义。在进行游戏界面测试时,大到需要评定游戏是否容易上手,小到需要关注各个按键布局是否合理等。

4 结论

本文针对网页游戏的前后端不同方向,简单综述了其各自的通用性测试方法和特点。其中提到的网页游戏测试方法,大部分是笔者工作经验的整理,但仍然存在一定的局限性。比如对于接口测试,除了完成功能测试,还需考虑如何构建自动化回归测试以提高效率。

其实,网页游戏中最常见的缺陷,通常都是游戏金币复制、装备复制、无限刷资源等技术性漏洞。以及游戏业务判断不严谨、条件不合法之类的逻辑漏洞。如何设计出更完善的测试用例以防止线上发生漏洞,才是每一位测试工程师有待研究的必要课题。

参考文献:

[1] Charles P.Schultz.游戏测试精通[M].北京:清华大学出版社,2007

[2] 张红艳.浅谈游戏测试技术[J].硅谷,2009(22)

[3] 孟繁雅.游戏测试的用例设计[J].程序员:游戏创造,2008(5).

[4] 李智勇.ActionScript3.0垃圾回收机制及优化策略[J].信息技术,2012(10).

[5] 华鑫.游戏软件开发流程探讨[J].中国科技博览,2012(38).

[6] 王志森.探索式测试方法在网络游戏软件测试中的应用[D].上海:上海交通大学,2011.

猜你喜欢

性能测试
基于LoadRunner的网络仓库系统性能测试及优化
Hadoop性能测试自动化研究
关于Java软件的性能测试分析
自动扶梯主驱动链条性能测试分析与润滑保养
人事薪资管理系统软件测试方案研究
车联网专用短程通信技术
关于聚羧酸系减水剂的性能论述
黄麻、洋麻纤维性能研究