CN111752820B - gRPC接口的压力测试方法、计算机设备和存储介质 - Google Patents

gRPC接口的压力测试方法、计算机设备和存储介质 Download PDF

Info

Publication number
CN111752820B
CN111752820B CN201910248605.5A CN201910248605A CN111752820B CN 111752820 B CN111752820 B CN 111752820B CN 201910248605 A CN201910248605 A CN 201910248605A CN 111752820 B CN111752820 B CN 111752820B
Authority
CN
China
Prior art keywords
test
interface
communication protocol
file
parameter
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
CN201910248605.5A
Other languages
English (en)
Other versions
CN111752820A (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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN201910248605.5A priority Critical patent/CN111752820B/zh
Publication of CN111752820A publication Critical patent/CN111752820A/zh
Application granted granted Critical
Publication of CN111752820B publication Critical patent/CN111752820B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Abstract

本发明提供了一种gRPC接口的压力测试方法、计算机设备和存储介质。该gRPC接口的压力测试方法包括获取gRPC接口的通信协议定义文件;获取测试gRPC接口的测试参数;发送通信协议定义文件和测试参数至压测容器,其中,压力测试工具运行于压测容器上;调用压力测试工具,以根据通信协议定义文件和测试参数形成测试请求,发送测试请求至gRPC接口,并接收gRPC接口返回的测试响应,根据通信协议定义文件解析测试响应;以及获取测试响应的解析结果形成测试报告。通过本发明,能够实现gRPC接口压力的自动测试,提升用户体验。

Description

gRPC接口的压力测试方法、计算机设备和存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种gRPC接口的压力测试方法、计算机设备和存储介质。
背景技术
远程过程调用(Remote Procedure Call,RPC)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。google公司开发的RPC协议,也即gRPC协议,是一个高性能、通用的开源RPC框架,主要面向移动应用开发并基于HTTP2协议标准而设计。随着移动终端的普及,移动应用接口也随之也成为应用程序接口开发的主流,因此,基于gRPC协议的接口(简称gRPC接口)普遍存在于各类应用软件中。
在gRPC接口的开发过程中,压力测试是gRPC接口响应负载能力的重要测试项,但是,现有技术中,并没有针对gRPC接口进行压力测试的泛化性的测试系统,因此,提供一种gRPC接口的压力测试方法、计算机设备和计算机可读存储介质,成为本领域亟待解决的技术问题。
发明内容
本发明的目的是提供一种gRPC接口的压力测试方法、计算机设备和计算机可读存储介质,用于解决现有技术中的上述技术问题。
为实现上述目的,本发明提供了一种gRPC接口的压力测试方法。
该gRPC接口的压力测试方法包括:获取gRPC接口的通信协议定义文件;获取测试gRPC接口的测试参数;发送通信协议定义文件和测试参数至压测容器,其中,压力测试工具运行于压测容器上;调用压力测试工具,以根据通信协议定义文件和测试参数形成测试请求,发送测试请求至gRPC接口,并接收gRPC接口返回的测试响应,根据通信协议定义文件解析测试响应;以及获取测试响应的解析结果形成测试报告。
进一步地,获取测试gRPC接口的测试参数的步骤包括:解析通信协议定义文件,以得到多个参数类型和多个接口参数;展示测试参数接收窗口,其中,测试参数接收窗口包括对应参数类型的参数输入框和对应参数类型的参数选择项,每个参数选择项对应一个接口参数;将参数输入框接收到的参数和被选择的参数选择项所对应的接口参数作为测试参数。
进一步地,在测试参数接收窗口中,设置参数输入框的参数类型包括:gRPC接口的接口地址、端口和请求内容;设置参数选择项的参数类型包括:gRPC接口的类名、包名、服务名称、请求方法、请求消息体和返回消息体。
进一步地,通信协议定义文件包括主文件和若干依赖文件,获取gRPC接口的通信协议定义文件的步骤包括:获取主文件和依赖文件;解析通信协议定义文件的步骤包括:解析主文件中标识依赖文件数量的参数;获取依赖文件的步骤包括:当主文件中标识依赖文件个数的数量不为零时,监测并提示依赖文件的数量。
进一步地,通信协议定义文件均为proto文件,压力测试工具基于Jmeter实现。
进一步地,在发送通信协议定义文件和测试参数至压测容器的步骤之前,方法还包括:将通信协议定义文件由proto文件转换为多个java文件;将每个java文件编译为java字节码文件;将所有的java字节码文件打包形成一个jar包;将测试参数组装形成jmx文件,其中,发送通信协议定义文件和测试参数至压测容器具体为:发送jar包和jmx文件至压测容器。
进一步地,根据通信协议定义文件和测试参数形成测试请求的步骤包括:通过jmx文件获取测试参数,其中,测试参数包括参数类型为接口地址、端口、包名、服务名称、请求方法、请求内容、类名、请求消息体和返回消息体的参数值,其中,请求内容的格式为JSON格式;将请求内容由JSON格式转换为proto对象。
进一步地,根据通信协议定义文件解析测试响应的步骤包括:将测试响应proto对象解析为JSON格式。
为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本发明提供的gRPC接口的压力测试方法、计算机设备和计算机可读存储介质,在对gRPC接口进行压力测试时,首先获取待测试gRPC接口的通信协议定义文件和测试参数,并将通信协议定义文件和测试参数发送至运行压力测试工具的压测容器,然后调用压力测试工具时,压力测试工具根据通信协议定义文件和测试参数向gRPC接口发送测试请求,压力测试工具接收并解析测试响应得到解析结果,最后通过解析结果形成测试报告,完成gRPC接口的压力测试,同时,在实现gRPC接口的压力测试过程中,自动按照用户提供的数据信息完成测试并生成测试报告,无需测试用户编写测试用例进行测试,提高了用户对gRPC接口压力进行测试的效率和体验。
附图说明
图1为本发明实施例一提供的gRPC接口的压力测试方法的流程图;
图2为本发明实施例一提供的gRPC接口的压力测试方法中获取测试参数的示意图;
图3为本发明实施例二提供的gRPC接口的压力测试系统的框图;
图4为本发明实施例三提供的计算机设备的硬件结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种gRPC接口的压力测试方法,通过该方法,测试用户只需要提供待测试gRPC接口的通信协议定义文件和测试参数,测试系统会自动按照用户提供的数据信息完成测试并生成测试报告,无需测试用户编写测试用例进行测试,提高了用户对gRPC接口压力进行测试的效率和体验。测试系统包括压力测试平台、压测容器和压力测试工具,该方法的执行主体为压力测试平台。具体地,图1为本发明实施例一提供的gRPC接口的压力测试方法的流程图,如图1所示,该实施例提供的gRPC接口的压力测试方法包括如下的步骤S101至步骤S105。
步骤S101:获取gRPC接口的通信协议定义文件。
通信协议定义文件可以是gRPC接口开发过程中定义接口通信协议的文件,包括请求接口服务时请求消息的相关定义以及接口响应请求后反馈的响应消息的相关定义。因此,用户在进行gRPC接口的压力测试时,无需编写脚本等文件,可直接提供接口开发时形成的通信协议定义文件,压力测试平台获取到该通信协议定义文件。
可选地,该通信协议定义文件为proto文件。proto文件是指基于protobuf(Protocol Buffers)序列化协议开发的文件,protobuf灵活高效的结构化数据存储格式,方便用于序列化,适合做RPC的数据交换,相比XML文件,proto文件数据量更小、数据处理速度更快、文件结构更简单,因此,用户在形成定义接口通信协议的文件时,可使用proto文件,而设置压力测试所需的通信协议定义文件为proto文件,使得用户在进行压力测试时无需对开发过程中定义接口通信协议的文件进行格式转换,减少用户的工作量,增加用户体验。
步骤S102:获取测试gRPC接口的测试参数。
用户在测试gRPC接口时,需要提供一些测试参数,需要说明的是,该测试参数也即参数类型对应的具体的接口参数,具体包括接口地址、端口、包名、服务名称、请求方法、请求内容、类名、请求消息体和返回消息体等参数类型对应的接口参数,例如端口对应的接口参数为“9000”,服务名称对应的接口参数为“identify”。
其中,用户在提供该测试参数时,可以通过直接编写参数脚本提供,或者,测试系统向用户提供测试参数接收窗口,用户通过在测试参数接收窗口输入相应参数类型所对应的接口参数提供,无论以哪种方式,压力测试平台需要获取到测试gRPC接口的测试参数。
步骤S103:发送通信协议定义文件和测试参数至压测容器。
压力测试平台在获取到通信协议定义文件和测试参数后,在该步骤S103中,将其发送到压测容器中。其中,压测容器用于存储压力测试平台在获取到的通信协议定义文件和测试参数,同时,压测容器为运行压力测试工具的环境,压力测试工具是运行于压测容器环境下的程序模块,压力测试工具在执行测试的过程中,所需的数据来源为通信协议定义文件和测试参数,其中,通信协议定义文件提供的是测试过程中请求接口服务时请求消息的相关格式定义以及接口返回响应时响应消息的相关格式定义。
其中,压力测试工具为根据通信协议定义文件和测试参数生成测试用例,并执行该测试用例,以请求gRPC接口并接收gRPC接口返回的信息。
步骤S104:调用压力测试工具,以根据通信协议定义文件和测试参数形成测试请求,发送测试请求至gRPC接口,并接收gRPC接口返回的测试响应,根据通信协议定义文件解析测试响应。
压力测试平台在将通信协议定义文件和测试参数发送至压测容器后,在该步骤S104中,调用压力测试工具。
压力测试工具被调用后,首先获取通信协议定义文件和测试参数,按照预置的逻辑根据通信协议定义文件和测试参数形成测试请求,并按照预置的逻辑将形成的测试请求发送至gRPC接口,也就是说,压力测试工具向gRPC接口发送请求,模拟gRPC接口的负载压力。gRPC接口接收到测试请求后,对该请求进行响应,压力测试工具接收该响应,作为测试请求的测试响应。压力测试工具在接收到测试响应后,再获取通信协议定义文件,按照预置逻辑根据通信协议定义文件解析测试响应。
步骤S105:获取测试响应的解析结果形成测试报告。
压力测试工具得到测试结果后,在该步骤中,压力测试平台获取压力测试工具的解析测试响应的解析结果,形成测试报告。可选地,压力测试平台可获取压力测试工具多次获得的解析结果形成测试报告,以在测试报告中体现出不同次压力测试的测试结果比对,和/或多次压力测试的测试结果的统计规律。
采用该实施例提供的gRPC接口的压力测试方法,首先获取待测试gRPC接口的通信协议定义文件和测试参数,并将通信协议定义文件和测试参数发送至运行压力测试工具的压测容器,然后调用压力测试工具时,压力测试工具根据通信协议定义文件和测试参数向gRPC接口发送测试请求,压力测试工具接收并解析测试响应得到解析结果,最后通过解析结果形成测试报告,完成gRPC接口的压力测试,同时,在实现gRPC接口的压力测试过程中,自动按照用户提供的数据信息完成测试并生成测试报告,无需测试用户编写测试用例进行测试,提高了用户对gRPC接口压力进行测试的效率和体验。
针对上述实施例一中的步骤S102,图2为本发明实施例一提供的gRPC接口的压力测试方法中获取测试参数的示意图,如图2所示,可选地,压力测试平台包括压力测试前端和压力测试后端,压力测试平台在获取测试gRPC接口的测试参数时,根据压力测试前端接收用户输入的通信协议定义文件进行获取,具体执行的步骤包括如下的步骤S1021至步骤S1023。
步骤S1021:解析通信协议定义文件,以得到多个参数类型和多个接口参数。
具体地,压力测试后端对通信协议定义文件进行解析,能够得到多个参数类型和多个接口参数。
例如,压力测试前端获取到的通信协议定义文件为proto文件,具体内容如下:
针对上文所示文件内容的通信协议定义文件,压力测试后端解析后可以得到的各个参数类型以及分别所对应的接口参数包括“类名:Api;包名:identify.v1;请求消息体:GetCookieReq;返回消息体:GetCookieReply;服务名称:IdService;请求方法:GetCookieInfo”。
步骤S1022:展示测试参数接收窗口。
在压力测试后端解析得到参数类型和接口参数后,形成测试参数接收窗口,通过压力测试前端展示该测试参数接收窗口。
其中,测试参数接收窗口包括对应参数类型的参数输入框和对应参数类型的参数选择项,每个参数选择项对应一个接口参数。对于解析后可以得到具有接口参数的参数类型,对应该参数类型设置参数选择项,当解析后可以得到具有多个接口参数的参数类型,对应该参数类型设置多个参数选择项,用户通过选定某一个参数选择项,以及选定一个接口参数,作为测试参数;对于解析后无法得到接口参数的参数类型,对应该参数类型设置参数输入框,用户通过参数输入框输入接口参数。
采用该实施例,一部分接口参数需要用户通过参数输入框输入,另一部分接口参数只需用户对参数选择项进行选择,减少用户的输入数据量,提升用户体验,同时,用户在参数输入框输入内容时,可参照选定的参数选择项,减小用户输入接口参数时出错的概率。
进一步可选地,在测试参数接收窗口中,设置参数输入框的参数类型包括:gRPC接口的接口地址、端口和请求内容;设置参数选择项的参数类型包括:gRPC接口的类名、包名、服务名称、请求方法、请求消息体和返回消息体。
例如,仍然以上述通信协议定义文件为例,在测试参数接收窗口中,类名的参数选择项中包括“Api”、包名的参数选择项中包括“identify.v1”、服务名称的参数选择项中包括“IdService”、请求方法的参数选择项中包括“GetCookieInfo”、请求消息体的参数选择项中包括“GetCookieReq”、返回消息体的参数选择项中包括“GetCookieReply”。
接口地址、端口和请求内容分别对应有参数输入框,例如,用户可在接口地址对应的参数输入框中输入“192.168.1.1”,用户可在端口对应的参数输入框中输入“9000”,用户可在请求内容的参数输入框中输入“{“key”:“value”,“key”:“value”,}”。
步骤S1023:将参数输入框接收到的参数和被选择的参数选择项所对应的接口参数作为测试参数。
在该步骤中,压力测试前端展示测试参数接收窗口,通过测试参数接收窗口中的参数输入框接收到的参数,和通过测试参数接收窗口中的参数选择项所选择的接口参数,均为测试参数,压力测试前端将获取到的测试参数发送至压力测试后端。
可选地,通信协议定义文件包括主文件和若干依赖文件,对于上述实施例一中的步骤S101,在获取gRPC接口的通信协议定义文件时,先获取主文件,然后再获取依赖文件,对于上述实施例一中的步骤S102,在解析通信协议定义文件,先对主文件进行解析,解析主文件中标识依赖文件数量的参数,对于proto文件,解析参数“proto import”。当主文件中标识依赖文件个数的数量不为零时,也即proto import不为零时,在获取依赖文件的过程中,监测并提示依赖文件的数量。例如,实时显示未上传的依赖文件的数量,并且每获取到一个依赖文件后,实时更新未上传的依赖文件的数量。
采用该实施例,系统能够自动监测和提示用户上传完整的通信协议定义文件,避免用户上传信息不完全导致的测试故障,提升用户测试体验。
可选地,压力测试工具基于Jmeter实现,JMeter是Apache组织开发的基于Java的压力测试工具,本申请在Jmeter的基础上,实现了gRPC接口的压力测试。
进一步可选地,在步骤S103中发送通信协议定义文件至压测容器的步骤之前,本申请的压力测试方法还包括如下的步骤:将通信协议定义文件由proto文件转换为多个java文件,将每个java文件编译为java字节码文件,将所有的java字节码文件打包形成一个jar包。具体地,可通过protoc命令将proto文件转成java文件,再通过javac命令编译java文件,形成java字节码文件,也即形成后缀为.class的文件,最后将所有的java字节码文件打包形成一个jar包,也即通过jar命令将.class文件的整个目录进行打包,形成jar包,以供压力测试工具调用执行。
在步骤S103中发送测试参数至压测容器的步骤之前,本申请的压力测试方法还包括如下的步骤:将测试参数组装形成jmx文件,以供压力测试工具调用执行。
其中,将通信协议定义文件转换为jar包,将测试参数组装为jmx文件后,在步骤S103中,发送通信协议定义文件和测试参数至压测容器时,实际发送的是jar包形式的通信协议定义文件和jmx文件形式的测试参数。
采用该实施例,压力测试平台实现proto文件至jar包的转换,以及jmx文件的组装,用户只需提供proto格式的文件,无需进行文件格式的转换,能够减少用户数据处理步骤,提升用户体验;压测容器上运行的基于java的压力测试工具,可直接调用jar包和jmx文件执行测试,无需进行文件格式的转换,能够提升测试速度。
进一步可选地,压力测试工具在根据通信协议定义文件和测试参数形成测试请求时,通过压测容器接收到的jmx文件获取测试参数,其中,测试参数包括参数类型为接口地址、端口、包名、服务名称、请求方法、请求内容、类名、请求消息体和返回消息体的参数值,其中,可选地,请求内容为用户通过参数输入框输入的内容,请求内容的格式为JSON格式,在组装测试请求时,首先将请求内容由JSON格式转换为proto对象。同时,在根据通信协议定义文件解析测试响应时,再将测试响应中对应请求内容的部分解析为JSON格式。
采用该实施例,对于需要用户输入的请求内容,格式采用JSON格式,组装测试请求时,由压力测试工具对JSON格式进行转换,转换为gRPC接口所需的proto对象,解析测试响应时,由压力测试工具将返回的proto对象解析为JSON格式,从而用户提供请求内容时和阅读测试结果时,均直接面对JSON格式的数据,可读性高,编辑方便,提升用户体验。
实施例二
对应于上述实施例一,本发明实施例二提供了一种gRPC接口的压力测试系统,该压力测试系统执行上述压力测试方法的步骤,具有其相应的技术效果,具体可参考上述实施例一,该实施例二不再赘述,图3为本发明实施例二提供的gRPC接口的压力测试系统,如图3所示,该系统包括压力测试平台201、压测容器202和压力测试工具203,其中,可选地,可针对gRPC接口的压力测试要求设置多个压测容器202,每个压测容器202上均运行有压力测试工具203。
其中,压力测试平台201用于获取gRPC接口的通信协议定义文件和测试gRPC接口的测试参数,并发送通信协议定义文件和测试参数至压测容器202,以及调用压力测试工具203和获取测试响应的解析结果形成测试报告;
压测容器202用于存储通信协议定义文件和测试参数,并用于执行压力测试工具203;
压力测试工具203用于在被调用时,根据通信协议定义文件和测试参数形成测试请求,发送测试请求至gRPC接口204,并接收gRPC接口204返回的测试响应,根据通信协议定义文件解析测试响应。
采用该实施例提供的gRPC接口的压力测试系统,由压力测试平台201获取待测试gRPC接口的通信协议定义文件和测试参数,并将通信协议定义文件和测试参数发送至运行压力测试工具的压测容器,然后调用压力测试工具时,压力测试工具根据通信协议定义文件和测试参数向gRPC接口发送测试请求,压力测试工具接收并解析测试响应得到解析结果,最后通过解析结果形成测试报告,完成gRPC接口的压力测试,同时,在实现gRPC接口的压力测试过程中,自动按照用户提供的数据信息完成测试并生成测试报告,无需测试用户编写测试用例进行测试,提高了用户对gRPC接口压力进行测试的效率和体验。
可选地,压力测试平台201包括压力测试后端和压力测试前端,其中,压力测试前端用于与用户进行交互,包括接收用户的输入和向用户展示输出;压力测试后端用于对压力测试前端接收到的用户输入数据进行处理,形成向用户展示的信息输出至压力测试前端以进行展示。具体地,压力测试前端接收用户提供通信协议定义文件,并将其发送至压力测试后端,压力测试后端对通信协议定义文件进行解析,以得到多个参数类型和多个接口参数,然后根据参数类型和接口参数形成测试参数接收窗口的数据,其中,测试参数接收窗口包括对应参数类型的参数输入框和对应参数类型的参数选择项,每个参数选择项对应一个接口参数,然后由压力测试前端展示测试参数接收窗口,用户可在测试参数接收窗口的参数输入框中输入参数,可选定参数选择项,最后压力测试后端将参数输入框接收到的参数和被选择的参数选择项所对应的接口参数作为测试参数。
采用该实施例提供的gRPC接口的压力测试系统,对于需要用户提供的测试参数,一部分接口参数由用户通过参数输入框输入,另一部分接口参数只需用户在压力测试前端对参数选择项进行选择,减少用户的输入数据量,提升用户体验,同时,用户在参数输入框输入内容时,可参照选定的参数选择项,减小用户输入接口参数时出错的概率。
可选地,在测试参数接收窗口中,设置参数输入框的参数类型包括:gRPC接口的接口地址、端口和请求内容;设置参数选择项的参数类型包括:gRPC接口的类名、包名、服务名称、请求方法、请求消息体和返回消息体。
可选地,通信协议定义文件包括主文件和若干依赖文件,压力测试平台201在获取gRPC接口的通信协议定义文件时,获取主文件和依赖文件;在解析通信协议定义文件时,解析主文件中标识依赖文件数量的参数,并且在获取依赖文件的过程中,当主文件中标识依赖文件个数的数量不为零时,监测并提示依赖文件的数量。
采用该实施例提供的gRPC接口的压力测试系统,能够自动监测和提示用户上传完整的通信协议定义文件,避免用户上传信息不完全导致的测试故障,提升用户测试体验。
可选地,通信协议定义文件均为proto文件,压力测试工具基于Jmeter实现。
可选地,压力测试平台在执行发送通信协议定义文件和测试参数至压测容器的步骤之前,先执行以下步骤:将通信协议定义文件由proto文件转换为多个java文件;将每个java文件编译为java字节码文件,即.class文件;将所有的java字节码文件打包形成一个jar包;将测试参数组装形成jmx文件。其中,压力测试平台发送通信协议定义文件和测试参数至压测容器时,具体发送的是jar包和jmx文件。
采用该实施例提供的gRPC接口的压力测试系统,压力测试平台实现proto文件至jar包的转换,以及jmx文件的组装,用户只需提供proto格式的文件,无需进行文件格式的转换,能够减少用户数据处理步骤,提升用户体验;压测容器上运行的Jemter是基于java的压力测试工具,可直接调用jar包和jmx文件执行测试,无需进行文件格式的转换,能够提升测试速度。
可选地,压力测试工具在根据通信协议定义文件和测试参数形成测试请求时,通过jmx文件获取测试参数,其中,测试参数包括参数类型为接口地址、端口、包名、服务名称、请求方法、请求内容、类名、请求消息体和返回消息体的参数值,其中,请求内容的格式为JSON格式,并且将请求内容由JSON格式转换为proto对象;在根据通信协议定义文件解析测试响应时,将测试响应解析为JSON格式。
采用该实施例提供的gRPC接口的压力测试系统,对于需要用户输入的请求内容,格式采用JSON格式,组装测试请求时,由压力测试工具对JSON格式进行转换,转换为gRPC接口所需的proto对象,解析测试响应时,由压力测试工具将返回的proto对象解析为JSON格式,从而用户提供请求内容时和阅读测试结果时,均直接面对JSON格式的数据,可读性高,编辑方便,提升用户体验。
实施例三
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图4所示,本实施例的计算机设备01至少包括但不限于:可通过系统总线相互通信连接的存储器011、处理器012,如图4所示。需要指出的是,图4仅示出了具有组件存储器011和处理器012的计算机设备01,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器011(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器011可以是计算机设备01的内部存储单元,例如该计算机设备01的硬盘或内存。在另一些实施例中,存储器011也可以是计算机设备01的外部存储设备,例如该计算机设备01上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,存储器011还可以既包括计算机设备01的内部存储单元也包括其外部存储设备。本实施例中,存储器011通常用于存储安装于计算机设备01的操作系统和各类应用软件,例如实施例二的gRPC接口的压力测试系统的程序代码等。此外,存储器011还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器012在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器012通常用于控制计算机设备01的总体操作。本实施例中,处理器012用于运行存储器011中存储的程序代码或者处理数据,例如gRPC接口的压力测试方法等。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储gRPC接口的压力测试系统,被处理器执行时实现实施例一的gRPC接口的压力测试方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种gRPC接口的压力测试方法,其特征在于,包括:
获取gRPC接口的通信协议定义文件,所述通信协议定义文件为基于 protobuf序列化协议开发的proto文件,所述proto文件能在进行压力测试时无需对开发过程中接口的通信协议定义文件进行格式转换;
获取测试所述gRPC接口的测试参数;
发送所述通信协议定义文件和所述测试参数至压测容器,其中,压力测试工具运行于所述压测容器上;
调用所述压力测试工具,以根据所述通信协议定义文件和所述测试参数形成测试请求,发送所述测试请求至所述gRPC接口,并接收所述gRPC接口返回的测试响应,根据所述通信协议定义文件解析所述测试响应;以及
获取所述测试响应的解析结果形成测试报告。
2.根据权利要求1所述的gRPC接口的压力测试方法,其特征在于,获取测试所述gRPC接口的测试参数的步骤包括:
解析所述通信协议定义文件,以得到多个参数类型和多个接口参数;
展示测试参数接收窗口,其中,所述测试参数接收窗口包括对应所述参数类型的参数输入框和对应所述参数类型的参数选择项,每个所述参数选择项对应一个所述接口参数;
将所述参数输入框接收到的参数和被选择的所述参数选择项所对应的接口参数作为所述测试参数。
3.根据权利要求2所述的gRPC接口的压力测试方法,其特征在于,
在所述测试参数接收窗口中,设置所述参数输入框的所述参数类型包括:所述gRPC接口的接口地址、端口和请求内容;
设置所述参数选择项的所述参数类型包括:所述gRPC接口的类名、包名、服务名称、请求方法、请求消息体和返回消息体。
4.根据权利要求2所述的gRPC接口的压力测试方法,其特征在于,所述通信协议定义文件包括主文件和若干依赖文件,
获取gRPC接口的通信协议定义文件的步骤包括:获取所述主文件和所述依赖文件;
解析所述通信协议定义文件的步骤包括:解析所述主文件中标识依赖文件数量的参数;
获取所述依赖文件的步骤包括:当所述主文件中标识依赖文件个数的数量不为零时,监测并提示所述依赖文件的数量。
5.根据权利要求1所述的gRPC接口的压力测试方法,其特征在于,所述通信协议定义文件均为proto文件,所述压力测试工具基于Jmeter实现。
6.根据权利要求5所述的gRPC接口的压力测试方法,其特征在于,在发送所述通信协议定义文件和所述测试参数至压测容器的步骤之前,所述方法还包括:
将所述通信协议定义文件由proto文件转换为多个java文件;
将每个所述java文件编译为java字节码文件;
将所有的所述java字节码文件打包形成一个jar包;
将所述测试参数组装形成jmx文件,
其中,发送所述通信协议定义文件和所述测试参数至压测容器具体为:发送所述jar包和所述jmx文件至所述压测容器。
7.根据权利要求5所述的gRPC接口的压力测试方法,其特征在于,
根据所述通信协议定义文件和所述测试参数形成测试请求的步骤包括:通过所述jmx文件获取所述测试参数,其中,所述测试参数包括参数类型为接口地址、端口、包名、服务名称、请求方法、请求内容、类名、请求消息体和返回消息体的参数值,其中,所述请求内容的格式为JSON格式;将所述请求内容由JSON格式转换为proto对象。
8.根据权利要求7所述的gRPC接口的压力测试方法,其特征在于,
根据所述通信协议定义文件解析所述测试响应的步骤包括:将所述测试响应proto对象解析为JSON格式。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至8任一项所述方法的步骤。
CN201910248605.5A 2019-03-29 2019-03-29 gRPC接口的压力测试方法、计算机设备和存储介质 Active CN111752820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910248605.5A CN111752820B (zh) 2019-03-29 2019-03-29 gRPC接口的压力测试方法、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910248605.5A CN111752820B (zh) 2019-03-29 2019-03-29 gRPC接口的压力测试方法、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN111752820A CN111752820A (zh) 2020-10-09
CN111752820B true CN111752820B (zh) 2024-01-19

Family

ID=72672523

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910248605.5A Active CN111752820B (zh) 2019-03-29 2019-03-29 gRPC接口的压力测试方法、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN111752820B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765023B (zh) * 2021-01-19 2023-10-03 上海幻电信息科技有限公司 测试用例生成方法、装置
CN113626322A (zh) * 2021-07-30 2021-11-09 北京达佳互联信息技术有限公司 基于二进制数据通信的接口测试方法、装置、设备及介质
CN114691529B (zh) * 2022-05-31 2022-08-02 云账户技术(天津)有限公司 一种gRPC接口性能测试的方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149312A (zh) * 2007-10-30 2008-03-26 南京理工大学 密封机柜散热用热交换器性能测试系统
CN106294177A (zh) * 2016-08-22 2017-01-04 腾讯科技(深圳)有限公司 一种接口的压力测试方法及测试设备
CN106383786A (zh) * 2016-09-27 2017-02-08 北京金山安全软件有限公司 一种接口压力性能测试方法、装置及电子设备
CN106874176A (zh) * 2015-12-14 2017-06-20 阿里巴巴集团控股有限公司 智能测试方法和装置
CN107577602A (zh) * 2017-08-25 2018-01-12 上海斐讯数据通信技术有限公司 一种app接口的测试方法、装置及系统
CN108614776A (zh) * 2018-05-04 2018-10-02 艺龙网信息技术(北京)有限公司 跨语言协议测试请求的动态构建方法和系统
CN109032920A (zh) * 2018-06-05 2018-12-18 北京奇安信科技有限公司 一种用于对协议接口进行测试的方法及装置
CN109189684A (zh) * 2018-08-28 2019-01-11 四川长虹电器股份有限公司 基于Python的接口自动化测试方法
CN109491894A (zh) * 2018-10-25 2019-03-19 深圳壹账通智能科技有限公司 一种接口测试的方法及设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340680B2 (en) * 2004-06-14 2008-03-04 Sap Aktiengesellschaft SAP archivlink load test for content server
US9521062B2 (en) * 2011-09-23 2016-12-13 Roche Diabetes Care, Inc. Communication test framework
US10439887B2 (en) * 2016-02-02 2019-10-08 Sungard Availability Services, Lp Generic test framework for service interfaces
US10002069B2 (en) * 2016-09-23 2018-06-19 International Business Machines Corporation Automated testing of application program interface

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149312A (zh) * 2007-10-30 2008-03-26 南京理工大学 密封机柜散热用热交换器性能测试系统
CN106874176A (zh) * 2015-12-14 2017-06-20 阿里巴巴集团控股有限公司 智能测试方法和装置
CN106294177A (zh) * 2016-08-22 2017-01-04 腾讯科技(深圳)有限公司 一种接口的压力测试方法及测试设备
CN106383786A (zh) * 2016-09-27 2017-02-08 北京金山安全软件有限公司 一种接口压力性能测试方法、装置及电子设备
CN107577602A (zh) * 2017-08-25 2018-01-12 上海斐讯数据通信技术有限公司 一种app接口的测试方法、装置及系统
CN108614776A (zh) * 2018-05-04 2018-10-02 艺龙网信息技术(北京)有限公司 跨语言协议测试请求的动态构建方法和系统
CN109032920A (zh) * 2018-06-05 2018-12-18 北京奇安信科技有限公司 一种用于对协议接口进行测试的方法及装置
CN109189684A (zh) * 2018-08-28 2019-01-11 四川长虹电器股份有限公司 基于Python的接口自动化测试方法
CN109491894A (zh) * 2018-10-25 2019-03-19 深圳壹账通智能科技有限公司 一种接口测试的方法及设备

Also Published As

Publication number Publication date
CN111752820A (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN111083225B (zh) 在物联网平台中的数据处理方法、装置及物联网平台
CN109933522B (zh) 一种自动化用例的测试方法、测试系统及存储介质
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
CN111428462B (zh) 通讯协议模板构建的方法及终端设备
CN111752820B (zh) gRPC接口的压力测试方法、计算机设备和存储介质
US9652364B1 (en) Cloud service for mobile testing and debugging
EP2808790A2 (en) Migration assessment for cloud computing platforms
US8660833B2 (en) Method, computer program product and apparatus for providing an interactive network simulator
CN107526676B (zh) 一种跨系统测试方法及装置
CN111813701B (zh) 基于http的接口测试方法、装置、计算机设备及存储介质
CN114500690B (zh) 接口数据处理方法、装置、电子设备及存储介质
US20120246653A1 (en) Generic command parser
US20130145381A1 (en) Web api server program, web api publication method
CN112565443A (zh) 物联网数据解析方法、装置、设备及存储介质
CN110955409B (zh) 在云平台上创建资源的方法和装置
CN112631590B (zh) 组件库生成方法、装置、电子设备和计算机可读介质
CN106919511B (zh) 应用的模拟方法、模拟应用及其运作方法以及模拟系统
CN113971110A (zh) 接口测试方法、装置、设备与计算机可读存储介质
CN110287069A (zh) Esb接口自动化测试方法、服务器及计算机可读存储介质
CN108427639B (zh) 自动化测试方法、应用服务器及计算机可读存储介质
CN107977260B (zh) 任务提交方法及装置
CN111859205A (zh) 一种用于批量处理任务的解析方法及设备
WO2021093672A1 (zh) 外部系统的嵌入方法、工作流系统、设备及计算机可读存储介质
CN112699027A (zh) 一种接口测试方法、装置、设备及可读存储介质
CN113918245A (zh) 一种数据调用方法、装置、设备及计算机可读存储介质

Legal Events

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