CN105959177B - 一种游戏服务器压力测试脚本的生成方法和装置 - Google Patents

一种游戏服务器压力测试脚本的生成方法和装置 Download PDF

Info

Publication number
CN105959177B
CN105959177B CN201610267890.1A CN201610267890A CN105959177B CN 105959177 B CN105959177 B CN 105959177B CN 201610267890 A CN201610267890 A CN 201610267890A CN 105959177 B CN105959177 B CN 105959177B
Authority
CN
China
Prior art keywords
robot
protocol
game server
time
pressure test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610267890.1A
Other languages
English (en)
Other versions
CN105959177A (zh
Inventor
谭皓予
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201610267890.1A priority Critical patent/CN105959177B/zh
Publication of CN105959177A publication Critical patent/CN105959177A/zh
Application granted granted Critical
Publication of CN105959177B publication Critical patent/CN105959177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Abstract

本发明公开了一种游戏服务器压力测试脚本的生成方法和装置,通过划分组件库和用户脚本,以脚本模板搭建骨架引导用户输入自定义代码,以功能组件提供调用接口简化用户输入,提高模板和组件代码的可复用性;采用分层脚本的方法,通过执行脚本、机器人脚本和数据包处理脚本的层层调用,有利于使用者的协作开发,提高压力测试脚本的生成效率。

Description

一种游戏服务器压力测试脚本的生成方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种游戏服务器压力测试脚本的生成方法和装置。
背景技术
网络游戏一般都采用客户端/服务端的架构,特别是面向海量玩家的产品,服务端在某一时刻会承受成千上万次访问,为了保证每个玩家的访问都能及时得到正确响应,对服务端硬件和代码都有非常高的要求。为了在游戏上线前掌握服务端的承载能力,快速定位服务端的性能瓶颈,在游戏的开发流程末端通常会引入压力测试。
目前对游戏服务端进行压力测试的方法主要有以下两种:真人压力测试和机器人压力测试,真人压力测试主要通过召集大量玩家在指定时间进行游戏,对服务端造成一定压力。机器人压力测试则通过压力测试工具模拟玩家在游戏中可能进行的操作,通过脚本并发多线程,创建大量机器人,以对服务端的造成压力。基于费用成本的考虑,现有游戏通常采用编写机器人压测脚本进行测试。
现有游戏服务端的压力测试脚本主要通过商用压测工具或者自行研发的专用压测工具生成。商用压测工具为使用者提供了丰富的压测组件和图形化显示界面,使用者既可以利用录制功能简单地制作压测脚本,也可以通过开发接口,灵活开发自定义的压测脚本。而自行研发的专用压测工具都是为游项目戏量身订做,无论是协议还是架构均与项目适配,测试人员使用起来得心应手。
发明内容
发明人在付出大量创造性实践后发现,市场上常见的商用压测工具大都应用于web领域,对http协议的支持远强于其他协议,但是在游戏领域,大多数游戏产品使用基于tcp的自定义协议,web压测工具难以兼容适配。其次,http是一种同步通信机制,而网络游戏多采用异步通信机制,商用压测工具无法完全覆盖所有的测试场景。进一步地,商用压测工具的解决方案是为web服务器量身打造的,对于游戏服务器架构,使用者需要耗费大量精力进行二次开发才能满足游戏测试需求。
而自行研发的专用压测工具往往只为某个游戏定制,由于不同游戏产品之间的设计差异,协议和架构有很大不同,一个游戏产品专用的压力测试工具无法直接应用到另一个产品中,若想让专用压测工具在另一个项目中成功重用,则需要付出大量的学习和开发成本。
本发明实施例的目的在于提供了一种游戏服务器压力测试脚本的生成方法和装置,简化游戏服务器压力测试脚本的生成,提高脚本的生成效率。
为了实现上述目的,本发明实施例提供了一种游戏服务器压力测试脚本的生成方法,包括:
接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;其中,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件包括加密组件、解密组件、压缩组件、解压组件和JOSN处理组件中的一种或多种;
接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
本发明提供的游戏服务器压力测试脚本的生成方法,通过划分组件库和用户脚本,以脚本模板搭建骨架引导用户输入自定义代码,以功能组件提供调用接口简化用户输入,提高模板和组件代码的可复用性;采用分层脚本的方法,通过执行脚本、机器人脚本和数据包处理脚本的层层调用,有利于使用者的协作开发,提高压力测试脚本的生成效率;此外,本发明还通过协程并发替代传统的线程并发,在一定程度上提高了并发的性能,尤其适用于游戏服务器等对并发性能要求较高的压测场景。
优选地,所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的通信协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
本发明在机器人模板中设置独立的网络协议类和机器人协议类,使得网络协议和机器人通信协议解耦,满足一些游戏的特殊要求,如不同的机器人协议共享同一网络协议或同一个机器人协议使用不同网络协议等。
优选地,所述网络协议组件包括HTTP协议组件和TCP协议组件。
优选地,所述机器人模板包括同步机器人模板和异步机器人模板;
在所述接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
优选地,所述同步机器人模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
优选地,所述异步机器人模板包括发送子模板和接收子模板;
所述发送子模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
所述接收子模板定义的交互逻辑包括:
监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
本发明的组件库提供了游戏架构常用的加密/解密功能、压缩/解压功能,并支持TCP、HTTP等网络协议,机器人模板和协程处理组件针对同步和异步通信机制进行了分别设计,实现了对游戏架构常用的同步通讯协议和异步通讯协议的良好兼容,大大增强了对游戏架构的适配。
优选地,在所述监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
优选地,所述根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
判断所述协议号是否已经存在于协议字典中;
若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
优选地,所述压力测试参数包括机器人的用户名列表、登录间隔和并发数量。
优选地,所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
优选地,所述协程处理组件中定义了协程处理的逻辑,所述协程处理的逻辑包括:
判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量。
当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑。
相应地,本发明还提供了一种游戏服务器压力测试脚本的生成装置,包括:
包处理脚本生成模块,用于接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;其中,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件包括加密组件、解密组件、压缩组件、解压组件和JOSN处理组件中的一种或多种;
机器人脚本生成模块,用于接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
执行脚本生成模块,用于调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;还用于接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
优选地,所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的通信协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
优选地,所述网络协议组件包括HTTP协议组件和TCP协议组件。
优选地,所述机器人模板包括同步机器人模板和异步机器人模板;
在所述接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
优选地,所述同步机器人模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
优选地,所述异步机器人模板包括发送子模板和接收子模板;
所述发送子模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
所述接收子模板定义的交互逻辑包括:
监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
优选地,在所述监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
优选地,所述根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
判断所述协议号是否已经存在于协议字典中;
若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
优选地,所述压力测试参数包括机器人的用户名列表、登录间隔和并发数量。
优选地,所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
优选地,所述协程处理组件中定义了协程处理的逻辑,所述协程处理的逻辑包括:
判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量。
当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑;其中,N为机器人的数量。
附图说明
图1是本发明提供的游戏服务器压力测试脚本的生成方法的一个实施例的流程图;
图2是本发明提供的游戏服务器压力测试脚本的生成方法的一个实施例的框架图;
图3是本发明提供的同步机器人模板所定义的交互逻辑示意图;
图4是本发明提供的同步机器人模板的结构示意图;
图5是本发明提供的异步机器人模板中的发送子模板所定义的交互逻辑示意图;
图6是本发明提供的异步机器人模板中的接收子模板所定义的交互逻辑示意图;
图7是本发明提供的异步机器人模板的结构示意图;
图8是本发明提供的统计方法的流程图;
图9是本发明提供的协程处理的流程图;
图10是本发明提供的游戏服务器压力测试脚本的生成装置的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的游戏服务器压力测试脚本的生成方法的一个实施例的流程图。
如图1所示,所述游戏服务器压力测试脚本的生成方法包括:
S1,接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;其中,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件优选包括加密组件、解密组件、压缩组件、解压组件和JOSN(JavaScript ObjectNotation,JavaScript对象表示法)处理组件中的一种或多种;
数据包处理模板中参照游戏的主流数据包格式,定义了pack(打数据包)、unpack(解数据包)、unpacklen(解数据长度包)三个函数的函数头,它们会在机器人脚本中被频繁调用。这三个函数的函数体全部留白,让使用者根据游戏的实际数据打包设计填入相关代码。
S2,接收用户自定义的游戏客户端与游戏服务器之间的通信协议(即机器人协议)代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
在具体实施当中,所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的通信协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
所述网络协议组件优选包括HTTP(HyperText Transfer Protocol,超文本传输协议)协议组件和TCP(Transmission Control Protocol,传输控制协议)协议组件,本领域技术人员可以理解,上述实施方式仅为优选的实施方式,所述网络协议组件还可以进一步包括其他类型的组件以支持相应的网络协议。
S3,调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
所述回调函数中定义有机器人从连接服务器到退出服务器的一系列交互逻辑,所述压力测试参数优选包括机器人的用户名列表、登录间隔和并发数量,协程处理组件将根据这些压力测试参数,调用所述回调函数,实现整个压测流程。
参见图2,是本发明提供的框架结构示意图。本发明提供的游戏服务器压力测试脚本的生成方法,通过划分组件库和用户脚本,以脚本模板搭建骨架引导用户输入自定义代码,以功能组件提供调用接口简化用户输入,提高模板和组件代码的可复用性;采用分层脚本的方法,通过执行脚本、机器人脚本和数据包处理脚本的层层调用,有利于使用者的协作开发,提高压力测试脚本的生成效率。此外,本发明还通过协程并发替代传统的线程并发,在一定程度上提高了并发的性能,尤其适用于游戏服务器等对并发性能要求较高的压测场景。
进一步地,针对游戏所采用的通信机制,所述机器人模板可分为同步机器人模板和异步机器人模板;在所述步骤S2之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
在具体实施当中,若游戏采用同步通信机制,则使用同步机器人模板;若游戏采用异步通信机制,则可根据实际情况进行选择:对于宽松的异步通信机制两个模板均可使用,对于严谨的异步通信机制则必须使用异步机器人模板。
如图3所示,所述同步机器人模板定义的交互逻辑包括:
S31,将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
S32,将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
S33,接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次协议请求的结束时间;
S34,根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
设开始时间为t0,结束时间为t1,则本次协议请求的耗时为t1-t0,将计算结果和本次协议求其所用协议的协议号(或协议名称)发送给统计模块进行统计,使统计模块在压力测试结束后得到必要的统计信息。
如图4所示,所述同步机器人模板由网络协议类Proto和机器人协议类Robot组成,Proto类中提供了callRequest方法,该方法由使用者填入适当代码(或重写代码),调用数据包处理脚本中的函数,实现一次同步通讯中由打包请求、发送请求到接收响应、解包响应的全部内容。Robot类中提供了protocol类变量,其他为自定义方法,即自定义的机器人通信协议,需由使用者填入协议实现代码,如登录、领奖和挑战关卡等。protocol类变量需要引用Proto类,建立Robot类和Proto类的引用关系,使机器人通信协议可内部调用callRequest方法,以黑盒的方式实现数据包处理和网络通讯。
本发明在机器人模板中设置独立的网络协议类和机器人协议类,使得网络协议和机器人通信协议解耦,满足一些游戏的特殊要求,如不同的机器人协议共享同一网络协议或同一个机器人协议使用不同网络协议等。
所述异步机器人模板包括发送子模板和接收子模板;
如图5所示,所述发送子模板定义的交互逻辑包括:
S51,将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
S52,将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
如图6所示,所述接收子模板定义的交互逻辑包括:
S61,监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间;
S62,根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
在具体实施当中,在步骤S61之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
如图7所示,所述异步机器人模板同样由网络协议类Proto和机器人协议类Robot组成,但是异步机器人模板的Proto类中提供了callRequest(发送请求)和callResponse(接收响应)两个方法,callRequest中只需使用者填入打包请求和发送请求的代码,接收响应和解包响应的代码则填入callResponse中。
异步机器人模板基于异步通讯机制的一种常用实现方法进行设计,通过发送和接收的双线程实现。在Robot类中,protocol类变量依旧指向Proto类。但是,protocol类变量只负责调用callRequest发送请求,接收响应的逻辑不在这里实现,执行脚本会创建发送线程并调用用户自定义的机器人协议实现机器人的所有发送行为。
异步机器人模板Robot类中还设置有recvLoop方法,与发送请求对应的接收响应逻辑在recvLoop方法中实现,执行脚本会在初始化过程中调用recvLoop方法并为其创建一条专门的线程,这条线程与另一条发送线程共享同一个socket,它将持续地循环接收游戏服务器传来的响应并进行处理。
本发明提供的机器人模板针对同步和异步通信机制进行了分别设计,实现了对游戏架构常用的同步通讯协议和异步通讯协议的良好兼容,大大增强了对游戏架构的适配。
统计是压测工具的重要功能,使用者在压力测试结束后,需要通过各项统计数据来定位服务端压力瓶颈。在各项统计数据中,请求响应时间是所有统计数据的基础,通过它不仅可以求得系统QPS(Query Per Second,每秒查询率),还能得到游戏服务器对每个协议的处理能力。本发明通过调用组件库中的统计组件对不同协议请求的平均响应时间进行分别统计,可准确定位有压力问题的协议。
如图8所示,在一种优选的实施方式当中,所述根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
S81,判断所述协议号是否已经存在于协议字典中;
S82,若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
S83,若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
协议字典是一个维护协议号与对应耗时的结构,格式为{proto_1:[time,num],proto_2:[time,num],...proto_N:[time,num]},其中proto_N为协议号,time为平均耗时,num为当前的统计次数。设新接收到协议号proto_m的耗时为time1,协议字典中的对应协议号的数据为proto_m:[time0,num0],则新的统计结果为:time=(time0*num0+time1)/(num0+1),num=num0+1。
所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
在具体实施当中,可基于用户输入的压力测试参数发起并发协程,在向机器人工厂实例导入机器人用户id列表时,可同时检查id的数量,以保障列表中的id数量大于并发数量,并可通过配置机器人登录服务器的间隔来控制并发的流量。每个协程中调用实现机器人从连接服务器到退出服务器的交互逻辑的回调函数,以模拟单个玩家的行为,通过协程并发的方式对服务器造成压力。
优选地,所述回调函数也可以通过模板引导使用者填入自定义代码的方式实现,所述模板中定义逻辑如下:(1)调用机器人脚本中的Robot类,创建机器人实例;(2)机器人调用connect方法连接游戏服务端;(3)机器人调用自写义的登录协议方法,登录游戏服务端;(4)机器人执行一系列用户自定义的协议方法,实现与游戏服务器的交互;(5)交互结束后,释放机器人的所有资源;(6)等待机器人工厂释放整条协程。
所述协程处理组件中定义了协程处理的逻辑,如图9所示,所述协程处理的逻辑包括:
S91,判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
S92,当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量。
在具体实施当中,可先创建一条协程,然后再对所创建的协程进行复制,即仅需再复制N-1条协程。
S93,当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑。
在具体实施当中,可先创建一组协程,然后再对所创建的协程进行复制,即仅需再复制N-1组协程。
本发明所述协程处理组件针对同步通信机制和异步通信机制进行了适配,良好地支持对游戏架构常用的同步通信协议和异步通信协议,进一步增强了对游戏架构的适配。
参见图10,是本发明提供的游戏服务器压力测试脚本的生成装置的一个实施例的结构示意图。本实施例的基本原理与图1所示实施例的基本原理一致,本实施例中未详述之处可参见图1所示实施例中的相关面熟
如图10所示,所述游戏服务器压力测试脚本的生成装置,包括:
包处理脚本生成模块101,用于接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;其中,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件包括加密组件、解密组件、压缩组件、解压组件和JOSN处理组件中的一种或多种;
机器人脚本生成模块102,用于接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
执行脚本生成模块103,用于调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;还用于接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的通信协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
所述网络协议组件优选包括HTTP协议组件和TCP协议组件。
所述机器人模板包括同步机器人模板和异步机器人模板;
在所述接收用户自定义的游戏客户端与游戏服务器之间的通信协议代码,将所述通信协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
所述同步机器人模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
所述异步机器人模板包括发送子模板和接收子模板;
所述发送子模板定义的交互逻辑包括:
将协议请求消息打包,获取打包数据,并记录当前时间作为本次协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述协议请求消息作出响应;
所述接收子模板定义的交互逻辑包括:
监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
在所述监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的协议请求的结束时间之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
在具体实施当中,所述根据所述开始时间和所述结束时间计算本次协议请求的耗时,并依据本次协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
判断所述协议号是否已经存在于协议字典中;
若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
所述压力测试参数优选包括机器人的用户名列表、登录间隔和并发数量。
所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
所述协程处理组件中定义了协程处理的逻辑,所述协程处理的逻辑包括:
判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量。
当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑;其中,N为机器人的数量。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (24)

1.一种游戏服务器压力测试脚本的生成方法,其特征在于,包括:
接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;
接收用户自定义的游戏客户端与游戏服务器之间的机器人协议代码,将所述机器人协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
2.如权利要求1所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件包括加密组件、解密组件、压缩组件、解压组件和JOSN处理组件中的一种或多种。
3.如权利要求1所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的机器人协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
4.如权利要求3所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述网络协议组件包括HTTP协议组件和TCP协议组件。
5.如权利要求1所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述机器人模板包括同步机器人模板和异步机器人模板;
在所述接收用户自定义的游戏客户端与游戏服务器之间的机器人协议代码,将所述机器人协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
6.如权利要求5所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述同步机器人模板定义的交互逻辑包括:
将机器人协议请求消息打包,获取打包数据,并记录当前时间作为本次机器人协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述机器人协议请求消息作出响应;
接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次机器人协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
7.如权利要求5所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述异步机器人模板包括发送子模板和接收子模板;
所述发送子模板定义的交互逻辑包括:
将机器人协议请求消息打包,获取打包数据,并记录当前时间作为本次机器人协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述机器人协议请求消息作出响应;
所述接收子模板定义的交互逻辑包括:
监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的机器人协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
8.如权利要求7所述的游戏服务器压力测试脚本的生成方法,其特征在于,在所述监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的机器人协议请求的结束时间之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
9.如权利要求6或7所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
判断所述协议号是否已经存在于协议字典中;
若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
10.如权利要求1所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述压力测试参数包括机器人的用户名列表、登录间隔和并发数量。
11.如权利要求10所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
12.如权利要求11所述的游戏服务器压力测试脚本的生成方法,其特征在于,所述协程处理组件中定义了协程处理的逻辑,所述协程处理的逻辑包括:
判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量;
当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑;其中,N为机器人的数量。
13.一种游戏服务器压力测试脚本的生成装置,其特征在于,包括:
包处理脚本生成模块,用于接收用户自定义的游戏数据包处理代码,将所述游戏数据包处理代码填入预先设置的数据包处理模板中,调用组件库中的数据包处理组件,生成数据包处理脚本;
机器人脚本生成模块,用于接收用户自定义的游戏客户端与游戏服务器之间的机器人协议代码,将所述机器人协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本;其中,所述机器人模板中定义了机器人发送请求和接收响应的交互逻辑;
执行脚本生成模块,用于调用所述机器人脚本,生成回调函数,所述回调函数用于限定在压力测试过程中每个机器人与所述游戏服务器的交互逻辑;还用于接收用户自定义的压力测试参数,将所述压力测试参数填入预先设置的执行模板中,调用所述回调函数以及所述组件库中的协程处理组件,以实现多个机器人的协程并发,生成压力测试的执行脚本;其中,所述执行模板中定义了压力测试的执行逻辑。
14.如权利要求13所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述数据包处理模板中定义了打数据包、解数据包和解数据长度包的函数头,所述数据包处理组件包括加密组件、解密组件、压缩组件、解压组件和JOSN处理组件中的一种或多种。
15.如权利要求13所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述机器人模板中设置有网络协议类和机器人协议类;
所述网络协议类用于调用所述数据包处理脚本以及所述组件库中的网络协议组件,实现打包请求、发送请求、接收响应以及解包响应的交互逻辑;
所述机器人协议类用于存储游戏客户端与游戏服务器之间的机器人协议代码,并调用所述网络协议类,以黑盒的方式实现数据包处理和网络通信。
16.如权利要求15所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述网络协议组件包括HTTP协议组件和TCP协议组件。
17.如权利要求13所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述机器人模板包括同步机器人模板和异步机器人模板;
在所述接收用户自定义的游戏客户端与游戏服务器之间的机器人协议代码,将所述机器人协议代码填入所述预先设置的机器人模板中,调用所述数据包处理脚本以及所述组件库中的网络协议组件,生成用于模拟游戏客户端行为的机器人脚本之前,还包括:
根据所述游戏客户端与所述游戏服务器之间采用的通信机制类型,选取所述同步机器人模板或所述异步机器人模板。
18.如权利要求17所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述同步机器人模板定义的交互逻辑包括:
将机器人协议请求消息打包,获取打包数据,并记录当前时间作为本次机器人协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述机器人协议请求消息作出响应;
接收所述游戏服务器反馈的响应信息,并记录当前时间作为本次机器人协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
19.如权利要求17所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述异步机器人模板包括发送子模板和接收子模板;
所述发送子模板定义的交互逻辑包括:
将机器人协议请求消息打包,获取打包数据,并记录当前时间作为本次机器人协议请求的开始时间;
将所述打包数据发送给所述游戏服务器,以使得所述游戏服务器根据所述机器人协议请求消息作出响应;
所述接收子模板定义的交互逻辑包括:
监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的机器人协议请求的结束时间;
根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间。
20.如权利要求19所述的游戏服务器压力测试脚本的生成装置,其特征在于,在所述监听所述游戏服务器反馈的响应信息,对接收到的所述响应信息进行解包,获取所述响应信息中的协议号,并记录当前时间作为与所述协议号对应的机器人协议请求的结束时间之后,还包括:
判断所述解包数据中的协议号是否存在于已知协议库中;若是,则根据所述解包数据,执行与所述协议号对应的回调函数;若否,则丢弃所述解包数据。
21.如权利要求18或19所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述根据所述开始时间和所述结束时间计算本次机器人协议请求的耗时,并依据本次机器人协议请求的协议号对所述耗时进行统计,获取所述协议号的平均响应时间,包括:
判断所述协议号是否已经存在于协议字典中;
若所述协议号已存在于所述协议字典中,则从所述协议字典中获取所述协议号的原有耗时,并根据所述原有耗时以及新接收到的耗时,计算所述协议号的平均响应时间,将所述平均响应时间作为所述协议号的新键值更新到所述协议字典中;
若所述协议号不存在于所述协议字典中,则在所述协议字典中为所述协议号创建新的协议字段,并将新接收到的耗时作为所述协议号的键值存储到所述协议字典中。
22.如权利要求13所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述压力测试参数包括机器人的用户名列表、登录间隔和并发数量。
23.如权利要求22所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述执行模板中定义的压力测试的执行逻辑包括:
创建机器人工厂实例,并向所述机器人工厂实例中传入所述压力测试参数;
调用所述回调函数以及所述组件库中的协程处理组件,根据所述压力测试参数以协程并发的方式执行所述机器人工厂实例;
对所述机器人工厂实例的执行结果进行统计。
24.如权利要求23所述的游戏服务器压力测试脚本的生成装置,其特征在于,所述协程处理组件中定义了协程处理的逻辑,所述协程处理的逻辑包括:
判断所述游戏客户端与所述游戏服务器之间采用的是同步通信机制还是异步通信机制;
当采用的是同步通信机制时,创建N条协程,每条协程中调用机器人发送请求和接收响应的交互逻辑;其中,N为机器人的数量;
当采用的是异步通信机制时,创建N组协程,每组协程中包含两条协程,其中一条协程调用机器人发送请求的交互逻辑,另一条协程调用机器人接收响应的交互逻辑;其中,N为机器人的数量。
CN201610267890.1A 2016-04-26 2016-04-26 一种游戏服务器压力测试脚本的生成方法和装置 Active CN105959177B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610267890.1A CN105959177B (zh) 2016-04-26 2016-04-26 一种游戏服务器压力测试脚本的生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610267890.1A CN105959177B (zh) 2016-04-26 2016-04-26 一种游戏服务器压力测试脚本的生成方法和装置

Publications (2)

Publication Number Publication Date
CN105959177A CN105959177A (zh) 2016-09-21
CN105959177B true CN105959177B (zh) 2018-12-11

Family

ID=56915841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610267890.1A Active CN105959177B (zh) 2016-04-26 2016-04-26 一种游戏服务器压力测试脚本的生成方法和装置

Country Status (1)

Country Link
CN (1) CN105959177B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107362537A (zh) * 2017-07-03 2017-11-21 珠海金山网络游戏科技有限公司 一种限定角色账号登录服务器的方法及装置
CN107957954B (zh) * 2017-12-19 2021-06-29 郑州云海信息技术有限公司 一种Linux系统下提高测试数据安全性的方法和系统
CN109726102A (zh) * 2018-05-14 2019-05-07 网联清算有限公司 流量压力测试方法和装置
CN108600034B (zh) * 2018-05-28 2020-07-03 腾讯科技(深圳)有限公司 业务压力管理方法、装置、设备、系统及存储介质
CN109032582A (zh) * 2018-07-19 2018-12-18 郑州云海信息技术有限公司 一种生成服务器运维脚本的方法及装置
CN108809772A (zh) * 2018-08-28 2018-11-13 福建南威软件有限公司 一种api服务负载监测方法
CN109460348B (zh) * 2018-10-31 2022-02-22 网易(杭州)网络有限公司 游戏服务器的压测方法和装置
CN109684196B (zh) * 2018-11-01 2024-01-09 北京中清龙图网络技术有限公司 一种测试方法及装置
CN109522199B (zh) * 2018-11-30 2022-07-15 网易(杭州)网络有限公司 游戏地域性压力测试方法、装置、系统及存储介质
CN109698771B (zh) * 2018-12-07 2021-04-20 网易(杭州)网络有限公司 游戏服务器压力测试方法及装置
CN109603154B (zh) * 2018-12-14 2022-05-20 网易(杭州)网络有限公司 游戏界面测试方法、客户端、托管服务器及系统
CN109857626A (zh) * 2019-01-28 2019-06-07 上海易点时空网络有限公司 压力测试方法及装置
CN110034972B (zh) * 2019-03-22 2021-07-06 深圳市腾讯信息技术有限公司 服务器压力测试方法和装置
CN111061631A (zh) * 2019-11-29 2020-04-24 珠海金山网络游戏科技有限公司 移动终端游戏回测方法及系统
CN111143209B (zh) * 2019-12-23 2023-10-17 五八有限公司 分层压力测试方法、装置、电子设备及存储介质
CN113609027A (zh) * 2021-08-31 2021-11-05 北京百度网讯科技有限公司 一种arm云服务器的测试方法、装置、电子设备和存储介质
CN114615171B (zh) * 2022-03-16 2024-01-30 网易(上海)网络有限公司 云游戏服务器的压测处理方法、设备、介质及程序产品
CN115373654B (zh) * 2022-10-08 2023-01-10 天津华来科技股份有限公司 Locust中间件代码架构方法、电子设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866944A (zh) * 2012-06-12 2013-01-09 中国联合网络通信集团有限公司 一种压力测试系统及方法
CN103593294A (zh) * 2013-11-21 2014-02-19 福建天晴数码有限公司 网络游戏性能测试方法及系统
CN105306299A (zh) * 2015-11-02 2016-02-03 上海聚力传媒技术有限公司 一种流媒体服务器性能测试方法及测试系统
CN105446860A (zh) * 2015-11-11 2016-03-30 上海欣方智能系统有限公司 基于异步并发机制的压力测试系统和测试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101138302B1 (ko) * 2011-08-26 2012-04-25 주식회사 쏘그웨어 온라인 게임 서버-테스트 통합 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866944A (zh) * 2012-06-12 2013-01-09 中国联合网络通信集团有限公司 一种压力测试系统及方法
CN103593294A (zh) * 2013-11-21 2014-02-19 福建天晴数码有限公司 网络游戏性能测试方法及系统
CN105306299A (zh) * 2015-11-02 2016-02-03 上海聚力传媒技术有限公司 一种流媒体服务器性能测试方法及测试系统
CN105446860A (zh) * 2015-11-11 2016-03-30 上海欣方智能系统有限公司 基于异步并发机制的压力测试系统和测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《自主压力测试平台的设计与实现》;郄霖;《中国优秀硕士学位论文全文数据库信息科技辑》;20150815;I138-354 *

Also Published As

Publication number Publication date
CN105959177A (zh) 2016-09-21

Similar Documents

Publication Publication Date Title
CN105959177B (zh) 一种游戏服务器压力测试脚本的生成方法和装置
CN106484622B (zh) 测试方法、装置及系统
US20120311387A1 (en) Method and apparatus for load testing online server systems
CN103336724B (zh) 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法
CN110109817A (zh) 接口自动化测试方法、装置、设备及存储介质
KR101548160B1 (ko) 워게임 모델의 연동 시스템 및 방법
CN106529673A (zh) 基于人工智能的深度学习网络训练方法及装置
CN106155906B (zh) 一种银行主机内部测试系统及方法
KR101520056B1 (ko) 클라우드 기반 모바일/온라인 게임 서버 부하 테스트 자동화 서비스 방법
CN109308224A (zh) 跨平台数据通信、跨平台数据处理的方法、装置及系统
CN101013968A (zh) 自动接口测试框架
CN108923999A (zh) 一种网游服务器性能自动化测试方法及系统
Al-Zoubi et al. Distributed simulation using restful interoperability simulation environment (rise) middleware
CN107517139A (zh) 数据处理方法及系统、设备测试系统及节点测试系统
Wang et al. MetaOJ: A massive distributed online judge system
CN116107913B (zh) 单节点服务器的测试控制方法、装置及系统
CN113391992A (zh) 测试数据的生成方法和装置、存储介质及电子设备
CN107180525A (zh) 一种物理设备的蓝牙控制方法、装置、系统和相关设备
CN113971455A (zh) 一种分布式模型训练方法、装置、存储介质及计算机设备
Dastani et al. The second contest on multi-agent systems based on computational logic
CN105446867B (zh) 一种测试数据的生成方法及装置
CN110491212A (zh) 一种在线课堂教学方法、装置、调度服务器及系统
CN111221687B (zh) 一种云存储测试系统和方法
CN105897476B (zh) 一种创建传输通道的方法及装置
CN111294250B (zh) 压力测试方法、装置和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant