一种服务器压力测试方法及装置与流程

文档序号:16880213发布日期:2019-02-15 22:03阅读:185来源:国知局
一种服务器压力测试方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种服务器压力测试方法及装置。



背景技术:

大型网络游戏上线前都有压力测试的需求,通常需要使用特殊工具来模拟海量玩家同时对服务器进行施压,以验证服务器面对高负载的性能和稳定性。

现有技术中虽然有一些可以进行压力测试的成熟工具,如loadrunner、jmeter等,但通常都是面向web服务,难以满足游戏服务器的以下业务特征:高复杂性,游戏业务的逻辑复杂性比传统web业务高很多,难以通过简单的脚本录制实现业务覆盖;强状态,游戏业务对于状态的依赖很大,需要测试工具能够建立并且管理状态(登录、在线、玩家信息等);强交互,游戏业务有很多交互机制,要求测试工具能够管理人机(用户和系统)、人人(不同用户之间)的行为关联;实时反馈,测试工具不仅需要单方面施压,还需要能根据服务器的反馈进行应对。

因此,游戏公司一般会自行编写适合自己游戏的压力测试工具。然而大部分游戏项目的压力测试工具和测试方法都有很多局限性,包括:通用性不强,只能服务于一个游戏,难以复用;操作不便,甚至无法在运行中操作和控制,无法即时调整策略;测试模型没有经过良好抽象,经常难以满足扩展需要;压力测试需要统筹大量的测试资源,一般的测试工具无法做到这一点,只能人工安排和干预,费时费力。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种服务器压力测试方法及装置。

第一方面,本发明实施例提出一种服务器压力测试方法,包括:

根据三层测试结构将用户的测试需求拆分为模组、策略和行为;

对分布式部署的各负载单元加载对应的模组;

通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试;

其中,每个模组管理若干个策略,每个策略管理若干个行为。

可选地,所述通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试,具体包括:

通过控制台程序对各负载单元进行管理,并通过ymal配置脚本将各负载单元对应的模组组装成测试实例,并执行所述测试实例进行服务器压力测试。

可选地,所述控制台程序包括若干个接口,所述若干个接口用于与扩展程序连接。

可选地,所述通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试,具体包括:

通过控制台程序对各负载单元进行实时管理,执行所述测试需求对应的服务器压力测试。

第二方面,本发明实施例还提出一种服务器压力测试装置,包括:

需求拆分模块,用于根据三层测试结构将用户的测试需求拆分为模组、策略和行为;

模组加载模块,用于对分布式部署的各负载单元加载对应的模组;

压力测试模块,用于通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试;

其中,每个模组管理若干个策略,每个策略管理若干个行为。

可选地,所述压力测试模块具体用于:

通过控制台程序对各负载单元进行管理,并通过ymal配置脚本将各负载单元对应的模组组装成测试实例,并执行所述测试实例进行服务器压力测试。

可选地,所述控制台程序包括若干个接口,所述若干个接口用于与扩展程序连接。

可选地,所述压力测试模块具体用于:

通过控制台程序对各负载单元进行实时管理,执行所述测试需求对应的服务器压力测试。

第三方面,本发明实施例还提出一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述方法。

第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述方法。

由上述技术方案可知,本发明实施例通过将用户的测试需求拆分为模组、策略和行为这三层测试结构,不同组件任意组合,可满足不同网络协议和通讯方式的服务器的压力测试需要;通过控制台程序对测试程序进行管理,管理更为高效;并通过分布式集群化部署,可以满足更大规模的测试要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为本发明一实施例提供的一种服务器压力测试方法的流程示意图;

图2为本发明一实施例提供的一种服务器压力测试结构的示意图;

图3为本发明一实施例提供的一种服务器压力测试的实体关系示意图;

图4为本发明另一实施例提供的一种服务器压力测试方法的流程示意图;

图5为本发明一实施例提供的一种服务器压力测试装置的结构示意图;

图6为本发明一实施例提供的电子设备的逻辑框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本实施例提供的一种服务器压力测试方法的流程示意图,包括:

s101、根据三层测试结构将用户的测试需求拆分为模组、策略和行为。

其中,每个模组管理若干个策略,每个策略管理若干个行为。

本实施例结合状态机和行为树的三层抽象模型,针对游戏业务特征,高度抽象测试模型,将测试需求拆分成模组、策略、行为等多层结构,可对不同组件进行任意组合,提供功能强大的基础模型,可满足不同网络协议和通讯方式的游戏服务器的压力测试需要。

s102、对分布式部署的各负载单元加载对应的模组。

对各负载单元采用分布式集群化部署,以满足更大规模的测试要求。

s103、通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试;

所述控制台程序包括若干个接口,所述若干个接口用于与扩展程序连接。

本实施例中的核心程序通过java开发,分为rider(负载单元)、console(控制台程序)两个应用程序,结合python进行开发,依赖类库:akka-actor、akka-cluster、netty、amqp、jackson,采用通用多接口、集群化部署的测试工具集,是一款高可用性和可扩展性的游戏服务器压测工具,可以满足当前和未来的各项目测试需要,且部署和使用简单,并可以通过控制台程序对测试程序进行实时管理。

本实施例通过将用户的测试需求拆分为模组、策略和行为这三层测试结构,不同组件任意组合,可满足不同网络协议和通讯方式的服务器的压力测试需要;通过控制台程序对测试程序进行管理,管理更为高效;并通过分布式集群化部署,可以满足更大规模的测试要求。

进一步地,在上述方法实施例的基础上,s103具体包括:

通过控制台程序对各负载单元进行管理,并通过ymal配置脚本将各负载单元对应的模组组装成测试实例,并执行所述测试实例进行服务器压力测试。

具体地,使用yaml配置测试脚本,akka-conf配置集群,maven发布管理,集成了多种网络组件、基本策略和行为单元,可以通过ymal配置脚本将其组装成需要的测试实例,还可以对以上接口进行更多的扩展;且采用actor模型作为底层实现,可以充分且高效的利用计算资源,并且容错性很高。

进一步地,在上述方法实施例的基础上,s103具体包括:

通过控制台程序对各负载单元进行实时管理,执行所述测试需求对应的服务器压力测试。

通过对各负载单元进行实时管理,能够及时满足用户的测试需求。

举例来说,如图2所示为本实施例提供的一种服务器压力测试结构的示意图,包括3个服务器,每个服务器对应多个机器人群组,通过不同的策略模拟机器人的不同行为。

在本实施例中,服务器压力测试的实体关系示意图如图3所示,包括3个框架层次:机器人集群、机器人群组和机器人个体,其中机器人集群管理机器人群组,机器人群组包含机器人个体,机器人集群的属性包括物理地址,机器人群组的属性包括区段和统计数据采集,机器人个体的属性包括编号和网络连接;对应地,包括3个业务层次:集群配置、测试策略和测试行为,其中集群配置组装测试策略,测试策略组装测试行为,三者分别包含不同的属性:规模、运行时间、后续行为、执行时间和执行操作,如图3所示。

图4示出了服务器压力测试方法的流程示意图,启动后登录或初始化连接,计算下一条行为,执行行为停止或完成后,断开链接,销毁自身;如果执行行为未停止,则调度下次逻辑心跳,通过调度器触发调度,再循环计算下一条行为。

图5示出了本实施例提供的一种服务器压力测试装置的结构示意图,所述装置包括:需求拆分模块501、模组加载模块502和压力测试模块503,其中:

所述需求拆分模块501用于根据三层测试结构将用户的测试需求拆分为模组、策略和行为;

所述模组加载模块502用于对分布式部署的各负载单元加载对应的模组;

所述压力测试模块503用于通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试;

其中,每个模组管理若干个策略,每个策略管理若干个行为。

具体地,所述需求拆分模块501根据三层测试结构将用户的测试需求拆分为模组、策略和行为;所述模组加载模块502对分布式部署的各负载单元加载对应的模组;所述压力测试模块503通过控制台程序对各负载单元进行管理,执行所述测试需求对应的服务器压力测试。

本实施例通过将用户的测试需求拆分为模组、策略和行为这三层测试结构,不同组件任意组合,可满足不同网络协议和通讯方式的服务器的压力测试需要;通过控制台程序对测试程序进行管理,管理更为高效;并通过分布式集群化部署,可以满足更大规模的测试要求。

进一步地,在上述方法实施例的基础上,所述压力测试模块503具体用于:

通过控制台程序对各负载单元进行管理,并通过ymal配置脚本将各负载单元对应的模组组装成测试实例,并执行所述测试实例进行服务器压力测试。

进一步地,在上述方法实施例的基础上,所述控制台程序包括若干个接口,所述若干个接口用于与扩展程序连接。

进一步地,在上述方法实施例的基础上,所述压力测试模块503具体用于:

通过控制台程序对各负载单元进行实时管理,执行所述测试需求对应的服务器压力测试。

本实施例所述的服务器压力测试装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

参照图6,所述电子设备,包括:处理器(processor)601、存储器(memory)602和总线603;

其中,

所述处理器601和存储器602通过所述总线603完成相互间的通信;

所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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