CN111694748A - 压力测试方法及装置 - Google Patents

压力测试方法及装置 Download PDF

Info

Publication number
CN111694748A
CN111694748A CN202010560180.4A CN202010560180A CN111694748A CN 111694748 A CN111694748 A CN 111694748A CN 202010560180 A CN202010560180 A CN 202010560180A CN 111694748 A CN111694748 A CN 111694748A
Authority
CN
China
Prior art keywords
tested
interface
scene
data
service
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.)
Granted
Application number
CN202010560180.4A
Other languages
English (en)
Other versions
CN111694748B (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.)
Xingyin Information Technology Wuhan Co ltd
Original Assignee
Xingyin Information Technology Wuhan 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 Xingyin Information Technology Wuhan Co ltd filed Critical Xingyin Information Technology Wuhan Co ltd
Priority to CN202010560180.4A priority Critical patent/CN111694748B/zh
Publication of CN111694748A publication Critical patent/CN111694748A/zh
Application granted granted Critical
Publication of CN111694748B publication Critical patent/CN111694748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种压力测试方法及装置,用户可以通过压力测试系统的前端页面录取接口压力测试的相关数据,并在执行接口压力测试的过程中自动计算待测业务对应的所有待测场景所对应的场景数据。然后,依据各个待测场景的场景数据生成用于压力测试的接口请求数据,以及向待测业务所对应的接口并行发送该接口请求数据,获得压力测试结果。在执行压力测试过程中,测试人员可以直接在前端页面修改及执行压力测试任务,无需修改测试代码来修改数据,因此提高了测试效率。而且,该方案利用迭代计算方式自动计算得到各个待测场景的请求压力实际值,计算得到的请求压力实际值的准确率更高,减少了人工计算所需的时间,因此提高了测试效率和准确率。

Description

压力测试方法及装置
技术领域
本发明属于计算机技术领域,尤其涉及压力测试方法及装置。
背景技术
压力测试是指模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试应用,来测试被测系统的性能、可靠性、稳定性等。
服务系统发生故障将产生很大的损失,因此,为了保证服务系统的稳定,需要复服务系统进行并发访问压力测试。目前的压力测试方法都需要人工修改数据、计算测试过程中所需的数据等,导致测试过程消耗的时间长,因此测试效率极低。
发明内容
有鉴于此,本申请的目的在于提供一种压力测试方法及装置,以解决目前的压力测试方法需要人工修改数据或计算所需数据,效率低的技术问题,本申请公开的具体技术方案如下:
第一方面,本发明公开了一种压力测试方法,包括:
按照预设的各类数据规范,获取待测业务数据;其中,所述待测业务数据包括待测业务对应的接口数据和待测场景,所述待测业务数据通过数据录入页面获取用户录入的数据得到;
根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,迭代计算得到各个待测场景的场景数据;其中,所述场景数据包括所述待测业务对应的待测场景的请求压力实际值、所需容器的数量及所述待测业务下各个待测场景的请求压力比例;
依据所述待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,获得接口的压力测试结果,所述指定数量为所述待测业务对应的所需容器的数量。
可选地,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,包括:
获取所述待测业务对应的所有待测场景,以及每个所述待测场景下的接口数据;
按照各待测场景包含的接口数量由多至少的顺序,获取当前待测场景包含的具有调用关系的各个接口中的最后一级接口所对应的请求压力期望值作为当前请求压力实际值,并计算该当前待测场景中每个接口的请求压力期望值与所述当前请求压力实际值之间的请求压力差值;
若所述当前待测场景中任意一个接口所对应的请求压力差值为负值,则根据该负值重新分配该当前待测场景及与该当前待测场景包含相同接口的待测场景所对应的请求压力实际值,直到该当前待测场景中任意一个接口与新的请求压力实际值之间的请求压力差值都不为负值,得到该当前待测场景对应的目标请求压力实际值;
根据已经得到的场景的目标请求压力实际值,更新与所述待测业务对应的各个接口的请求压力期望值,并根据更新后的各个接口的请求压力期望值计算下一个待测场景对应的目标请求压力实际值,直到获得所述待测业务对应的所有待测场景对应的目标请求压力实际值。
可选地,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,还包括:
获取所述待测业务对应的所有待测场景对应的目标请求压力实际值;
以数值最大的目标请求压力实际值为基准值,计算所述待测业务对应的其它待测场景的目标请求压力实际值与所述基准值的比值,得到所述场景请求压力比例。
可选地,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,还包括:
根据所述待测业务对应的所有待测场景中的所有接口请求压力值总和,以及每个容器的并发设定值,计算得到所述待测业务所需容器的数量。
可选地,所述获得接口的压力测试结果,包括:
在所述待测业务中的每个待测场景测试完成后,生成测试结果日志文件;
根据所述待测业务对应的测试结果日志文件生成测试结果页面报告;
从所述测试结果页面报告中获取详细数据发送至页面进行展示,并存储至数据库中。
可选地,依据待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,包括:
依据所述待测业务对应的场景数据,生成接口压力测试任务,该接口压力测试任务包括任务执行时间参数,所述任务执行时间参数依据用户通过页面输入的任务执行参数中获得;
当当前事件满足所述任务执行时间参数后,并行发送接口压力测试任务所对应的接口请求数据。
可选地,依据待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,包括:
依据所述待测业务对应的场景数据生成多个接口压力测试任务,并在每个接口压力测试任务中添加执行状态;
当检测到所有接口压力测试任务对应的执行节点均处于可执行状态时,修改每个接口压力测试任务的执行状态为可执行,并在最后一个接口压力测试任务的执行状态修改请求中包括任务执行时间;
当当前时刻达到所述任务执行时间后,执行每个接口压力测试任务。
第二方面,本发明公开了一种压力测试装置,包括:
获取模块,用于按照预设的各类数据规范,获取待测业务数据;其中,所述待测业务数据包括待测业务对应的接口数据和待测场景,所述待测业务数据通过数据录入页面获取用户录入的数据得到;
计算模块,用于根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,迭代计算得到各个待测场景的场景数据;其中,所述场景数据包括所述待测业务对应的待测场景的请求压力实际值、所需容器的数量及所述待测业务下各个待测场景的请求压力比例;
请求压力测试模块,用于依据所述待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,获得接口的压力测试结果,所述指定数量为所述待测业务对应的所需容器的数量。
可选地,所述计算模块,包括:
获取所述待测业务对应的所有待测场景,以及每个所述待测场景下的接口数据;
第一获取子模块,用于按照各待测场景包含的接口数量由多至少的顺序,获取当前待测场景包含的具有调用关系的各个接口中的最后一级接口所对应的请求压力期望值作为当前请求压力实际值,并计算该当前待测场景中每个接口的请求压力期望值与所述当前请求压力实际值之间的请求压力差值;
第一场景请求压力计算子模块,用于若所述当前待测场景中任意一个接口所对应的请求压力差值为负值,则根据该负值重新分配该当前待测场景及与该当前待测场景包含相同接口的待测场景所对应的请求压力实际值,直到该当前待测场景中任意一个接口与新的请求压力实际值之间的请求压力差值都不为负值,得到该当前待测场景对应的目标请求压力实际值;
第二场景请求压力计算子模块,用于根据已经得到的场景的目标请求压力实际值,更新与所述待测业务对应的各个接口的请求压力期望值,并根据更新后的各个接口的请求压力期望值计算下一个待测场景对应的目标请求压力实际值,直到获得所述待测业务对应的所有待测场景对应的目标请求压力实际值。
可选地,所述请求压力测试模块用于获得接口的压力测试结果时,具体用于:
在所述待测业务中的每个待测场景测试完成后,生成测试结果日志文件;
根据所述待测业务对应的测试结果日志文件生成测试结果页面报告;
从所述测试结果页面报告中获取详细数据发送至页面进行展示,并存储至数据库中。本申请提供的压力测试方法,用户可以通过压力测试系统的前端页面录取接口压力测试的相关数据(即待测业务数据);并在执行接口压力测试的过程中自动计算待测业务对应的所有待测场景所对应的场景数据。然后,依据各个待测场景的场景数据生成用于压力测试的接口请求数据,以及向待测业务所对应的接口并行发送该接口请求数据,获得压力测试结果。利用该方法在执行压力测试过程中,测试人员可以直接在前端页面修改及执行压力测试任务,无需修改测试代码来修改数据,因此提高了测试效率。而且,该方法利用迭代计算方式自动计算得到各个待测场景的请求压力实际值,计算得到的请求压力实际值的准确率更高,减少了人工计算所需的时间,因此提高了测试效率和准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种压力测试方法的流程图;
图2是本申请实施例提供的一种计算场景的QPS过程的流程图;
图3是本申请实施例提供的一种压力测试装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本申请实施例提供的一种压力测试方法的流程图,该方法应用于压力测试系统中,该压力测试系统可以部署在具有计算能力的设备中,如计算机终端,或服务器。
如图1所示,该方法包括以下步骤:
S110,按照预设的各类数据规范获取待测业务数据。
其中,待测业务数据包括待测业务对应的接口数据和待测场景,待测业务数据通过压力测试系统的数据录入页面获取用户录入或配置的数据得到。
在一个实施例中,统一定义了接口(即,Http接口)、场景、业务类型、业务线等数据规范,并通过不同的表结构、不同的字段区分不同的数据。其中,一个业务线下对应多个业务类型,一个业务类型对应多个接口和场景,接口与场景之间可以是多对多的映射关系。
测试人员可以从压力测试系统的前端页面录入待测业务数据,例如,待测业务数据包括:业务线、业务类型、场景、接口数据、压力测试数据等。
其中,接口数据中包括该接口的请求压力期望值,即,每秒请求数(Queries-per-second,QPS)。
由于在压力测试期间不能使用真实数据,只能人为构建虚拟的测试数据来支持压力测试;根据不同的数据,定义不同的被测参数名称(即,Feeder对象),以便后续场景数据进行调用。
场景是压力测试执行的基础单元,其中,场景数据包括:Feeder、method、Http。
调用测试数据中的被测参数写入Feeder对象,以确定当前测试所使用的测试数据。
自定义逻辑编写对应的method,提供自定义功能实现,如md5解码、字符串切割等功能。
按顺序插入所要测试的接口所定义的Http,以此确定多个接口的调用顺序。
例如,某个场景数据包括以下几个部分:
session1_Feeder(测试用户)、address_http(获取测试用户地址)、order_http(测试用户下单)、pay_Method(用户支付方式处理)、pay_http(测试用户支付)。
待测业务对应的域名数据能够准确定位待测业务的服务地址,并在所有压力测试请求中插入通用Header,以此辨识身份或完成其他需求(如白名单)。其中,待测业务对应的域名可以通过压力测试系统的数据录入页面进行参数配置得到。
S120,根据接口数据中各个接口所对应的请求压力期望值,以及待测场景与接口之间的对应关系,迭代计算得到待测场景的场景数据。
测试人员根据需要测试的业务确定相应的场景,前已叙及,场景与接口之间可以是多对多的映射关系。例如,一个场景中可以包含多个接口,为了保证业务的连续性,按照一定的顺序调用这多个接口,而且,场景的请求压力实际值(即,场景的QPS)根据接口的请求压力期望值(即,接口QPS),以及场景与接口的映射关系计算得到。
例如,存在a接口、b接口和c接口,且三个接口的QPS分别为100、200、300,假设a接口和b接口必须在c接口请求成功后才能继续请求。创建场景D(包含c接口和a接口)和场景E(包含c接口和b接口),根据a、b、c接口的QPS,以及场景D和场景E所包含的接口关系,计算得到场景D的QPS及场景E的QPS。
在某些情况下计算场景D和E的QPS的过程中,可能通过一次计算无法得到准确的QPS,此种情况下,需要验证计算得到的各个场景的QPS是否满足要求,即验证各个场景的QPS是否不大于各接口对应的QPS,如果不大于,则表明计算结果准确;如果大于,则表明计算结果不准确,此种情况则需要重新分配场景的QPS,通过迭代优化计算最终得到各场景的QPS,提高了计算结果的准确率。
需要说明的是,该步骤得到待测业务下各个场景对应的QPS,进一步还可以确定所需的容器数,及同一业务类型下各个场景QPS之间的比例值等数据。
具体利用压力测试系统模拟多用户同时发送http请求时,需要利用多个容器同时发送大量的http请求至待测业务对应的服务器。所需容器的数量可以通过该待测业务对应的所有待测场景的所有接口QPS总数,除以容器并发设定值,得到该待测业务所需的容器数量。
例如,某个待测业务包括两个场景,场景A和场景B,其中,场景A包括接口a、b,且场景A的QPS为500,则场景A中所有接口QPS总数为500*2=1000;场景B包括接口a、b、c,且场景B的QPS为500,则场景B中所有接口QPS总数为500*3=1500。场景A和场景B的所有接口QPS总数为1000+1500=2500。假设每个容器的并发设定值为500,则所需要的容器数量是2500/500=5,即需要5个容器同时发送HTTP请求。
在本申请的其它实施例中,该测试方法还能够自动计算各场景的QPS比例,具体的计算过程如下:
针对任一待测业务,获取待测业务对应的所有待测场景的QPS,并以数值最大的QPS为基准值,分别计算待测业务对应的其它待测场景的QPS与基准值之间的比值,得到待测业务种各场景的QPS比值。
例如,某业务包括场景D和场景E,其中,场景D的QPS为200,场景E的QPS为100,则以场景D的QPS为基准值,即场景D的QPS比值为1,场景E的QPS比值为100/200=0.5。
计算得到各个场景的QPS比值后,依据该待测业务对应的场景QPS的基准值和当前待测场景的QPS比值就能够确定当前待测场景的QPS,进一步地根据当前待测场景的QPS确定当前待测场景对应的模拟用户数量。需要说明的是,每个场景的QPS数量即该场景对应的模拟用户数量。然后,根据这些数据发起http请求。
S130,依据各待测场景对应的场景数据,向待测业务所对应的服务器并行发送接口请求数据,获得接口的压力测试结果。
根据计算得到的各个场景对应的场景数据(包括场景QPS、容器数量、场景QPS比值等数据),以及各个接口的数据,采用多个容器同时发送大量的http请求给待测业务对应的服务器,即向待测业务对应的服务器并行发送大量的接口请求数据,以此进行此接口的压力测试,最终得到压力测试结果。
在本申请的一个实施例中,将上一步骤计算得到的场景数据(如,场景名、场景QPS、容器数量、场景比例)作为参数启动对应的压测任务,实现高并发压测。并在压测任务结束后,将各个日志文件传至指定存储位置,然后,将所有日志文件生成最终的页面报告,分析页面报告获取详细数据保存至数据库并在页面展示。
例如,获取的自动计算得到的当前待测场景的场景名所对应的场景QPS、场景请求压力比例(即,场景ration数据)、容器数量等数据作为压测任务的参数,压力测试系统的服务端启动jenkins-control任务,该任务按照流程控制压力测试的进度及分发压测任务。jenkins-control任务根据容器数启动jenkins-job任务,job任务完成后将日志文件传至指定的存储位置。之后,jenkins-control任务启动jenkins-report任务,根据job任务完成后得到的所有日志文件生成html页面报告,然后,分析该html页面报告获得详细数据并保存至数据库中,同时,在压力测试系统的前端页面展示获得的详细数据。
在本申请的另一个实施例中,在执行压力测试任务时,可以定时执行或立即执行;
立即执行是指启动jenkins-job任务后立即执行压力测试任务。
定时执行是启动jenkins-job任务后达到设定的时间参数后才执行压力测试任务,具体的定时执行的过程如下:
依据待测业务对应的场景数据,生成接口压力测试任务,该接口压力测试任务包括任务执行时间参数,任务执行时间参数依据用户通过页面输入的任务执行参数中获得;
当当前事件满足任务执行时间参数后,并行发送接口压力测试任务所对应的接口请求数据。
在本申请的又一实施例中,任务数量可选,可以是单任务执行或多任务执行。
单任务执行是指一次只执行一个压力测试任务,而多任务执行是指一次执行多个压力测试任务。
多任务执行过程可以如下:
依据待测业务对应的场景数据生成多个接口压力测试任务,并在每个接口压力测试任务中添加执行状态;
当检测到所有接口压力测试任务对应的执行节点均处于可执行状态时,修改每个接口压力测试任务的执行状态为可执行,并在最后一个接口压力测试任务的执行状态修改请求中包括任务执行时间;
当当前时刻达到任务执行时间后,执行每个接口压力测试任务。
本实施中,压力测试任务的执行时机可选,任务的数量可选,提高了压力测试过程的灵活性。
本申请提供的压力测试方法,用户可以通过压力测试系统的前端页面录取接口压力测试的相关数据(即待测业务数据);并在执行接口压力测试的过程中自动计算待测业务对应的所有待测场景所对应的场景数据,该场景数据主要包括各待测场景对应的请求压力实际值。然后,依据各个待测场景的请求压力实际值生成用于压力测试的接口请求数据,以及向待测业务所对应的接口并行发送该接口请求数据,并获得压力测试结果。利用该方法在执行压力测试过程中,测试人员可以直接在前端页面修改及执行压力测试任务,无需修改测试代码来修改数据,因此提高了测试效率。而且,该方法利用迭代计算方式自动计算得到各个待测场景的请求压力实际值,计算得到的请求压力实际值的准确率更高,减少了人工计算所需的时间,因此提高了测试效率和准确率。
下面将结合图2详细介绍S120中自动计算场景QPS的过程:
请参见图2,示出了本申请实施例提供的一种计算场景数据的流程图,该方法包括如下步骤:
S121,获取待测业务对应的所有待测场景,以及每个待测场景下的接口数据。
待测业务及对应的待测场景可以由测试人员在压力测试系统的前端页面录入,以及,待测业务对应的服务端的接口数据也可以通过前端页面录入,并存储至数据库中。压力测试系统的服务端从数据库中读取待测业务数据。
其中,每个待测场景下的接口数据包括该待测场景与所包含的接口之间的对应关系,以及每个接口的期望QPS(即接口的请求压力期望值)。
S122,从所有待测场景中按照待测场景包含的接口数量由多到少的顺序确定当前待测场景。
按照各待测场景包含的接口数量由多至少的顺序,将待测场景进行排序,并从中选取未分配接口QPS数量的待测场景为当前待测场景。即,按照场景包含的接口数量由多到少的顺序确定各个场景的QPS。
S123,根据当前待测场景中的最后一级接口所对应的期望QPS,以及包含该最后一级接口其它场景,确定当前待测场景的QPS(即,请求压力实际值),并计算当前待测场景中每个接口的期望QPS与当前待测场景的QPS之间的请求压力差值。
如果请求压力差值为负值,则返回执行S124,如果请求压力差值不为负,执行S125。
多个场景内的接口数量呈现漏斗状态,最重要且需要保证QPS量的必然是场景中的最后一个接口,因此需要根据场景中的最后一级接口分配场景QPS,即根据场景中的最后一个接口的期望QPS,计算得到场景的QPS。
S124,根据负值重新分配当前待测场景以及与当前待测场景包含相同接口的待测场景所对应的QPS。然后,返回执行S123。
如果当前待测场景中存在接口的期望QPS与该场景的QPS的差值为负值,表明此种QPS分配结果不准确,已经超过QPS差值为负值的接口能承担的请求压力,因此,需要重新分配该场景的QPS。
重复执行S123和S124,直到当前待测场景内所有接口对应的QPS差值均不为负,执行S125。
S125,根据计算得到的当前待测场景的QPS,更新与待测业务对应的各个接口的期望QPS,并依据更新后的各个接口的期望QPS计算下一个待测场景对应的QPS。
根据当前待测场景的QPS更新各个接口的期望QPS,然后,利用更新后的各接口的期望QPS,重复执行S123~S125计算其它待测场景对应的QPS。
S126,当所有待测场景对应的QPS均不为负时,获得待测业务对应的所有待测场景对应的目标QPS。
下面将以两个具体的实例进行说明:
实例一:
假设存在三个场景分别是A、B、C,其中,场景A包括接口a,场景B包括接口a、b,场景C包括接口a,b,c。而且,接口a,b,c对应的期望QPS分别为300、150、100。
1),按照场景包含的接口数量由多到少的顺序为C、B、A。
2),计算场景C的QPS;具体的,场景C中的最后一个接口c的期望QPS为100,且其它场景均不包含接口c,因此,场景C的QPS取值100;计算场景C中其它接口的期望QPS与100的差值,接口a、b的期望QPS与100的差值均大于0,最终确定场景C的QPS为100。
3),更新接口a、b、c的期望QPS分别为:接口a,300-100=200;接口b,150-100=50,接口c,100-100=0。
4),按照同样的方法计算场景B的QPS。
具体的,根据场景B中最后一个接口b的期望QPS为50,先设定场景B的QPS为50,然后,计算场景B中的接口a的期望QPS与50的差值为200-50=150,接口b的期望QPS与50的差值为50-50=0。因此,确定场景B的QPS为50。
5)接口a和b的QPS分别更新为:接口a,200-150=50;接口b,50-50=0。
6)按照同样的方法计算场景A的QPS。
场景A只包含接口a,因此,确定接口a的期望QPS为场景A的QPS,即150。
7)接口a的期望QPS更新为150-150=0。
最终确定场景A、B、C的QPS分别为150,50,100,从而满足接口a、b、c的期望QPS。
实例二:
假设某个待测业务包括两个场景A、B,场景A包括接口a,d;场景B包含接口b、c、d。接口a、b、c、d的初始期望QPS分别为20,80,80,100。
1)按照场景所包含接口的数量进行排序,确定先计算场景B的QPS,再计算场景A的QPS。
2)计算场景B的QPS;
具体的,场景B中最后一个接口d的期望QPS为100,但是场景A和场景B中都包含接口d,而且,接口d是场景A和B中的最后一个接口,因此,设定场景B的QPS为10/2=50。场景B中接口b、c、d的期望QPS与50的差值分别为30、30、50,三个差值均大于0,因此,初步确定场景B的QPS为50。
3)更新接口b、c、d的期望QPS分别为30、30、50。
4)按照同样的方法计算场景A的期望QPS。
场景A中最后一个接口d的期望QPS为50,且不存在包含接口d的其它场景,因此,确定场景A的QPS为50。场景A中各个接口的期望QPS与50的差值分别为:接口a,20-50=-30;接口d,50-50=0。此时,接口a的QPS差值为负值,因此,需要根据负值重新分配场景A和场景B的QPS。因为场景A和场景B都包含接口d,因此,场景B的QPS也需要重新分配。
5)根据负值重新分配场景A的QPS为50-30=20,同时,重新分配场景B的QPS为50+30=80。
6)计算场景B中各个接口与重新分配的QPS之间的QPS差值,接口b的QPS差值为80-80=0,接口c的QPS差值为80-80=0,接口d的QPS差值为100-80=20。同理,场景A中接口a的QPS差值为20-20=0,接口d的QPS差值为20-20=20。场景A和场景B中各个接口QPS差值均不是负值,因此,场景A和场景B的QPS都满足接口的期望QPS。
本实施例提供的压力测试方法,根据场景与接口的对应关系,以及各个接口的期望QPS,进行迭代优化计算得到各个场景对应的QPS,以满足各个接口的期望QPS。利用本实施例提供的自动计算场景QPS的方式,不需要测试人员手工计算各个场景的QPS,从而提高了压力测试效率,同时,自动计算各个场景的QPS能够避免人工计算时产生的错误,因此提高了压力测试的准确率。
基于上述实施例公开的一种压力测试方法,本申请实施例还对应公开了一种压力测试装置,如图3所示,该压力测试装置包括:获取模块310、计算模块320和请求压力测试模块330。
获取模块310,用于按照预设的各类数据规范,获取待测业务数据。
其中,待测业务数据包括待测业务对应的接口数据和待测场景,待测业务数据通过数据录入页面获取用户录入的数据得到。
计算模块320,用于根据接口数据中各个接口所对应的请求压力期望值,以及待测场景与接口之间的对应关系,迭代计算得到各个待测场景的场景数据。
其中,场景数据包括待测业务对应的待测场景的请求压力实际值、所需容器的数量及待测业务下各个待测场景的请求压力比例。
进一步的,计算模块320,包括:
第一获取子模块,用于获取待测业务对应的所有待测场景,以及每个待测场景下的接口数据。
第二获取子模块,用于按照各待测场景包含的接口数量由多至少的顺序,获取当前待测场景包含的具有调用关系的各个接口中的最后一级接口所对应的请求压力期望值作为当前请求压力实际值,并计算该当前待测场景中每个接口的请求压力期望值与所述当前请求压力实际值之间的请求压力差值。
第一场景请求压力计算子模块,用于若当前待测场景中任意一个接口所对应的请求压力差值为负值,则根据该负值重新分配该当前待测场景及与该当前待测场景包含相同接口的待测场景所对应的请求压力实际值,直到该当前待测场景中任意一个接口与新的请求压力实际值之间的请求压力差值都不为负值,得到该当前待测场景对应的目标请求压力实际值。
第二场景请求压力计算子模块,用于根据已经得到的场景的目标请求压力实际值,更新与待测业务对应的各个接口的请求压力期望值,并根据更新后的各个接口的请求压力期望值计算下一个待测场景对应的目标请求压力实际值,直到获得待测业务对应的所有待测场景对应的目标请求压力实际值。
可选的,计算模块320,还包括:第三获取子模块和第一计算子模块。
第三获取子模块,用于获取待测业务对应的所有待测场景对应的目标请求压力实际值。
第一计算子模块,用于以数值最大的目标请求压力实际值为基准值,计算待测业务对应的其它待测场景的目标请求压力实际值与基准值的比值,得到场景请求压力比例。
可选的,计算模块320,还包括:第二计算子模块。
第二计算子模块,用于根据待测业务对应的所有待测场景中的所有接口请求压力值总和,以及每个容器的并发设定值,计算得到待测业务所需容器的数量。
请求压力测试模块330,用于依据待测业务对应的场景数据,利用指定数量个容器同时向待测业务所对应的接口并行发送接口请求数据,获得接口的压力测试结果。
其中,指定数量为待测业务对应的所需容器的数量。
根据计算得到的各个场景对应的场景数据(包括场景QPS、容器数量、场景QPS比值等数据),以及各个接口的数据,采用多个容器同时发送大量的http请求给待测业务对应的服务器,即向待测业务对应的服务器并行发送大量的接口请求数据,以此进行此接口的压力测试,最终得到压力测试结果。
进一步的,请求压力测试模块330用于依据待测业务对应的场景数据,利用指定数量个容器同时向待测业务所对应的接口并行发送接口请求数据时,具体用于:
依据所述待测业务对应的场景数据,生成接口压力测试任务,该接口压力测试任务包括任务执行时间参数,任务执行时间参数依据用户通过页面输入的任务执行参数中获得;当当前事件满足所述任务执行时间参数后,并行发送接口压力测试任务所对应的接口请求数据。
进一步的,请求压力测试模块330用于依据待测业务对应的场景数据,利用指定数量个容器同时向待测业务所对应的接口并行发送接口请求数据时,具体用于:
依据待测业务对应的场景数据生成多个接口压力测试任务,并在每个接口压力测试任务中添加执行状态;当检测到所有接口压力测试任务对应的执行节点均处于可执行状态时,修改每个接口压力测试任务的执行状态为可执行,并在最后一个接口压力测试任务的执行状态修改请求中包括任务执行时间;当当前时刻达到任务执行时间后,执行每个接口压力测试任务。
进一步的,请求压力测试模块330用于获得接口的压力测试结果时,具体用于:
在待测业务中的每个待测场景测试完成后,生成测试结果日志文件;根据待测业务对应的测试结果日志文件生成测试结果页面报告;从测试结果页面报告中获取详细数据发送至页面进行展示,并存储至数据库中。
本实施例提供的压力测试装置,用户可以通过压力测试系统的前端页面录取接口压力测试的相关数据(即待测业务数据);并在执行接口压力测试的过程中自动计算待测业务对应的所有待测场景所对应的场景数据,该场景数据主要包括各待测场景对应的请求压力实际值。然后,依据各个待测场景的请求压力实际值生成用于压力测试的接口请求数据,以及向待测业务所对应的接口并行发送该接口请求数据,并获得压力测试结果。利用该装置在执行压力测试过程中,测试人员可以直接在前端页面修改及执行压力测试任务,无需修改测试代码来修改数据,因此提高了测试效率。而且,该装置利用迭代计算方式自动计算得到各个待测场景的请求压力实际值,计算得到的请求压力实际值的准确率更高,减少了人工计算所需的时间,因此提高了测试效率和准确率。本申请提供了一种计算设备,该计算设备包括处理器和存储器,该存储器内存储有可在处理器上运行的程序。该处理器运行存储器内存储的该程序时实现上述的压力测试方法实施例。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算设备可执行的存储介质,该存储介质中存储有程序,该程序由计算设备执行时实现上述的压力测试方法。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种压力测试方法,其特征在于,包括:
按照预设的各类数据规范,获取待测业务数据;其中,所述待测业务数据包括待测业务对应的接口数据和待测场景,所述待测业务数据通过数据录入页面获取用户录入的数据得到;
根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,迭代计算得到各个待测场景的场景数据;其中,所述场景数据包括所述待测业务对应的待测场景的请求压力实际值、所需容器的数量及所述待测业务下各个待测场景的请求压力比例;
依据所述待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,获得接口的压力测试结果,所述指定数量为所述待测业务对应的所需容器的数量。
2.根据权利要求1所述的方法,其特征在于,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,包括:
获取所述待测业务对应的所有待测场景,以及每个所述待测场景下的接口数据;
按照各待测场景包含的接口数量由多至少的顺序,获取当前待测场景包含的具有调用关系的各个接口中的最后一级接口所对应的请求压力期望值作为当前请求压力实际值,并计算该当前待测场景中每个接口的请求压力期望值与所述当前请求压力实际值之间的请求压力差值;
若所述当前待测场景中任意一个接口所对应的请求压力差值为负值,则根据该负值重新分配该当前待测场景及与该当前待测场景包含相同接口的待测场景所对应的请求压力实际值,直到该当前待测场景中任意一个接口与新的请求压力实际值之间的请求压力差值都不为负值,得到该当前待测场景对应的目标请求压力实际值;
根据已经得到的场景的目标请求压力实际值,更新与所述待测业务对应的各个接口的请求压力期望值,并根据更新后的各个接口的请求压力期望值计算下一个待测场景对应的目标请求压力实际值,直到获得所述待测业务对应的所有待测场景对应的目标请求压力实际值。
3.根据权利要求2所述的方法,其特征在于,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,还包括:
获取所述待测业务对应的所有待测场景对应的目标请求压力实际值;
以数值最大的目标请求压力实际值为基准值,计算所述待测业务对应的其它待测场景的目标请求压力实际值与所述基准值的比值,得到所述场景请求压力比例。
4.根据权利要求1或2所述的方法,其特征在于,根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,计算得到所述待测场景的场景数据,还包括:
根据所述待测业务对应的所有待测场景中的所有接口请求压力值总和,以及每个容器的并发设定值,计算得到所述待测业务所需容器的数量。
5.根据权利要求1所述的方法,其特征在于,所述获得接口的压力测试结果,包括:
在所述待测业务中的每个待测场景测试完成后,生成测试结果日志文件;
根据所述待测业务对应的测试结果日志文件生成测试结果页面报告;
从所述测试结果页面报告中获取详细数据发送至页面进行展示,并存储至数据库中。
6.根据权利要求1所述的方法,其特征在于,依据待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,包括:
依据所述待测业务对应的场景数据,生成接口压力测试任务,该接口压力测试任务包括任务执行时间参数,所述任务执行时间参数依据用户通过页面输入的任务执行参数中获得;
当当前事件满足所述任务执行时间参数后,并行发送接口压力测试任务所对应的接口请求数据。
7.根据权利要求1所述的方法,其特征在于,依据待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,包括:
依据所述待测业务对应的场景数据生成多个接口压力测试任务,并在每个接口压力测试任务中添加执行状态;
当检测到所有接口压力测试任务对应的执行节点均处于可执行状态时,修改每个接口压力测试任务的执行状态为可执行,并在最后一个接口压力测试任务的执行状态修改请求中包括任务执行时间;
当当前时刻达到所述任务执行时间后,执行每个接口压力测试任务。
8.一种压力测试装置,其特征在于,包括:
获取模块,用于按照预设的各类数据规范,获取待测业务数据;其中,所述待测业务数据包括待测业务对应的接口数据和待测场景,所述待测业务数据通过数据录入页面获取用户录入的数据得到;
计算模块,用于根据所述接口数据中各个接口所对应的请求压力期望值,以及所述待测场景与接口之间的对应关系,迭代计算得到各个待测场景的场景数据;其中,所述场景数据包括所述待测业务对应的待测场景的请求压力实际值、所需容器的数量及所述待测业务下各个待测场景的请求压力比例;
请求压力测试模块,用于依据所述待测业务对应的场景数据,利用指定数量个容器同时向所述待测业务所对应的接口并行发送接口请求数据,获得接口的压力测试结果,所述指定数量为所述待测业务对应的所需容器的数量。
9.根据权利要求8所述的装置,其特征在于,所述计算模块,包括:
第一获取子模块,用于获取所述待测业务对应的所有待测场景,以及每个所述待测场景下的接口数据;
第二获取子模块,用于按照各待测场景包含的接口数量由多至少的顺序,获取当前待测场景包含的具有调用关系的各个接口中的最后一级接口所对应的请求压力期望值作为当前请求压力实际值,并计算该当前待测场景中每个接口的请求压力期望值与所述当前请求压力实际值之间的请求压力差值;
第一场景请求压力计算子模块,用于若所述当前待测场景中任意一个接口所对应的请求压力差值为负值,则根据该负值重新分配该当前待测场景及与该当前待测场景包含相同接口的待测场景所对应的请求压力实际值,直到该当前待测场景中任意一个接口与新的请求压力实际值之间的请求压力差值都不为负值,得到该当前待测场景对应的目标请求压力实际值;
第二场景请求压力计算子模块,用于根据已经得到的场景的目标请求压力实际值,更新与所述待测业务对应的各个接口的请求压力期望值,并根据更新后的各个接口的请求压力期望值计算下一个待测场景对应的目标请求压力实际值,直到获得所述待测业务对应的所有待测场景对应的目标请求压力实际值。
10.根据权利要求8所述的装置,其特征在于,所述请求压力测试模块用于获得接口的压力测试结果时,具体用于:
在所述待测业务中的每个待测场景测试完成后,生成测试结果日志文件;
根据所述待测业务对应的测试结果日志文件生成测试结果页面报告;
从所述测试结果页面报告中获取详细数据发送至页面进行展示,并存储至数据库中。
CN202010560180.4A 2020-06-18 2020-06-18 压力测试方法及装置 Active CN111694748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010560180.4A CN111694748B (zh) 2020-06-18 2020-06-18 压力测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010560180.4A CN111694748B (zh) 2020-06-18 2020-06-18 压力测试方法及装置

Publications (2)

Publication Number Publication Date
CN111694748A true CN111694748A (zh) 2020-09-22
CN111694748B CN111694748B (zh) 2023-06-30

Family

ID=72481729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010560180.4A Active CN111694748B (zh) 2020-06-18 2020-06-18 压力测试方法及装置

Country Status (1)

Country Link
CN (1) CN111694748B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608949A (zh) * 2021-08-11 2021-11-05 盐城金堤科技有限公司 压力测试方法和装置、以及存储介质和电子设备
CN113656299A (zh) * 2021-08-12 2021-11-16 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质
CN116501559A (zh) * 2023-04-18 2023-07-28 杭州指令集智能科技有限公司 基于Netty实现分布式HTTP接口性能测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150095892A1 (en) * 2013-09-27 2015-04-02 Linkedln Corporation Systems and methods for evaluating a change pertaining to a service or machine
CN110134591A (zh) * 2019-04-19 2019-08-16 平安普惠企业管理有限公司 一种软件压力测试方法及系统、电子设备
CN110874314A (zh) * 2018-08-29 2020-03-10 阿里巴巴集团控股有限公司 压测方法、装置、设备和介质
CN111026627A (zh) * 2019-12-10 2020-04-17 北京奇艺世纪科技有限公司 压力测试方法、装置及服务器
CN111143209A (zh) * 2019-12-23 2020-05-12 五八有限公司 分层压力测试方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150095892A1 (en) * 2013-09-27 2015-04-02 Linkedln Corporation Systems and methods for evaluating a change pertaining to a service or machine
CN110874314A (zh) * 2018-08-29 2020-03-10 阿里巴巴集团控股有限公司 压测方法、装置、设备和介质
CN110134591A (zh) * 2019-04-19 2019-08-16 平安普惠企业管理有限公司 一种软件压力测试方法及系统、电子设备
CN111026627A (zh) * 2019-12-10 2020-04-17 北京奇艺世纪科技有限公司 压力测试方法、装置及服务器
CN111143209A (zh) * 2019-12-23 2020-05-12 五八有限公司 分层压力测试方法、装置、电子设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608949A (zh) * 2021-08-11 2021-11-05 盐城金堤科技有限公司 压力测试方法和装置、以及存储介质和电子设备
CN113656299A (zh) * 2021-08-12 2021-11-16 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质
CN113656299B (zh) * 2021-08-12 2023-08-22 北京百度网讯科技有限公司 极限qps的确定方法、装置、电子设备及可读存储介质
CN116501559A (zh) * 2023-04-18 2023-07-28 杭州指令集智能科技有限公司 基于Netty实现分布式HTTP接口性能测试方法
CN116501559B (zh) * 2023-04-18 2024-04-26 杭州指令集智能科技有限公司 基于Netty实现分布式HTTP接口性能测试方法

Also Published As

Publication number Publication date
CN111694748B (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
CN111694748B (zh) 压力测试方法及装置
CN110221982B (zh) 业务系统的性能测试方法、装置、设备及可读存储介质
CN102222042B (zh) 基于云计算的软件自动化测试方法
US8311794B2 (en) Testing executable logic
CN111190810B (zh) 执行测试任务的方法、装置、服务器和存储介质
CN110830234A (zh) 一种用户流量分配方法及装置
CN109756533B (zh) 一种镜像加速方法、装置及服务器
CN110677321A (zh) 一种弹性伸缩的云压测方法、装置、设备及存储介质
CN109873731B (zh) 测试方法、装置和系统
CN111966597B (zh) 测试数据生成方法及装置
CN112965912A (zh) 接口测试用例生成方法、装置和电子设备
CN114003293B (zh) 接口管理方法、装置、电子设备以及可读存储介质
US10585620B2 (en) Storage monitoring system for monitoring components in a storage system in a distributed manner
CN116974874A (zh) 数据库的测试方法、装置、电子设备及可读存储介质
CN104462116A (zh) 数据选择的方法及装置
CN110764900A (zh) 高并发下的数据分配测试方法、装置、终端及存储介质
CN108574610B (zh) 一种压力测试方法、装置、电子设备及介质
CN110083506A (zh) 集群资源量优化的方法及装置
CN115391194A (zh) 一种产品测试处理方法及装置
CN111796934B (zh) 任务下发方法、装置、存储介质和电子设备
CN109446074B (zh) 点播分发系统压力测试方法及装置、计算机装置及计算机存储介质
CN112346994B (zh) 一种测试信息关联方法、装置、计算机设备及存储介质
CN116955342B (zh) 业务数据一致率校验方法和装置
CN111651349B (zh) 一种测试方法和装置
CN112799924B (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