一种基于玩家分布的服务器压力测试方法和装置与流程

文档序号:14504531阅读:206来源:国知局

本发明涉及计算机网络技术领域,尤其涉及一种基于玩家分布的服务器压力测试方法和装置。



背景技术:

随着电子娱乐行业的发展,网络游戏受到越来越多游戏玩家的喜爱。此类游戏一般追求多人同时在线游玩。对于热门的网络游戏,在高峰期内,往往有数十万甚至数百万级别的玩家同时在线游玩。然而,此类网络游戏通常采用客户端/服务端的架构。当面对上述数量级别的玩家时,服务器在某一时刻会承受成千上万次由不同客户端发送的访问请求,从而对服务器形成巨大的压力。此时,服务端的性能优化技术方案稍有错漏,即被放大形成明显的性能瓶颈,影响服务器的稳定性。此类性能方面的瓶颈在较小访问量的情况下一般不会出现。只有在服务器受到充分大的访问压力时,相关问题才会突显出来,从而增加了网络游戏的测试以及相关问题的验证、定位和修复的难度。

传统的压力测试方式是基于客户端与服务端的通讯协议。具体地,客户端通过频繁地调用通讯协议向服务端发送请求,并根据服务端的响应时间、反馈信息正确率和数据包的丢失率等技术指标衡量服务端在面对海量请求下的性能。然而,上述测试方式一般只是单纯地测试相关通讯接口的调用消耗,和真实的线上环境差别较大。例如,由于各位玩家的账号数据和行为特性等的不同,相关通讯接口调用次数的量级也可以存在较大的差异。



技术实现要素:

本发明的目的是解决现有技术中存在的服务器压力测试环境与真实环境存在较大差异的不足,提供一种基于玩家分布的服务器压力测试方法和装置,能够获得减少服务器的内部压力测试与真实环境下压力测试差异的效果。

为了实现上述目的,本发明采用以下的技术方案。

首先,本发明提出一种基于玩家分布的服务器压力测试方法,包括以下步骤:在指定范围内向实际玩家开放网络游戏的登陆权限,以执行封闭测试;按照预设频率收集实际玩家的账号数据和实际服务器的运行数据,并统计账号数据的分布,其中账号数据至少包括该账号的虚拟财产数量、登陆时间段和网络游戏进度,运行数据至少包括参与测试玩家数量、当前在线玩家数量和服务器硬件配置信息;根据所收集的账号数据和统计账号数据分布,编写并在测试服务器上执行网络游戏对应的测试用例,其中测试用例的设置被调整使得测试服务器的运行数据与实际服务器的运行数据一致;根据在指定范围内的实际玩家账号数据的分布,按照比例扩大测试用例的规模并在调整后的测试服务器上执行扩大后的测试用例。

在本发明的一个方法实施例中,在执行上述方法前还包括如下预处理步骤:初始化测试用例,并在实际服务器上执行测试用例以获取初始的运行数据;基于初始的运行数据,初始化测试服务器的配置。

在本发明的上述方法实施例中,执行预处理步骤时在实际服务器上按照与封闭测试一致的预设频率收集运行数据。

在本发明的一个方法实施例中,测试用例的规模是多次迭代扩大至预设注册玩家的数量。

在本发明的一个方法实施例中,运行数据至少还包括实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答。

在本发明的上述方法实施例中,基于实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答统计交互响应的频率和时间。

在本发明的一个方法实施例中,测试服务器按照与在实际服务器上一致的预设频率收集运行数据。

其次,本发明还提出一种基于玩家分布的服务器压力测试装置,包括以下模块:启动模块,用于在指定范围内向实际玩家开放网络游戏的登陆权限,以执行封闭测试;收集模块,用于按照预设频率收集实际玩家的账号数据和实际服务器的运行数据,并统计账号数据的分布,其中账号数据至少包括该账号的虚拟财产数量、登陆时间段和网络游戏进度,运行数据至少包括注册玩家数量、当前在线玩家数量和服务器硬件配置信息;分析模块,用于根据所收集的账号数据和统计账号数据分布,编写并在测试服务器上执行网络游戏对应的测试用例,其中测试用例的设置被调整使得测试服务器的运行数据与实际服务器的运行数据一致;测试模块,用于根据在指定范围内的实际玩家账号数据的分布,按照比例扩大测试用例的规模并在调整后的测试服务器上执行扩大后的测试用例。

在本发明的一个装置实施例中,上述基于玩家分布的服务器压力测试装置的启动模块还包括如下子模块:第一初始化模块,用于初始化测试用例,并在实际服务器上执行测试用例以获取初始的运行数据;第二初始化模块,用于基于初始的运行数据,初始化测试服务器的配置。

在本发明的上述装置实施例中,第一初始化模块在实际服务器上按照与封闭测试一致的预设频率收集运行数据。

在本发明的一个装置实施例中,测试用例规模是多次迭代扩大至预设注册玩家的数量。

在本发明的一个装置实施例中,运行数据至少还包括实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答。

在本发明的上述装置实施例中,分析模块基于实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答统计交互响应的频率和时间。

在本发明的一个装置实施例中,测试服务器按照与在实际服务器上一致的预设频率收集运行数据。

最后,本发明还公开了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如前述任一项所述方法的步骤。

本发明的有益效果为:通过真实的测试环境收集实际玩家的账号数据和实际服务器的运行数据,并基于账号数据和运行数据编写测试用例,从而更准确地在服务器上执行压力测试。

附图说明

图1所示为本发明所公开的基于玩家分布的服务器压力测试方法的方法流程图;

图2所示为在本发明的一个实施例中预处理步骤的方法流程图;

图3所示为在本发明的一个实施例中测试用例迭代生成的示意图;

图4所示为本发明所公开的基于玩家分布的服务器压力测试装置的模块结构图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。

参照图1所示的方法流程图,在本发明的一个实施例中,基于玩家分布的服务器压力测试方法包括以下步骤:在指定范围内向实际玩家开放网络游戏的登陆权限,以执行封闭测试;按照预设频率收集实际玩家的账号数据和实际服务器的运行数据,并统计账号数据的分布,其中账号数据至少包括该账号的虚拟财产数量、登陆时间段和网络游戏进度,运行数据至少包括参与测试玩家数量、当前在线玩家数量和服务器硬件配置信息;根据所收集的账号数据和统计账号数据分布,编写并在测试服务器上执行网络游戏对应的测试用例,其中测试用例的设置被调整使得测试服务器的运行数据与实际服务器的运行数据一致;根据在指定范围内的实际玩家账号数据的分布,按照比例扩大测试用例的规模并在调整后的测试服务器上执行扩大后的测试用例。

具体地,网络游戏的开发商或运营商可通过一定的方式向指定范围内的玩家派送预设的账号,并通过对这批预设账号的监控,以预设频率(例如每隔1小时)收集实际玩家的账号数据(例如当前在线玩家的数量)和实际服务器的运行数据(例如服务器的cpu使用率、各个通讯端口的使用情况和缓存数量),并统计账号数据的分布(例如在每个收集数据的时刻,该批账号的虚拟财产总量在某个区间段内的玩家占全体账号的比例)。上述封闭测试可以持续1至10天。在封闭测试完毕后,用于在测试服务器上执行的测试用例可基于账号数据创建一批具有相对真实账号,使其具有相同的账号数据的分布。一般地,测试服务器的硬件配置与实际服务器的硬件配置应该一致。测试用例在测试服务器上执行时,产生的运行数据将与实际服务器的运行数据进行对比,并基于上述对比结果调整测试用例的设置。当在测试服务器上收集的运行数据与实际服务器上收集的运行数据基本一致(例如超过90%的运行数据测量值与对比值相差不超过5%)时,则可根据账号数据的分布扩大账号数据的规模。

参照图2所示的方法流程图,因为相对于封闭测试,网络游戏的内部测试(即网络游戏的开发人员采用背景技术中所介绍的传统方式执行的测试)是相对方便快捷的;所以,在本发明的一个实施例中,在执行上述方法前还包括如下预处理步骤:初始化测试用例,并在实际服务器上执行测试用例以获取初始的运行数据;基于初始的运行数据,初始化测试服务器的配置。网络游戏的开发人员可采用现有的测试方式在内部对各个模块和系统进行初步的压力测试。并基于所获取的运行数据恰当优化测试服务器的硬件配置或对各具体网络游戏的模块作调整。进一步地,为了提高与封闭测试所收集的运行数据可对比性,执行预处理步骤时在实际服务器上按照与封闭测试一致的预设频率收集运行数据。上述基于传统方式的测试及对服务器的调整可以现有技术实现。本发明对此不予限定。

参照图3所示的测试用例的生成示意图,在本发明的一个实施例中,测试用例的规模是多次迭代扩大至预设注册玩家的数量。在每次迭代的过程中,封闭测试时所获得账号数据的规模将按照比例放大。换言之,每次迭代中账号的数量将增加而账号数据的分布保持不变(例如,例如在每个收集数据的时刻,该批账号的虚拟财产总量在某个区间段内的玩家占全体账号的比例保持一致)。通过一系列的迭代,性能瓶颈中的问题将会逐步明显。网络游戏的开发商可以根据不同阶段的网络游戏实际玩家数量而配置恰当数量的服务器,以平衡玩家的游戏体验和实际经营成本,从而实现利润的最大化。

在本发明的一个实施例中,运行数据至少还包括实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答,从而根据请求和应答的具体内容确定客户端和服务端之间各类通讯协议的调用次数和调用频率。进一步地,基于实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答统计交互响应的频率和时间,用于从整体衡量服务器的当前衡量状况或用户的游戏体验。

在本发明的一个实施例中,为了提高实际服务器所收集运行数据及测试服务器上所收集运行数据的可对比性,测试服务器按照与在实际服务器上一致的预设频率收集运行数据。

参照图4所示的模块结构图,在本发明的一个实施例中,基于玩家分布的服务器压力测试装置包括以下模块:启动模块,用于在指定范围内向实际玩家开放网络游戏的登陆权限,以执行封闭测试;收集模块,用于按照预设频率收集实际玩家的账号数据和实际服务器的运行数据,并统计账号数据的分布,其中账号数据至少包括该账号的虚拟财产数量、登陆时间段和网络游戏进度,运行数据至少包括注册玩家数量、当前在线玩家数量和服务器硬件配置信息;分析模块,用于根据所收集的账号数据和统计账号数据分布,编写并在测试服务器上执行网络游戏对应的测试用例,其中测试服务器的设置被调整使得测试服务器的运行数据与实际服务器的运行数据一致;测试模块,用于根据在指定范围内的实际玩家账号数据的分布,按照比例扩大测试用例的规模并在调整后的测试服务器上执行扩大后的测试用例。

具体地,网络游戏的开发商或运营商可通过启动模块以一定的方式向指定范围内的玩家派送预设的账号,并通过收集模块对这批预设账号的监控,以预设频率(例如每隔1小时)收集实际玩家的账号数据(例如当前在线玩家的数量)和实际服务器的运行数据(例如服务器的cpu使用率、各个通讯端口的使用情况和缓存数量),并统计账号数据的分布(例如在每个收集数据的时刻,该批账号的虚拟财产总量在某个区间段内的玩家占全体账号的比例)。上述封闭测试可以持续1至10天。在封闭测试完毕后,分析模块可基于账号数据在测试服务器上执行的测试用例中创建一批具有相对真实账号,使其具有相同的账号数据的分布。一般地,测试服务器的硬件配置与实际服务器的硬件配置应该一致。测试用例在测试服务器上执行时,产生的运行数据将与实际服务器的运行数据进行对比,并基于上述对比结果调整测试用例的设置。当在测试服务器上收集的运行数据与实际服务器上收集的运行数据基本一致(例如超过90%的运行数据测量值与对比值相差不超过5%)时,则可根据账号数据的分布扩大账号数据的规模。

因为相对于封闭测试,网络游戏的内部测试(即网络游戏的开发人员采用背景技术中所介绍的传统方式执行的测试)是相对方便快捷的;所以,在本发明的一个实施例中,上述基于玩家分布的服务器压力测试装置的启动模块还包括如下子模块:第一初始化模块,用于初始化测试用例,并在实际服务器上执行测试用例以获取初始的运行数据;第二初始化模块,用于基于初始的运行数据,初始化测试服务器的配置。网络游戏的开发人员可采用现有的测试方式在内部对各个模块和系统进行初步的压力测试。第二初始化模块基于所获取的运行数据恰当优化测试服务器的硬件配置或对各具体网络游戏的模块作调整。进一步地,为了提高与封闭测试所收集的运行数据可对比性,第一初始化模块在实际服务器上按照与封闭测试一致的预设频率收集运行数据。上述基于传统方式的测试及对服务器的调整可以现有技术实现。本发明对此不予限定。

在本发明的一个实施例中,测试用例的规模是多次迭代扩大至预设注册玩家的数量。在每次迭代的过程中,封闭测试时所获得账号数据的规模将按照比例放大。换言之,每次迭代中账号的数量将增加而账号数据的分布保持不变(例如,例如在每个收集数据的时刻,该批账号的虚拟财产总量在某个区间段内的玩家占全体账号的比例保持一致)。通过一系列的迭代,性能瓶颈中的问题将会逐步明显。网络游戏的开发商可以根据不同阶段的网络游戏实际玩家数量而配置恰当数量的服务器,以平衡玩家的游戏体验和实际经营成本,从而实现利润的最大化。

在本发明的一个实施例中,运行数据至少还包括实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答,从而根据请求和应答的具体内容确定客户端和服务端之间各类通讯协议的调用次数和调用频率。进一步地,分析模块基于实际服务器或测试服务接收请求以及实际服务器或测试服务器返回应答统计交互响应的频率和时间,用于从整体衡量服务器的当前衡量状况或用户的游戏体验。

在本发明的一个实施例中,为了提高实际服务器所收集运行数据及测试服务器上所收集运行数据的可对比性,测试服务器按照与在实际服务器上一致的预设频率收集运行数据。

尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1