CN114416561A - 一种压力测试配置方法和装置 - Google Patents
一种压力测试配置方法和装置 Download PDFInfo
- Publication number
- CN114416561A CN114416561A CN202210060288.6A CN202210060288A CN114416561A CN 114416561 A CN114416561 A CN 114416561A CN 202210060288 A CN202210060288 A CN 202210060288A CN 114416561 A CN114416561 A CN 114416561A
- Authority
- CN
- China
- Prior art keywords
- test
- interface
- target
- pressure
- target 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种压力测试配置方法和装置,该方法包括:获取压力测试需求,根据目标测试接口的类型,可以0代码0基础门槛自动生成该目标测试接口类型对应的压测脚本,获取压力测试需求对应的测试配置信息,按照该测试配置信息对目标测试接口进行配置,进而可以实现对压测链路上的目标测试服务器可以根据目标测试业务流程运行该压测脚本自动化完成压力测试,实现有效监控,提高压测效率。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种压力测试配置方法和装置。
背景技术
目前,软件系统产品上线的时候,需要进行性能测试,尤其随着互联网业务量指数极大规模增长,服务器集群的性能面临着巨大挑战,因此,在各系统上线前进行充分必要的性能测试是维护系统稳定的重要保障。
其中,压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,基于不同的压测需求从而达到性能缺陷发现、性能调优、容量规划、版本性能比较等目的,是通过搭建与实际环境相似或等比例可与线上环境可换算的软硬件条件配置的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,以及系统可以承受的压力情况。
现有技术中,常用的压力测试方法首先先通过专业的测试人员编写测试脚本,然后采用手工压测的方式去完成接口测试,来实现系统的优化和试容,最终根据测试结果人工绘制相应的测试报告。但是,对于有些接口的脚本代码编写门槛有点高,对测试人员的要求较高,而且每一步的测试流程的配置都需要测试人员手工完成,缺乏一种可以自动化实现压力测试的方法。
发明内容
本发明的目的在于提供一种压力测试配置方法和装置,以能够根据目标测试业务流程运行该压测脚本自动化完成压力测试,实现有效监控,提高压测效率。
第一方面,实施例提供一种压力测试配置方法,包括:获取压力测试需求,压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程;确定目标测试接口的类型,生成目标测试接口对应的压测脚本;获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口,以使目标测试服务器能够根据目标测试业务流程运行压测脚本完成压力测试。
在一个实施例中,根据目标测试接口的类型生成对应的压测脚本的步骤,包括:获取目标测试接口的Jar包以及dubbo接口名;根据目标测试接口的jar包以及dubbo接口名解析dubbo接口类文件,得到dubbo接口所有的被测方法;从dubbo接口的所有的被测方法中确定出目标被测方法;根据dubbo接口名和目标被测方法,递归解析出目标被测方法的参数与参数类型。
在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口的步骤,包括:获取目标测试接口对应的压测场景配置信息;根据加压方式和增压方式配置目标测试接口的压测流量和停止条件。
在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口的步骤,还包括:获取目标测试接口返回测试结果的检查点信息;根据检查点信息配置目标测试接口,确定配置后的目标测试接口返回的测试结果符合预期返回结果。
在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试服务器的步骤,还包括:获取目标测试服务器的类型,根据目标测试服务器的类型确定目标测试接口和目标测试服务器的性能指标,获取性能指标的测试目标值;根据测试目标值配置目标测试接口。
在一个实施例中,获取目标测试接口的测试配置信息的步骤还包括:获取目标测试接口和目标测试服务器各项性能指标的测试报告的订阅信息;根据订阅信息配置目标测试接口。
在一个实施例中,目标测试业务为网约车出行服务业务,在根据测试配置信息配置目标测试接口之前,上述方法还包括:根据网约车出行服务业务的流程,获取包括订单数据、脱敏处理后的乘客数据以及司机数据中的至少一种压测构造数据;其中,司机数据是根据司机模拟器所生成的与网约车出行业务车辆分布在不同区域以及不同服务状态的司机数据;将压测构造数据和压测脚本分发至压测机集群,通过压测机集群按照测试配置信息运行网约车出行业务的流程完成压力测试。
第二方面,实施例提供一种压力测试配置装置,该装置包括:压力测试需求模块、压测脚本生成模块和压力测试配置模块;
压力测试需求模块用于获取压力测试需求和测试配置信息,压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程;
压测脚本生成模块用于确定目标测试接口的类型,生成目标测试接口对应的压测脚本,其中,压测脚本是通过可视化界面接收到的脚本参数所生成的,脚本参数是根据不同类型的目标测试接口所对应的类文件所解析得到的;
压力测试配置模块用于获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口,以使目标测试服务器能够根据目标测试业务流程运行压测脚本完成压力测试。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如第一方面所述的方法的步骤。
第四方面,本发明实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的方法的步骤。
根据本发明提供的具体实施例,本发明实施例具有以下技术效果:
1)本发明完成了零编码自动实现http、dubbo、kafka接口的脚本,使得压测脚本的编写工作持续简化,极大提高了性能测效率,节省人工成本。
2)大大降低了性能测试工具配置难度和学习使用成本,降低了性能测试的门槛,测试人员无需本地安装各种性能测试工具,也无需去学习安装各类监控,并且研发人员在接口开发阶段也能验证接口性能,提前发现性能问题以规避性能风险。
3)有完善的加压方式,提供的梯度线程加压与梯度tps加压方式,满足各种目的的压测需求。
4)快捷添加各类型服务器监控指标,监控实时化、定制化、多样化、自动化,完全满足公司性能测试监控需求,更加全面、实时的掌握各类型服务器和应用的执行状态。
5)脚本调试与启动压测任务更方便快捷,脚本编辑完成后,可以一键调试、一键启动压测。
6)数据工厂海量的数据供给脚本进行参数值数据构造,使得业务场景的构造更加贴近线上真实流量。
7)测试报告统一并规范:多维度统计方便,进行性能瓶颈定位与分析,便于归档以供查询历史性能数据。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1提供了一种压力测试配置方法的应用场景图;
图2提供了一种压力测试配置方法的流程示意图一;
图3提供了一种压力测试配置方法的流程示意图二;
图4提供了一种压力测试配置方法的流程示意图三;
图5提供了一种压力测试配置方法的流程示意图四;
图6提供了一种压力测试配置方法的流程示意图五;
图7提供了一种压力测试配置方法的流程示意图六;
图8提供了一种压力测试配置方法的流程示意图七;
图9提供了一种压力测试配置方法的流程示意图八;
图10提供了一种压力测试链路的结构示意图一;
图11提供了一种压力测试配置装置的结构示意图一;
图12提供了一种压力测试配置装置的结构示意图二;
图13提供了一种压力测试配置装置的电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请实施例提供了一种压力测试配置方法,执行主体为压力测试配置装置。
在一种场景中,压力测试配置装置可以为电子设备,该电子设备可以为服务器。
在一些实施例中,服务器,可以是一台服务器,也可以是由多台服务器组成的服务器集群,还可以一个云计算服务中心。本申请实施例在此对服务器的具体形式不做限定。
图1是本发明一示例性实施例示出的压力测试配置方法的应用场景图,如图1所示,压力测试平台的基本架构主要包括:相互通信连接的压力测试配置装置10、测试业务流程对应的多个目标测试服务器20以及压力机集群30,通信网络可以是无线通信网络或者光纤通信网络。其中,压力测试配置装置10是本发明实施例方法的执行主体用于进行压力测试配置,目标测试服务器集群20包括多个目标测试服务器,主要用于按照压力测试配置装置10的压力测试配置在运行测试业务流程进行压力测试的性能指标。压力机集群主要用于按照压力测试配置进行发压。
其中,该压力测试平台有六个主要模块功能,具体如下:
一、数据工厂,提供海量的基础数据供压测流量构造。
1)实现了按需定制的订单数据:
各种状态的订单:未派单、已派单、开始服务、开始计费、结束计费、订单结算待支付、待评价、撤单等。
各种类型的订单:实时单、预约单、拼车单等。
各个环境的订单:测试环境1,测试环境2,测试环境3,性能测试环境等。
2)脱敏处理的乘客数据。
脱敏的乘客姓名、手机号、uid、token、订单数据。
3)自造的司机数据。
此功能是派单、分单功能测试、性能测试必不可少的工具。
不同位置的司机:指定城市指定区域的司机。
不同状态的司机:只上线不听单的司机、上线听单的司机、只接实时单的司机。
4)当性能测试环境数据量过大时,定时进行数据清理。
二、区别服务器类型,分类监控,统一管理。
本压力测试平台按照不同的服务器类型按需自定义性能数据采集脚本,远程监控服务自动部署,性能数据自动采集上传,获取性能测试过程中的各种性能指标数据。
本压力测试平台可以根据不同的服务器类型定制各类监控:应用服务器、mysql数据库监控、Kafka服务器监控、缓存服务器与流量服务器的监控。不同的服务器监控指标不同。数据监控收集方案如下:
三、单接口压测场景代码迅速生成。
1)压测流量构造与迅速停止条件
TPS模式:通过分段增加TPS达到梯度加压的目的。
线程模式:通过分段增加发压线程数达到迅速找到接口性能拐点的目的。
压测流量的调整秒级生效。
压测流量秒级及时停止。
2)压测脚本编写。
本压力测试平台是web版的压测平台,测试同学无需手动安装任何发压工具与监控工具,也无需写任何代码,就按照提示填写就可以实现
创建、编辑、复制http、dubbo、kafka接口性能脚本。
3)选择需要监控的服务器。
4)设置测试通过阈值标准。
5)压测脚本分发到多台发压机器,实现多服务器集群发压达到指定压力目的。
四、多链路混合接口压测场景编排。
编排复用单接口测试用例,实现复杂场景的性能压测。
五、详尽的测试报告自动生成。
1)压力机实时性能监控指标:接口tps、响应时间、错误数、线程数随时间变化趋势。
2)被监控服务器性能指标:服务器cpu、内存、负载、磁盘io、数据库服务器连接数趋势图。
3)被监控服务的性能指标:服务进程cpu占用率、内存(RES值与VIRT值)、jvm堆。
4)内存与非堆内存、fullgc与yonggc次数与时间趋势图。
5)各接口历史版本性能变化可追溯与查看。
6)自动生成测试报告,测试报告多维度统计分析并进行错误诊断。
六、实现了自动向订阅人员发送邮件版测试报告。
根据压测计划编写中订阅邮件人,在测试完成后自动向订阅人邮箱发送测试结果报告。
图2是本发明一示例性实施例示出的压力测试配置方法的流程示意图,本实施例中方法的执行主体可以是图1所示实施例中的压力测试平台,该压力测试平台可以应用于网约车出行服务系统。
S201,获取压力测试需求,压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程。
具体的,当用户需要测试接口时,需要先定义压力测试需求,该压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程。其中,目标测试业务流程主要是针对网约车出行服务系统所提供的乘车服务业务,例如,乘车分单服务、司机上线、乘客上线、费用计算、里程计算以及乘车评价等等业务。目标测试服务器可以包括多个类型的服务器,例如,应用服务器、mysql数据库监控、Kafka服务器监控、缓存服务器与流量服务器的监控,不同的服务器的监控指标不同。目标测试接口可以包括多个类型的接口,例如,可以是http接口、dubbo接口和kafka接口等。
S202,确定目标测试接口的类型,生成目标测试接口对应的压测脚本。
其中,压测脚本是通过可视化界面接收到的脚本参数所生成的,脚本参数是根据不同类型的目标测试接口所对应的类文件所解析得到的。
具体的,上述压测脚本是通过可视化界面接收到的接口类名、方法名、脚本参数类型与参数值所生成的,该脚本方法名、参数类型与参数值是根据不同类型的目标测试接口所对应的类文件通过java泛化调用所解析得到的,参数值视业务类型与业务需要从压测数据工厂获得并与参数字段一一对应。根据压力测试需求中的接口名称,确定该目标测试接口的类型,例如,目标测试接口可以包括可以是http接口、dubbo接口和kafka接口等,具体可以根据压力测试需求确定该目标测试接口的类型,可以通过web页面自动化生成该目标测试接口的压测脚本。例如,通过在该web页面创建、编辑、复制http、dubbo、kafka接口性能脚本,无需手动安装任何发压工具与监控工具,也无需写任何代码,就按照提示填写就可以实现。
S203,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口,以使目标测试服务器能够根据目标测试业务流程运行压测脚本完成压力测试。
具体的,获取压力测试需求对应的测试配置信息,具体可以包括目标测试接口的加压方式和增压方式等,与目标测试服务器对应的连接方式和所要监控的性能指标等,与目标测试业务流程相关的数据构建方式等等。根据上述目标类型测试接口的加压方式和增压方式对目标测试接口进行配置,其中,该加压方式可以包括吞吐量TPS模式和线程模式等加压方式进行分段增压或者一次性增压。根据目标测试服务器的类型不同,也可以采用不同的连接方式,即采用的接口类型不同,还可以监控不同的性能指标。根据不同的测试业务流程构建不同的测试数据集,具体可以根据不同的目标测试需求来获取不同的测试配置信息,最终以使目标测试服务器能够根据目标测试业务流程运行压测脚本完成压力测试。
本实施例提供一种压力测试配置方法,该方法包括:获取压力测试需求,根据目标测试接口的类型,可以0代码0基础门槛自动生成该目标测试接口类型对应的压测脚本,按照该测试配置信息对目标测试接口进行配置,进而可以实现对压测链路上的目标测试服务器可以自动化实现根据目标测试业务流程运行该压测脚本完成压力测试,实现有效监控,提高压测效率。
如图3所示,在一个实施例中,目标测试接口的类型包括http接口类型,dubbo接口类型以及kafka接口类型,其中,目标测试接口的类型为dubbo接口类型的情况下,根据所述目标测试接口的类型生成对应的压测脚本的步骤,包括:
S301,获取目标测试接口的Jar包以及dubbo接口名;
S302,根据目标测试接口的jar包以及dubbo接口名解析dubbo接口类文件,得到dubbo接口所有的被测方法;
S303,从dubbo接口的所有的被测方法中确定出目标被测方法;
S304,根据dubbo接口名和目标被测方法,递归解析出目标被测方法的参数与参数类型。
具体的,可以用java.net.URLClassLoader实现对外部jar包类加载,其中,增加DubboApi类,实现两个方法,方法一:根据指定的apijar包和用户输入的接口名,自动解析出此接口类所有方法。方法二:根据接口名和方法,解析出此方法的所有参数类型与参数字段值。
可以利用java的反射机制与泛型原理用jodd.io.findfile.ClassScanner实现对类、方法等遍历查找,只需要根据被测服务apijar包,便可自动解析出jar包包含的接口、方法名与参数类型。
增加DubboSetting类,获取并保存用户传入的dubbo参数设置,本实施例的方法还可以提供默认的dubbo参数配置,用户若无特殊用途,可以直接使用模板配置参数:dubbo协议、连接方式(通过指定服务提供方的url地址直连服务绕过注册中心或者通过注册中心连接)、请求超时时间、指定服务的版本、需要压测的接口、方法和方法参数类型与参数值。
增加CaocaoDubboSampler类,此类继承AbstractJavaSamplerClient,重写getDefaultParameters方法,可以根据上述步骤中dubbosetting类获取到的接口、方法、参数类型自动构造所需的参数名称和默认参数值。
重写SampleResult方法,上述增加DubboSetting类获取到dubbo协议、连接方式、请求超时时间、指定服务的版本构造连接dubbo服务的请求数据与响应数据格式。
本实施例通过上述步骤得到递归解析出目标被测方法的参数与参数类型,获取数据工厂的数据,对目标测试方法的参数值进行参数化,得到压测脚本,使得测试人员只需要上传被测服务的apijar包,输入被测接口名,系统便自动解析出接口所有方法,并根据选择的方法名泛化自动递归解析出方法所带参数,方便进行性能压测脚本的参数化。
如图4所示,在一个实施例中,根据测试配置信息配置目标测试接口的步骤之前,上述方法还包括:
步骤S401、获取目标测试接口的接口参数;
步骤S402、根据接口参数从数据工厂中获取与接口参数对应的数据,其中,所述接口参数包括多个字段。
具体的,根据目标测试接口的类型不同,其对应的接口参数不同,可以根据目标测试接口的接口参数,可以直接从数据工厂中获取与接口参数对应的数据,参数化数据文件从数据工厂获取。例如,该目标测试接口名:com.caocao.demand.api.DemandXXXApi.commonEstimatePrice,其接口参数可以包括多个字段,具体可以包括:用户ID,用户身份验证令牌token,起点经度startLg,起点纬度startLt终点经度endLg、终点纬度endLt等字段。那单个用户请求就是uid=111,token=23r3sffsa,startLg=123.443,startLt=(23,3),是从数据工厂获取对接口脚本参数化的数据,如果实际使用过程中,不对接口脚本参数化,这样压力测试就是一条数据在不停的做业务处理,和实际线上大规模用户并发请求完全不符,而本实施例通过对脚本参数化,更加真实地模拟真实业务处理流程,使得测试更便捷,更高效。
如图5所示,在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口的步骤,包括:
步骤S501、获取目标测试接口对应的压测场景配置信息;
其中,压测场景配置信息包括加压方式和增压方式。具体的,加压方式包括TPS模式和线程模式,TPS模式:通过分段增加TPS达到梯度加压的目的;线程模式:通过分段增加发压线程数达到迅速找到接口性能拐点的目的。压测流量的调整可以秒级生效,压测流量也可以秒级及时停止。
步骤S502、根据加压方式和增压方式配置目标测试接口的压测流量和停止条件。
具体的,将用户选择的加压方式和增压方式配置目标测试接口的压测流量和停止条件,可以通过压力机来实现加压方式和增压方式。
本实施例通过上述步骤可以根据目标类型测试接口对应的压测场景配置信息,压测场景配置信息包括加压方式和增压方式,根据加压方式和增压方式配置目标测试接口的压测流量和停止条件,使得可以快速便捷配置目标测试接口。
如图6所示,在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口的步骤,还包括:
步骤S601、获取目标测试接口返回测试结果的检查点信息;
步骤S602、根据检查点信息配置目标测试接口,确定配置后的目标测试接口返回的测试结果符合预期返回结果。
具体的,可以根据目标类型测试接口对应的压测场景配置信息,再获取目标测试接口返回测试结果的检查点信息,例如,Tests本质上是JavaScript代码,通过编写测试代码,每一个Tests返回True,或是False,以判断接口返回的正确性。其实,每一个Tests实际上就是一个检查点。根据检查点信息配置目标测试接口,确定配置后的目标测试接口返回的测试结果符合预期返回结果,进而可以判断系统的响应数据是否符合预期。
本实施例通过上述步骤获取目标测试接口返回测试结果的检查点信息,根据检查点信息配置目标测试接口,确定配置后的目标测试接口返回的测试结果符合预期返回结果,使得可以对检查结果或目标测试接口配置的正确性实现自动化校验,从而大大提高测试效率及准确率。
如图7所示,在一个实施例中,获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试服务器的步骤,还包括:
步骤S701、获取目标测试服务器的类型,根据目标测试服务器的类型确定目标测试接口和目标测试服务器的性能指标,获取性能指标的测试目标值;
步骤S702、根据测试目标值配置目标测试接口。
具体的,按照不同的目标测试服务器的类型,可以按需自定义配置目标测试接口从而获取不同的目标测试服务器的性能指标,并通过目标测试服务器远程监控服务自动部署,性能数据自动采集上传,获取性能测试过程中的各种性能指标数据。
其中,目标测试服务器的类型包括:应用服务器、mysql数据库监控、Kafka服务器监控、缓存服务器与流量服务器的监控。不同的服务器监控指标不同。对应的数据监控收集方案如下:
被监控目标测试服务器的性能指标包括:服务器cpu、内存、负载、磁盘io、数据库服务器连接数趋势图;针对不同的性能指标还可以设置通过阈值,便于自动在测试报告里判断此次测试是否通过。另外,还可以对于目标测试服务器的被监控服务的性能指标:采集性能数据的脚本包括对所有服务器最基本的性能数据收集:CPU利用率趋势图(CPU总使用率,CPU系统使用率与CPU应用使用率),内存利用率(RES值与VIRT值),负载(load)趋势图,磁盘io(util利用率,io读、写速度,io每秒读写次数)等。除了以上基础性能外,根据服务器类型特殊区别监控的,例如,mysql服务器:qps趋势图、读扫描行数、活动的客户端连接线程数、磁盘空间使用率、连接使用率、慢sql;kafka服务器:各topic队列堆积情况;redis缓存服务器:每秒执行命令总数、qps、阻塞连接数、错误数、慢sql;应用服务器:jvm堆与非堆内存使用趋势图、java服务进程fullgc次数与yonggc次数趋势图、cpu占用前5的线程堆栈信息;流量服务器:只需采集基本的性能数据。内存与非堆内存、fullgc与yonggc次数与时间趋势图;各目标测试接口历史版本性能变化可追溯与查看;最终可以自动生成测试报告,对测试报告多维度统计分析并进行错误诊断。
本实施例通过上述步骤获取目标测试服务器的类型,根据目标测试服务器的类型确定目标测试接口和目标测试服务器的性能指标,获取性能指标的测试目标值,根据测试目标值配置目标测试接口,使得可以需求自定义被测服务器的性能指标,自动判断测试结果,生成测试报告,从而大大提高测试效率及准确率。
如图8所示,在一个实施例中,获取目标测试接口的测试配置信息的步骤还包括:
步骤S801、获取目标测试接口和目标测试服务器各项性能指标的测试报告的订阅信息;
步骤S802、根据订阅信息配置目标测试接口。
具体的,可以获取目标测试接口和目标测试服务器各项性能指标的测试报告的订阅信息,其中,订阅信息包括测试报告的内容以及订阅方式,设置是否订阅测试报告,如果选择订阅,测试结束后,除了在平台生成可供大家查阅的测试报告外,还会自动生成邮件版的测试报告到订阅者的邮箱。
本实施例通过上述步骤获取目标测试接口和目标测试服务器各项性能指标的测试报告的订阅信息,根据订阅信息配置所述目标测试接口,自动生成测试报告,发送测试报告到订阅者的邮箱,从而大大提高测试效率及测试反馈率。
需要说明的是,还可以配置加压机台数,配置测试计划,保存测试计划。系统自动根据测试计划,自动生成费用预估duboo接口的jmx压测脚本文件与供脚本参数化的数据构造文件(1000000行数据)。根据加压机器台数,分发相同jmx脚本和系统自动切割后的数据构造文件(1000000/n行)到各个加压机。
如图9所示,在一个实施例中,目标测试业务为网约车出行服务业务,在根据测试配置信息配置目标测试接口之前,上述方法还包括:
步骤S901、根据网约车出行服务业务的流程,获取包括订单数据、脱敏处理后的乘客数据以及司机数据中的至少一种压测构造数据。
其中,司机数据是根据司机模拟器所生成的与网约车出行服务业务车辆分布在不同区域以及不同服务状态的司机数据;
步骤S902、将压测构造数据和压测脚本分发至压测机集群,通过压测机集群按照测试配置信息运行网约车出行服务业务的流程完成压力测试。
具体的,目标测试业务为网约车出行服务业务,需要构建大量的网约车出行服务业务的压测构造数据,该压测构造数据可以是csv文件和数据库存储,简称压测数据工厂。可以通过数据工厂提供海量的基础数据供压测流量构造,可以按需定制的订单数据,例如,各种状态的订单:未派单、已派单、开始服务、开始计费、结束计费、订单结算待支付、待评价、撤单等。各种类型的订单:实时单、预约单、拼车单等。各个环境的订单:测试环境1,测试环境2,测试环境3,性能测试环境等。还有严格脱敏处理并通过法务审核的乘客数据:脱敏的乘客姓名、手机号、uid、token、订单数据;自造的司机数据,根据司机模拟器所生成的与网约车出行服务业务车辆分布在不同区域以及不同服务状态的司机数据,可以包括派单、分单功能测试、性能测试等网约车出行服务业务,不同位置的司机:指定城市指定区域的司机,不同状态的司机:只上线不听单的司机、上线听单的司机、只接实时单的司机。当性能测试环境数据量过大时,定时进行数据清理。
将各发压机数据差异化并且唯一的压测构造数据和压测脚本分发至压测机集群,通过压测机集群按照测试配置信息运行网约车出行服务业务的流程完成压力测试。测试启动后,用户在测试报告列表可以观察到实时性能数据,实时的被监控服务器的性能数据,可以包括实时的加压性能数据,tps趋势图、响应时间趋势图与错误率趋势图,测试结束后,会自动生成完整的测试报告到订阅报告人的邮箱。
基于前述实施例所述的压力测试配置方法,本发明实施例还提供一种针对专车分单服务dubbo接口费用预估压测测试流程,具体如下:
假设接口名:DemandXXXApi。
接口参数:uid(用户uid),token,startLg(起点经度),tartLt(起点纬度),endLg(终点经度),endLt(终点纬度)。
该压力测试需求包括一个4核8g的服务器费用预估单接口的性能情况,以便为分单服务线上扩容做参考。假定性能环境各服务器机器硬件配置与线上环境是等比例配置的。
步骤1、获取被测接口的业务调用链路,例如:费用预估接口调用链路,该链路如图10所示。
步骤2、获取目标接口服务部署的相关信息与调用超时时间限制等。
步骤3、创建测试计划,对压力测试进行配置。确定本接口是dubbo类型的接口,直接用系统内置的dubbo接口测试计划模板创建测试计划。
1)打开dubbo接口测试计划模板,设置加压方式,梯度增加线程方式加压。
2)设置dubbo接口服务器连接。
3)上传demand-center-api-1.9.4.BETA82.jar包,输入接口名,获取接口参数。
系统会自动根据jar包和接口名解析出接口参数。用java.net.URLClassLoader实现对外部jar包类加载,利用java的反射机制与泛型原理用jodd.io.findfile.ClassScanner实现对类、方法等遍历查找,只需要根据被测服务apijar包,便可自动解析出jar包包含的接口、方法名与方法参数,零编码实现jmeter的AbstractJavaSamplerClient类。
测试人员只需要上传被测服务的apijar包,输入被测接口名,系统便自动解析出接口所有方法,并根据选择的方法名自动递归解析出方法所带参数,方便进行性能压测脚本的参数。
4)对接口参数进行参数化。
分析接口参数,需要的数据是:uid(用户uid),startLg(起点经度),tartLt(起点纬度),endLg(终点经度)endLt(终点纬度),这些数据需要参数化掉,从上传的参数化文件获取。参数化数据文件从数据工厂获取。乘客数据工厂的MYSQL数据库存放了百万级测试环境的乘客相关数据与经纬度数据。
5)对接口的返回结果设置检查点,系统判断响应数据是否符合预期。
6)根据步骤1整理出的链路服务器,把这些链路上的服务器(已部署性能监控服务)添加到监控服务器列表。
监控的服务器数据来源于服务器管理列表,可以根据服务器的类型,部署相应监控。
7)设置测试通过的阈值标准。
按照提示信息结合服务的使用情况,设置通过阈值。系统会自动在测试报告里判断此次测试是否通过。
8)保存测试计划。
设置加压机台数(n台)。
设置是否订阅测试报告,如果选择订阅,测试结束后,除了在平台生成可供大家查阅的测试报告外,还会自动生成邮件版的测试报告到订阅者的邮箱。
保存测试计划。系统自动根据测试计划,自动生成费用预估duboo接口的jmx压测脚本文件与供脚本参数化的数据构造文件(1000000行数据)。根据加压机器台数,分发相同jmx脚本和系统自动切割后的数据构造文件(1000000/n行)到各个加压机。
9)并点击调试按钮进行脚本调试。
如果参数化数据读取符合预期,响应结果符合预期,脚本不报错,则认为调试通过。
如若不符合预期,可以重新编辑测试计划并保存后再调试,直到调试通过。
步骤3、启动测试。
测试启动后,用户在测试报告列表可以观察到实时性能数据。
实时的被监控服务器的性能数据。
实时的加压性能数据(tps趋势图、响应时间趋势图与错误率趋势图)。
测试结束后,会自动生成完整的测试报告到订阅报告人的邮箱。
基于前述实施例所述的压力测试配置方法,本发明实施例还提供一种压力测试配置装置。如图11所示,该装置包括:压力测试需求模块11、压测脚本生成模块12和压力测试配置模块13;
压力测试需求模块11用于获取压力测试需求和测试配置信息,压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程;
压测脚本生成模块12用于确定目标测试接口的类型,生成目标测试接口对应的压测脚本,其中,压测脚本是通过可视化界面接收到的脚本参数所生成的,脚本参数是根据不同类型的目标测试接口所对应的类文件所解析得到的;
压力测试配置模块13用于获取压力测试需求对应的测试配置信息,根据测试配置信息配置目标测试接口,以使目标测试服务器能够根据目标测试业务流程运行压测脚本完成压力测试。
在一个实施例中,所述目标测试接口的类型包括http接口类型,dubbo接口类型以及kafka接口类型,其中,目标测试接口的类型为dubbo接口类型的情况下,压测脚本生成模块12用于用于根据目标测试接口的类型生成对应的压测脚本的步骤,包括:获取目标测试接口的Jar包以及dubbo接口名;根据目标测试接口的jar包以及dubbo接口名解析dubbo接口类文件,得到dubbo接口所有的被测方法;从dubbo接口的所有的被测方法中确定出目标被测方法;根据dubbo接口名和所述目标被测方法,递归解析出所述目标被测方法的参数与参数类型。
如图12所示,在一个实施例中,本发明实施例提供的压力测试配置装置还包括:参数化模块14,该参数化模块14用于在根据测试配置信息配置所述目标测试接口的步骤之前,获取目标测试接口的接口参数,根据接口参数从数据工厂中获取与接口参数对应的数据,其中,所述接口参数包括多个字段。
在一个实施例中,压力测试配置模块13用于获取目标测试接口对应的压测场景配置信息,其中,压测场景配置信息包括加压方式和增压方式;根据加压方式和所述增压方式配置所述目标测试接口的压测流量和停止条件。
在一个实施例中,压力测试配置模块13用于获取目标测试接口返回测试结果的检查点信息;根据所述检查点信息配置目标测试接口,确定配置后的所述目标测试接口返回的测试结果符合预设阈值。
在一个实施例中,压力测试配置模块13用于获取目标测试服务器的类型,根据目标测试服务器的类型确定目标测试接口和目标测试服务器的性能指标,获取性能指标的测试目标值;根据测试目标值配置所述目标测试接口。
在一个实施例中,压力测试配置模块13用于获取目标测试接口和目标测试服务器各项性能指标的测试报告的订阅信息,其中,订阅信息包括测试报告的内容以及订阅方式;根据订阅信息配置目标测试接口。
如图12所示,在一个实施例中,本发明实施例提供的压力测试配置装置还包括:数据生成模块15,该数据生成模块15用于根据网约车出行服务业务的流程,获取包括订单数据、脱敏处理后的乘客数据以及司机数据中的至少一种压测构造数据;其中,司机数据是根据司机模拟器所生成的与网约车出行服务业务对应在不同区域以及不同服务状态的司机数据;将压测构造数据和压测脚本分发至压测机集群,通过压测机集群按照测试配置信息运行网约车出行服务业务的流程完成压力测试。
上述装置可以集成于服务器、计算机等设备,本发明在此不作限制。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,该压力测试配置装置的具体工作过程,可以参考前述方法实施例中所述的压力测试配置方法的对应过程,其效果与前述方法实施例中所述的压力测试配置方法的效果对应,因此,本发明中不再赘述。
应该理解,以上所描述的装置实施例仅仅是示意性的,本发明实施例所揭露的装置和方法,也可以通过其它的方式实现。例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得处理器执行时实现本发明各个实施例所述方法的全部或部分步骤。
也即,本领域内的技术人员应明白,本发明实施例可以采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式中的任一种实现。
可选地,本发明实施例还提供一种电子设备,该电子设备可以是服务器、计算机等设备,图13示出了本发明实施例提供的电子设备的结构示意图。
如图13所示,该电子设备可以包括:处理器1001、存储介质1002和总线1003,存储介质1002存储有处理器1001可执行的机器可读指令,当电子设备运行时,处理器1001与存储介质1002之间通过总线1003通信,处理器1001执行机器可读指令,以执行时执行如前述实施例中所述的压力测试配置方法的步骤。具体实现方式和技术效果类似,在此不再赘述。
为了便于说明,在上述电子设备中仅描述了一个处理器。然而,应当注意,一些实施例中,本发明中的电子设备还可以包括多个处理器,因此本发明中描述的一个处理器执行的步骤也可以由多个处理器联合执行或单独执行。例如,若电子设备的处理器执行步骤A和步骤B,则应该理解,步骤A和步骤B也可以由两个不同的处理器共同执行或者在一个处理器中单独执行。例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一处理器和第二处理器共同执行步骤A和B等。
在一些实施例中,处理器可以包括一个或多个处理核(例如,单核处理器(S)或多核处理器(S))。仅作为举例,处理器可以包括中央处理单元(Central Processing Unit,CPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)、专用指令集处理器(Application Specific Instruction-set Processor,ASIP)、图形处理单元(Graphics Processing Unit,GPU)、物理处理单元(Physics Processing Unit,PPU)、数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field ProgrammableGate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、控制器、微控制器单元、简化指令集计算机(Reduced Instruction Set Computing,RISC)、或微处理器等,或其任意组合。
基于此,本发明实施例还提供一种程序产品,该程序产品可以是U盘、移动硬盘、ROM、RAM、磁碟或者光盘等存储介质,存储介质上可以存储有计算机程序,计算机程序被处理器运行时执行如前述方法实施例中所述的压力测试配置方法的步骤。具体实现方式和技术效果类似,在此不再赘述。
以上仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种压力测试配置方法,其特征在于,所述方法包括:
获取压力测试需求,所述压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程;
确定所述目标测试接口的类型,生成所述目标测试接口对应的压测脚本,其中,所述压测脚本是通过可视化界面接收到的脚本参数所生成的,所述脚本参数是根据不同类型的目标测试接口所对应的类文件所解析得到的;
获取所述压力测试需求对应的测试配置信息,根据所述测试配置信息配置所述目标测试接口,以使所述目标测试服务器能够根据所述目标测试业务流程运行所述压测脚本完成压力测试。
2.根据权利要求1所述的方法,其特征在于,所述目标测试接口的类型包括http接口类型,dubbo接口类型以及kafka接口类型,其中,所述目标测试接口的类型为dubbo接口类型的情况下,所述根据所述目标测试接口的类型生成对应的压测脚本的步骤,包括:
获取所述目标测试接口的jar包以及dubbo接口名;
根据所述目标测试接口的jar包以及dubbo接口名解析所述dubbo接口类文件,得到所述dubbo接口所有的被测方法;
从所述dubbo接口的所有的被测方法中确定出目标被测方法;
根据所述dubbo接口名和所述目标被测方法,递归解析出所述目标被测方法的参数与参数类型。
3.根据权利要求2所述的方法,其特征在于,所述根据所述测试配置信息配置所述目标测试接口的步骤之前,所述方法还包括:
获取所述目标测试接口的接口参数;
根据接口参数从数据工厂中获取与所述接口参数对应的数据,其中,所述接口参数包括多个字段。
4.根据权利要求3所述的方法,其特征在于,获取所述压力测试需求对应的测试配置信息,根据所述测试配置信息配置所述目标测试接口的步骤,包括:
获取所述目标测试接口对应的压测场景配置信息,其中,所述压测场景配置信息包括加压方式和增压方式;
根据所述加压方式和所述增压方式配置所述目标测试接口的压测流量和停止条件。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取所述压力测试需求对应的测试配置信息,根据所述测试配置信息配置所述目标测试接口的步骤,还包括:
获取所述目标测试接口返回测试结果的检查点信息;
根据所述检查点信息配置所述目标测试接口,确定配置后的所述目标测试接口返回的测试结果符合预期返回结果。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述获取所述压力测试需求对应的测试配置信息,根据所述测试配置信息配置所述目标测试服务器的步骤,还包括:
获取所述目标测试服务器的类型,根据所述目标测试服务器的类型确定待测试的性能指标,获取所述性能指标的测试目标值;
根据所述测试目标值配置所述目标测试接口。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述获取所述目标测试接口的测试配置信息的步骤还包括:
获取所述目标测试服务器各项性能指标的测试报告的订阅信息,其中,所述订阅信息包括所述测试报告的内容以及订阅方式;
根据订阅信息配置目标测试接口。
8.根据权利要求1所述的方法,其特征在于,所述目标测试业务为网约车出行服务业务,在根据测试配置信息配置目标测试接口之前,上述方法还包括:
根据网约车出行服务业务的流程,获取包括订单数据、脱敏处理后的乘客数据以及司机数据中的至少一种压测构造数据;其中,司机数据是根据司机模拟器所生成的与网约车出行业务车辆分布在不同区域以及不同服务状态的司机数据;
将所述压测构造数据和所述压测脚本分发至压测机集群,通过所述压测机集群按照所述测试配置信息运行所述网约车出行服务业务的流程完成压力测试。
9.一种压力测试配置装置,其特征在于,所述装置包括:压力测试需求模块、压测脚本生成模块和压力测试配置模块;
所述压力测试需求模块用于获取压力测试需求,所述压力测试需求包括目标测试接口、目标测试服务器以及目标测试业务流程;
所述压测脚本生成模块用于生成所述目标测试接口对应的压测脚本,其中,所述压测脚本是通过可视化界面接收到的脚本参数所生成的,所述脚本参数是根据不同类型的目标测试接口所对应的类文件所解析得到的;
所述压力测试配置模块用于获取所述压力测试需求对应的测试配置信息,根据所述测试配置信息配置所述目标测试接口,以使所述目标测试服务器能够根据所述目标测试业务流程运行所述压测脚本完成压力测试。
10.一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行所述权利要求1-8任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210060288.6A CN114416561A (zh) | 2022-01-19 | 2022-01-19 | 一种压力测试配置方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210060288.6A CN114416561A (zh) | 2022-01-19 | 2022-01-19 | 一种压力测试配置方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416561A true CN114416561A (zh) | 2022-04-29 |
Family
ID=81275596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210060288.6A Pending CN114416561A (zh) | 2022-01-19 | 2022-01-19 | 一种压力测试配置方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416561A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467189A (zh) * | 2023-03-31 | 2023-07-21 | 青岛民航凯亚系统集成有限公司 | 接口调用完成性能压测及全链路数据监控的方法和系统 |
-
2022
- 2022-01-19 CN CN202210060288.6A patent/CN114416561A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467189A (zh) * | 2023-03-31 | 2023-07-21 | 青岛民航凯亚系统集成有限公司 | 接口调用完成性能压测及全链路数据监控的方法和系统 |
CN116467189B (zh) * | 2023-03-31 | 2023-12-05 | 青岛民航凯亚系统集成有限公司 | 接口调用完成性能压测及全链路数据监控的方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
Bertoli et al. | JMT: performance engineering tools for system modeling | |
US10116534B2 (en) | Systems and methods for WebSphere MQ performance metrics analysis | |
US9507374B1 (en) | Selecting most compatible synchronization strategy to synchronize data streams generated by two devices | |
CN107608901B (zh) | 基于Jmeter的测试方法及装置、存储介质、电子设备 | |
CN110532168B (zh) | 全链路接口压测方法、装置、计算机设备及存储介质 | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
CN102890503A (zh) | 一种控制器can接口功能自动测试系统及测试分析方法 | |
CN103186444A (zh) | 一种性能测试方法、测试平台及测试机 | |
CN111367792A (zh) | 一种测试方法、装置、存储介质及电子设备 | |
CN105099801A (zh) | 信息管理系统的测试系统和测试环境模拟方法 | |
CN113127356A (zh) | 压测方法、装置、电子设备及存储介质 | |
Mendes et al. | A framework for performance evaluation of complex event processing systems | |
CN114416561A (zh) | 一种压力测试配置方法和装置 | |
CN113704077A (zh) | 测试用例生成方法及装置 | |
Bielefeld | Online performance anomaly detection for large-scale software systems | |
CN102014163A (zh) | 一种基于事务驱动的云存储测试方法及系统 | |
CN115248782B (zh) | 一种自动化测试方法、装置及计算机设备 | |
CN117149406A (zh) | 资源调度方法、装置、系统、计算机设备及存储介质 | |
CN113282496B (zh) | 接口自动测试方法、装置、设备及存储介质 | |
CN114564387A (zh) | 一种针对OpenStack云平台的场景式自动化测试方法及系统 | |
CN115185907A (zh) | 一种前端资源管理方法、装置、设备以及存储介质 | |
CN114416441A (zh) | 实时数据库自动化测试方法、系统、电子设备及存储介质 | |
CN114942878A (zh) | 互联网应用的自动化性能测试方法及相关设备 | |
CN113220586A (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 |