2008年8月11日

大型网络游戏自动化性能测试可行性分析

在普通的B/S或C/S结构的应用程序中,客户端跟服务端是简单的多对一关系,客户端之间是透明的。性能测试的方法一般是首先录制用户在客户端的操作过程,形成某种语言支持的脚本,将输入部分做成可以供调用的参数,然后模拟多用户重复的执行这些脚本,对输入每次调用相同或不同的数据。服务器端只是对来自客户端的请求做出相应的请求就可以了。
多人角色扮演网络游戏(MMORPG)是一种基于互联网上的C/S结构的应用程序,它包含了很多个系统,如:玩家系统、物品系统、技能系统、经验值/级别系统、 帮派/称号系统、 地图系统、NPC系统、 格斗系统 、交友聊天系统、交易系统 、行动/导航系统、 任务系统、定位系统、咨询系统、问答系统、博彩系统、人工智能等,这些多个系统共同作用,形成一个复杂的应用程序,对用户端一个细微的差异都会引起服务端极大差别的响应,在同一个区域的用户知道彼此存在的状态,这样,试图模仿多用户活动的没有办法操作,即使实现了这种设想操作的话,他的价值也仅仅在于“知道”服务端在这个条件下的性能状况。如果有性能缺陷的话,也无从知晓具体的原因,不知道到底是那个子系统过多占用了资源,要进行性能优化将无从下手。
让MMORPG客户端知道彼此存在需要服务器对客户端进行统一的数据同步,包含:用户,NPC,物品的属性、活动和状态,以及他们所在的地图位置、属性等,这些数据同步消息发出频率是每秒16帧或更多。同时,服务器中其他子系统会对活动的用户,NPC触发的事件做出响应,这些消息包含有“战斗”,“行走”,“聊天(即使通信)”,这些消息个体之间还存在极大的差别,还有需要消耗资源较多的就是“AI(人工智能)”。
玩家在不同子系统活动是可以单独存在的,一个可行的方法是将自动化测试用例从复杂的场景中抽取出来,每一个测试用例只对应测试一个单独子系统,让必须同时存在的子系统场景保持不变,隔离其他不必要的子系统,监控服务器为这个受测试的子系统所付出的开销。如在一个战斗的场景中,我们仅单独让用户和NPC仅拥有有“格斗”的活动能力,让用户、NPC固定好位置(地图的位置和属性不变),在一个不变的地图里一对一,或一对多进行战斗,在同一段时间里,同样等级用户用同样的技能进攻和防守,同样级别的NPC用都用相应同样的技能防守和进攻,随着测试的深入,将覆盖到所有级别的用户,所有级别的NPC和整个“格斗”系统里面所有的技能。
按照上面的分析,在测试中需要变化的内容有以下几个:
1. 用户角色和跟角色相关的性格和行为。
2. 不同级别用户及所相关联的属性;
3. 子系统;
4. 同一个子系统内部不同的功能;
5. NPC种类;
6. 不同种类NPC及所相关联的属性;
7.测试执行时间;(循环执行次数)
8. 并发量。
在测试中,需要设计的测试用例在不同的载体-地图系统里面,不同级别,不同角色的用户,使用不子系统里的所有或部分功能。NPC总是伴随着用户的活动而出现,在测试场景中控制好出现的种类以及它们的相关属性。对于执行时间跟并发量,可以在执行测试的时候根据实际情况而定。通过以上的方法,可以将测试用例扩展到网络游戏中所有的子系统,这样,通过“纵”和“ 深”两个方向的扫描,就可以发现和定位绝大部分的性能缺陷。

若需转载或其他需要,请跟作者朱汉强联系:johannes_zhu@yahoo.com
广州益标软件技术有限公司为您提供高质量的软件测试和咨询服务。
欢迎访问:http://www.3rdtest.com/

没有评论: