掌桥专利:专业的专利平台
掌桥专利
首页

支持分布式的多组件性能测试方法和系统

文献发布时间:2023-06-19 11:35:49


支持分布式的多组件性能测试方法和系统

技术领域

本发明涉及性能测试技术领域,具体涉及一种支持分布式的多组件性能测试方法和一种支持分布式的多组件性能测试系统。

背景技术

相关技术中,针对各类项目多类型化的传输协议的性能测试无法实现分布式压测,并且性能测试的技术门槛较高,测试效率较低。

发明内容

本发明为解决上述技术问题,提供了一种支持分布式的多组件性能测试方法,不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

本发明采用的技术方案如下:

一种支持分布式的多组件性能测试方法,包括以下步骤:选择压测协议并输入压测数据;根据所述压测协议的类型确定相应的组件包,并根据所述压测协议的类型和相应的组件包对所述压测数据进行分类整理;根据所述压测协议和分类整理后的压测数据生成相应的python压测脚本;在接收到分布式压测指令时,将所述python压测脚本发送到分布式压力服务器上,以进行分布式压测。

选择所述压测协议并输入压测数据包括:通过UI界面选择所述压测协议;判断是否通过所述UI界面输入所述压测数据;如果是,则通过所述UI界面输入json格式的所述压测数据;如果否,则读取本地json文件以获取所述压测数据。

根据所述压测协议和分类整理后的压测数据生成相应的python压测脚本包括:根据所述压测协议的类型整理出相应的locust模板;将所述分类整理后的压测数据插入所述locust模板以生成相应的python压测脚本。

在未接收到所述分布式压测指令时,将所述python压测脚本发送到单个压力服务器上,以进行单机压测。

一种支持分布式的多组件性能测试系统,包括:数据输入模块,所述数据输入模块用于选择压测协议并输入压测数据;数据分类整理模块,所述数据分类整理模块用于根据所述压测协议的类型和相应的组件包,并根据确定出的组件包对所述压测数据进行分类整理;生成模块,所述生成模块用于根据所述压测协议和分类整理后的压测数据生成相应的python压测脚本;压测模块,所述压测模块用于在接收到分布式压测指令时,将所述python压测脚本发送到分布式压力服务器上,以进行分布式压测。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的支持分布式的多组件性能测试方法。

一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的支持分布式的多组件性能测试方法。

本发明的有益效果:

本发明不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

附图说明

图1为本发明实施例的支持分布式的多组件性能测试方法的流程图;

图2为本发明一个实施例的支持分布式的多组件性能测试方法的逻辑示意图;

图3为本发明实施例的支持分布式的多组件性能测试系统的方框示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是根据本发明实施例的支持分布式的多组件性能测试方法的流程图。

如图1所示,本发明实施例的支持分布式的多组件性能测试方法可包括以下步骤:

S1,选择压测协议并输入压测数据。

根据本发明的一个实施例,选择压测协议并输入压测数据包括:通过UI(UserInterface,使用者界面)界面选择压测协议;判断是否通过UI界面输入压测数据;如果是,则通过UI界面输入json格式的压测数据;如果否,则读取本地json文件以获取压测数据。

具体而言,如图2所示,可先进行压测信息采集(包括压测数据以及其他的压测信息)。UI界面启动后,用户可通过下拉选项选择不同类型的压测协议,例如,可包括HTTP协议、Kafka协议、MQTT协议、Socket协议、WebSocket协议、GRPC协议等。

然后,判断是否通过UI界面输入压测数据。如果是,则直接通过UI界面输入json格式的压测数据(UI界面可获取压测数据),并输入其他的压测信息(例如,检测点判断信息、压测时长、用户数等信息);如果否,则读取本地json文件,并获取压测数据,然后输入其他的压测信息(例如,检测点判断信息、压测时长、用户数等信息)。

S2,根据压测协议的类型确定相应的组件包,并根据压测协议的类型和相应的组件包对压测数据进行分类整理。

具体而言,如图2所示,对压测数据进行分类整理。具体地,根据选择的压测协议确定出协议类型,例如,包括HTTP协议、Kafka协议、MQTT协议、Socket协议、WebSocket协议、GRPC协议,并根据压测协议的类型确定相应的组件包,例如,HTTP协议选择requests组件,Kafka协议选择pykafka组件,MQTT协议选择paho.mqtt组件,Socket协议选择socket组件,WebSocket协议选择websockets组件,GRPC协议选择grpc组件,并根据不同的组件和协议类型将data数据(压测数据)整理成相关协议可用的压测数据(压测发送数据和检查点数据)。

S3,根据压测协议和分类整理后的压测数据生成相应的python压测脚本。

根据本发明的一个实施例,根据压测协议和分类整理后的压测数据生成相应的python压测脚本包括:根据压测协议的类型整理出相应的locust模板;将分类整理后的压测数据插入locust模板以生成相应的python压测脚本。

具体而言,如图2所示,整理压测脚本,其中,可先根据不同协议的类型选取相应的locust(压测核心组件)模板,然后将分类整理后的压测数据(压测发送数据和检查点数据)插入locust模板以生成相应的python压测脚本,并存放管理待使用。

S4,在接收到分布式压测指令时,将python压测脚本发送到分布式压力服务器上,以进行分布式压测。

根据本发明的一个实施例,在未接收到分布式压测指令时,将python压测脚本发送到单个压力服务器上,以进行单机压测。

具体而言,如图2所示,脚本分发执行,具体地,可判断是否接收到分布式压测指令,即判断是否进行分布式压测,其中,用户可通过UI界面选择单个或者多个压力机(压力服务器)进行,也就是说,可根据用户的选择判断是否进行分布式压测,如果用户通过UI界面选择多个压力机(压力服务器)进行,则判断接收到分布式压测指令,即判断进行分布式压测,如果用户通过UI界面选择单个压力机(压力服务器)进行,则判断未接收到分布式压测指令,即判断不进行分布式压测。

进一步而言,如果判断进行分布式压测,则将python压测脚本分发到主机、从机1、从机2、……、从机N,即分发至分布式压力服务器上,以执行分布式压测命令进行分布式压测;如果判断不进行分布式压测,则将python压测脚本分发至单机(单个压力服务器),以执行单机压测命令进行单机压测。在完成压测后,可生成性能报告和日志数据文件。

由此,本发明使用Python作为开发语言,使用wx(用户交互界面组件)、locust(压测核心组件)、Semaphore(信号量组件)、grpc(GRPC协议组件)、pykafka(Kafka协议组件)、paho.mqtt(MQTT协议组件)、socket(Socket协议组件)、websockets(WebSocket协议组件)、requests(HTTP协议组件)、paramiko(分布式远程压力机传输调用)集成后,对各类项目多类型化的传输协议的性能测试进行整合统一化管理,达到便捷、易用、数据处理、分布压测、性能报告产出统一化的作用。通过界面化展示,简化了压测人员的技术和需要编码开发性能测试脚本痛点,通过locust和各个组件结合形成脚本模板,使得压测各种协议变得更加灵活并且可拓展,以及分布式的压测需求,大大降低了性能测试技术门槛,提高了性能测试的测试效率,并且统一了性能测试结果数据和报告的产出。

综上所述,根据本发明实施例的支持分布式的多组件性能测试方法,选择压测协议并输入压测数据,以及根据所述压测协议的类型确定相应的组件包,并根据所述压测协议的类型和相应的组件包对所述压测数据进行分类整理,以及根据所述压测协议和分类整理后的压测数据生成相应的python压测脚本,并在接收到分布式压测指令时,将所述python压测脚本发送到分布式压力服务器上,以进行分布式压测。由此,不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

对应上述实施例的支持分布式的多组件性能测试方法,本发明还提出一种支持分布式的多组件性能测试系统。

如图3所示,本发明实施例的支持分布式的多组件性能测试系统可包括:数据输入模块100、数据分类整理模块200、生成模块300和压测模块400。

其中,数据输入模块100用于选择压测协议并输入压测数据;数据分类整理模块200用于根据压测协议的类型确定相应的组件包,并根据压测协议的类型和相应的组件包对压测数据进行分类整理;生成模块300用于根据压测协议和分类整理后的压测数据生成相应的python压测脚本;压测模块400用于在接收到分布式压测指令时,将python压测脚本发送到分布式压力服务器上,以进行分布式压测。

数据输入模块100具体用于:通过UI界面选择压测协议;判断是否通过UI界面输入压测数据;如果是,则通过UI界面输入json格式的压测数据;如果否,则读取本地json文件以获取压测数据。

生成模块300具体用于:根据压测协议的类型整理出相应的locust模板;将分类整理后的压测数据插入locust模板以生成相应的python压测脚本。

压测模块400还用于:在未接收到分布式压测指令时,将python压测脚本发送到单个压力服务器上,以进行单机压测。

需要说明的是,本发明实施例的支持分布式的多组件性能测试系统更具体的实施方式可参照上述支持分布式的多组件性能测试方法的实施例,在此不再赘述。

根据本发明实施例的支持分布式的多组件性能测试系统,通过数据输入模块选择压测协议并输入压测数据,以及通过数据分类整理模块根据压测协议的类型确定相应的组件包,并根据压测协议的类型和相应的组件包对压测数据进行分类整理,以及通过生成模块根据压测协议和分类整理后的压测数据生成相应的python压测脚本,并通过压测模块在接收到分布式压测指令时,将python压测脚本发送到分布式压力服务器上,以进行分布式压测。由此,不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

对应上述实施例,本发明还提出一种计算机设备。

本发明实施例的计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现上述实施例的支持分布式的多组件性能测试方法。

根据本发明实施例的计算机设备,不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

对应上述实施例,本发明还提出一种非临时性计算机可读存储介质。

本发明实施例的非临时性计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述的支持分布式的多组件性能测试方法。

根据本发明实施例的非临时性计算机可读存储介质,不仅能够实现分布式压测,而且大大降低了性能测试的技术门槛,同时提高了测试效率。

在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 支持分布式的多组件性能测试方法和系统
  • 支持多输入、多输出(MIMO)配置的基于光纤的分布式射频(RF)天线系统及相关组件和方法
技术分类

06120112986442