压力测试方法、介质、装置和计算设备与流程

文档序号:21178062发布日期:2020-06-20 17:36阅读:178来源:国知局
压力测试方法、介质、装置和计算设备与流程

本发明的实施方式涉及性能测试技术领域,更具体地,本发明的实施方式涉及压力测试方法、介质、装置和计算设备。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

压力测试是指给被测系统不断加压,强制被测系统在极限的情况下运行,观察其可以运行到何种程度,从而发现被测系统性能缺陷的方法。

现有压力测试一般是在测试环境或者是另外搭建的高仿真环境中部署被测系统,由测试程序在同一时间内或某一段时间内发送预期数量的请求,记录被测系统在不同压力情况下的效率状况、以及被测系统可以承受的压力情况。然后采用记录的信息进行针对性的分析,找到影响被测系统性能的瓶颈,评价被测系统性能以及判断是否需要对被测系统进行优化处理或结构调整。

这种测试方法需要搭建测试环境或高仿真环境,对资源的需求量高,并且部署成本高。并且,由于部分配置和网络情况等无法完全模拟真实的线上环境,导致测试结果不够准确,通过压力测试的被测系统在上线之后仍然有可能存在缺陷。



技术实现要素:

本发明期望提供一种压力测试方法和装置,以解决上述技术问题中的至少一项。

在本发明实施方式的第一方面中,提供了一种压力测试方法,包括:

获取被测系统的线上数据;

采用所述线上数据生成压力测试数据;

将所述压力测试数据发送至被测系统的线上环境。

在本发明的一个实施例中,所述将所述压力测试数据发送至被测系统的线上环境之前,还包括:复制被测系统在线上环境中的历史数据,将复制的历史数据保存入存储模块;

所述将所述压力测试数据发送至被测系统的线上环境之后,还包括:将所述被测系统处理所述压力测试数据的过程中产生的数据保存入所述存储模块。

在本发明的一个实施例中,所述采用所述线上数据生成压力测试数据,包括:

对所述线上数据执行复制及改写中的至少一项操作,得到所述压力测试数据;其中,所述改写包括:对所述线上数据中的预定字段执行补全、修改及替换中的至少一项操作。

在本发明的一个实施例中,所述将所述压力测试数据发送至被测系统的线上环境,包括:

将所述压力测试数据包含在请求中,并在所述请求中添加压力测试标记字段;

将所述请求发送至所述被测系统的线上环境。

在本发明的一个实施例中,还包括:

在所述被测系统处理所述压力测试数据时需要依赖外部服务的情况下,模拟外部服务的返回值,并将所述返回值提供给所述被测系统的线上环境。

在本发明的一个实施例中,还包括:

监控所述被测系统的至少一项性能指标;

在所述性能指标超出预设条件的情况下,停止向所述被测系统的线上环境发送压力测试数据。

在本发明实施方式的第二方面中,提供了一种压力测试装置,包括:

流量录制模块,用于获取被测系统的线上数据;

生成模块,用于采用所述线上数据生成压力测试数据;

压力测试引擎模块,用于将所述压力测试数据发送至被测系统的线上环境。

在本发明的一个实施例中,还包括:

存储模块,用于复制并保存被测系统在线上环境中的历史数据,还用于保存所述被测系统处理压力测试数据的过程中产生的数据。

在本发明的一个实施例中,所述生成模块,用于对所述线上数据执行复制及改写中的至少一项操作,得到所述压力测试数据;其中,所述改写包括:对所述线上数据中的预定字段执行补全、修改及替换中的至少一项操作。

在本发明的一个实施例中,所述压力测试引擎模块,用于将所述压力测试数据包含在请求中,并在所述请求中添加压力测试标记字段;将所述请求发送至所述被测系统的线上环境。

在本发明的一个实施例中,还包括:虚拟外部服务模块,用于在所述被测系统处理所述压力测试数据时需要依赖外部服务的情况下,模拟外部服务的返回值,将所述返回值提供给所述被测系统的线上环境。

在本发明的一个实施例中,还包括:监控模块,用于监控所述被测系统的至少一项性能指标,在所述性能指标超出预设条件的情况下,指示所述压力测试引擎模块停止向所述被测系统的线上环境发送压力测试数据。

在本发明实施方式的第三方面中,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现上述压力测试方法的步骤。

在本发明实施方式的第四方面中,提供了一种计算设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现压力测试方法的步骤。

根据本发明实施方式的压力测试方法和装置,利用被测系统的线上数据生成压力测试数据,将压力测试数据发送至被测系统的线上环境,因此能够在线上环境进行测试。通过这种方式,无需额外搭建测试环境或高仿真环境,节约了成本及资源;并且,由于直接在线上环境进行测试,避免了测试环境与线上环境不完全相同带来的不利影响,提高了测试结果的准确性。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明一实施方式的压力测试方法实现流程图;

图2示意性地示出了根据本发明一实施方式的压力测试系统结构示意图;

图3示意性地示出了根据本发明一实施方式的压力测试方法中,步骤s13的一种实现流程图;

图4示意性地示出了根据本发明一实施方式的用于压力测试方法的介质示意图;

图5示意性地示出了根据本发明一实施方式的压力测试装置结构示意图;

图6示意性地示出了根据本发明一实施方式的计算设备的结构示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本发明的实施方式,提出了一种压力测试方法、介质、装置和计算设备。

在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,现有的压力测试需要搭建测试环境或高仿真环境,对资源的需要较高;并且由于无法完全模拟真实的线上环境,导致测试结果的准确率较低。

有鉴于此,本发明提供一种压力测试方法和装置,利用被测系统的线上数据生成压力测试数据,并直接在线上环境对被测系统进行测试,因此无需额外搭建测试环境或高仿真环境,节约了成本及资源,并且能够提高测试结果的准确性。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

示例性方法

下面参考图1来描述根据本发明示例性实施方式的压力测试方法。

图1示意性地示出了根据本发明一实施方式的压力测试方法实现流程图,如图1所示,本发明实施例的压力测试方法包括以下步骤:

s11:获取被测系统的线上数据;

s12:采用线上数据生成压力测试数据;

s13:将压力测试数据发送至被测系统的线上环境。

通过上述过程,本发明实施例采用被测系统的线上数据生成压力测试数据,并将生成的压力测试数据发送至被测系统的线上环境,以供在线上环境测试被测系统,因此无需额外搭建测试环境或高仿真环境,节约了成本及资源;并且,由于不存在测试环境与线上环境的偏差,因此能够提高测试结果的准确性。

在一种可能的实施方式中,如图1所示,上述步骤s13之前还可以包括:步骤s14,复制被测系统在线上环境中的历史数据,将复制的历史数据保存入存储模块;

上述步骤s13之后还可包括:步骤s15,将被测系统处理压力测试数据的过程中产生的数据保存入该存储模块。

上述内容中,线上数据可以指用户请求,或称用户流量;历史数据可以指被测系统在处理线上数据的过程中产生的数据。

上述存储模块可以是独立设置的,存储模块与现有的线上存储器相对独立。其中,现有的线上存储器用于存储被测系统在处理线上数据的过程中产生的数据(也就是在提供线上服务时产生的数据),本申请实施例独立设置的存储模块用于单独存储被测系统在处理压力测试数据的过程中产生的数据(也就是在测试过程中产生的数据)。通过这种设置方式,可以将测试过程中产生的数据与提供线上服务时产生的数据隔离,避免测试过程对线上服务产生影响。

图2示意性地示出了根据本发明一实施方式的压力测试系统结构示意图。在图2中,实线表示被测系统提供线上服务时涉及的数据及装置,虚线表示被测系统在被进行压力测试时涉及的数据及装置。需要强调的是,被测系统在被进行压力测试的同时,也在正常提供线上服务。图2中的被测系统为线上环境中的被测系统,可以部署在分布式服务框架(dfs,distributedserviceframework)中。

如图2所示,涉及线上服务的内容包括:将线上数据传输至被测系统的线上环境,将被测系统在提供线上服务时产生的数据保存在线上存储器中;在需要依赖外部服务的情况下,调用真实外部服务系统的接口,由真实外部服务系统为被测系统提供外部服务。

如图2所示,涉及压力测试的内容包括:将压力测试数据传输至被测系统的线上环境,将被测系统在处理压力测试数据的过程中产生的数据保存入独立设置的存储模块;在被测系统处理压力测试数据时需要依赖外部服务的情况下,模拟外部服务的返回值,并将返回值提供给被测系统的线上环境。其中,可以由独立设置的虚拟外部服务模块来模拟外部服务,避免调用真实的外部服务系统。由于压力测试数据并不是真实的用户请求数据,如果由真实的外部服务系统对压力测试数据提供服务,将是对外部服务系统资源的浪费。因此,本申请实施例采用了模拟外部服务返回值的方式,避免对外部服务系统造成浪费或不必要的压力;并且,由于不使用真实的外部服务系统,避免了由于外部服务系统无法正常提供服务而对压力测试的准确性造成不利影响。另外,本申请实施例还可以设置监控模块,用于监控被测系统的至少一项性能指标;在性能指标超出预设条件的情况下,停止向被测系统的线上环境发送压力测试数据,即停止进行压力测试。

以上概述了用于压力测试的各个模块的功能,以及数据生成、传输及存储机制。以下结合附图进行详细介绍。

在一种可能的实施方式中,上述步骤s12包括:对线上数据执行复制及改写中的至少一项操作,得到压力测试数据。

其中,复制可以指:当从日志中解析出的线上数据的数据量不够时,将已有的线上数据复制多倍,并替换掉其中的敏感数据,例如用户标识(id)等数据。

改写可以包括:对线上数据中的预定字段执行补全、修改及替换中的至少一项操作。具体地,当从日志中解析出的线上数据的覆盖场景不够全面时,将未覆盖的场景所对应的字段进行补全、修改或替换等操作,

在一些情况下,不同种类的线上数据对应不同的场景,需要采用系统的不同处理逻辑来进行处理。相应地,如果需要测试被测系统的某个处理逻辑,则需要采用对应种类的压力测试数据来触发该处理逻辑。为了得到用于处理特定处理逻辑的足够数量的压力测试数据,本申请实施例至少可以采用以下三种方式:

第一种,针对某个处理逻辑,解析足够数量的对应该处理逻辑的线上数据;将解析得到的线上数据进行敏感词替换,从而得到足够数量的压力测试数据。例如,对于处理逻辑a,如果需要100万条对应的压力测试数据,则解析100万条处理逻辑a所对应的线上数据;之后将解析得到的线上数据进行敏感词替换,得到100万条处理逻辑a所对应的压力测试数据。

第二种,针对某个处理逻辑,解析一定数量的对应该处理逻辑的线上数据;将解析得到的线上数据进行复制,并进行敏感词替换及字段改写,得到足够数量的压力测试数据。例如,对于处理逻辑a,如果需要100万条对应的压力测试数据,可以解析1万条处理逻辑a所对应的线上数据;之后将解析得到的线上数据复制100倍,并对一些必要的字段(如携带ip地址、用户名称等信息的字段)进行改写,得到100万条处理逻辑a对应的压力测试数据。字段改写可以避免因复制而导致的不同压力测试数据中字段冲突的情况。

第三种,针对某个处理逻辑,解析足够数量的其他类型的线上数据;将解析得到的线上数据进行改写,生成足够数量的压力测试数据,该压力测试数据能够触发该处理逻辑。例如,假定在真实的线上环境下,x类线上数据的出现概率较小,y类线上数据的出现概率较大,并且x类线上数据与y类线上数据的差别不大、且有规律可循。为了测试x类线上数据所对应的处理逻辑,可以解析足够数量的y类线上数据;对解析得到的y类线上数据的特定字段进行改写,从而得到足够数量的x类压力测试数据。

在上述三种方式中,后两种采用了改写操作,从而实现对线上数据进行改造,得到用于触发特定处理逻辑的压力测试数据。这两种方式对于某些出现概率较小的线上数据具有更佳的效果,因为无需从海量的线上数据中解析压力测试所需的全部数据,可以减轻获取及解析线上数据的过程造成的压力。

在进行改写时,线上数据中可供改写的字段包括:数据头(header)、数据体(body)、参数(parameters)、路径(path)等。例如,path字段具体为统一资源定位符(url,uniformresourcelocator);在进行改写时,可以将线上数据的url按照预定的改写规则或映射关系,生成新的url;将新的url作为压力测试数据的path字段。其他字段可以采用与path字段相同或相同的改写方式,在此不再赘述。

为了使被测系统能够区分出线上数据和压力测试数据,本申请实施例可以在上述步骤s13中,为发送至被测系统的压力测试数据添加标记。图3示意性地示出了根据本发明一实施方式的压力测试方法中,步骤s13的一种实现流程图,包括:

s131:将压力测试数据包含在请求中,并在请求中添加压力测试标记字段;

s132:将所述请求发送至被测系统的线上环境。

通过上述设置,被测系统在接收到请求后,根据请求中是否包含压力测试标记字段,就可以区分出哪些请求中包含真实的线上数据、哪些请求中包含用于压力测试的压力测试数据。对于压力测试数据,被测系统则将处理过程中产生的数据存入上述单独设置的存储模块。

此外,在上述请求中,还可以配置并发数、压测持续时间等测试相关参数。配置的作用及原因至少包括以下内容:

第一,并发数可以模拟同时在线的用户数量;通过配置不同的并发数,能够实现不同强度的压力测试,例如模拟普通时段的压力测试、或者模拟高峰时段的压力测试。

第二,在有些情况下,由于被测系统在处理请求时的持续时间很短,而很短的处理时间不足以充分体现被测系统服务器的运行状况。这种情况下,可以设置循环处理该请求,并在请求中配置压测持续时间。被测系统在接收到请求时,在压测持续时间内循环处理该请求;当压测持续时间结束时,停止处理该请求。

测试过程中,可以采用上述监控模块实时监控被测系统各模块相关服务器的性能指标,具体性能指标包含但不限于:cpu使用率、内存使用率、硬盘输入/输出(io,input/output)、网络io、接口响应时间、接口错误率等。当出现超出预设条件的性能指标时,可以停止对被测系统进行压力测试,以保证不影响被测系统对正常流量的响应。前述预设条件可以设置为特定阈值,该特定阈值与针对被测系统的重要性、测试时段的重要性等因素相关。该特定阈值的具体数值可以根据压力测试时的实际情况进行调整。例如,针对一个被测系统,将m时段的cpu使用率阈值设置为80%,将n时段的cpu使用率阈值设置为90%;相对而言,m时段比n时段的重要性更高,因此m时段的cpu使用率阈值设置更为严格。在进行压力测试时,实时监控被测系统相关服务器的cpu使用率,如果cpu使用率大于80%,并且当前处于m时段,则停止进行压力测试。前述是以cpu使用率为例进行说明的,在实际监控时,可以同时监控多个性能指标,当一个或多个性能指标超过特定阈值时,停止压力测试。

在一种可能的实施方式中,上述独立设置的存储模块可以包含数据库、缓存、队列、日志、文件等,对压力测试过程中产生的数据与真实线上服务过程中产生的数据进行隔离。上述存储模块所需的服务器资源可以临时申请,在压力测试结束后可以将该存储模块中的数据删除,并且退回该存储模块所占用的服务器资源。由于压力测试过程中产生的数据是单独存储的,对这些数据的清理逻辑也简单清晰。

本申请实施例在进行压力测试时,对压力测试数据的处理不影响统计、算法模型等其它服务模型的处理。

综上可见,本申请实施例在线上环境直接进行压力测试,能够保证压测结果真实有效,并且无需额外搭建与线上环境一致的测试环境或高仿真环境,因此能够节约服务器资源。由于采用单独设置的存储模块对压力测试过程中产生的数据进行存储,避免了对线上服务产生影响,并且便于后续删除数据及释放服务器资源。

示例性介质

在介绍了本发明示例性实施方式的方法之后,接下来,参考图4对本发明示例性实施方式的介质进行说明。

在一些可能的实施方式中,本发明的各个方面还可以实现为一种计算机可读介质,其上存储有程序,当所述程序被处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的压力测试方法中的步骤。

具体地,上述处理器执行上述程序时用于实现如下步骤:获取被测系统的线上数据;采用所述线上数据生成压力测试数据;将所述压力测试数据发送至被测系统的线上环境。

需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图4所示,描述了根据本发明的实施方式的介质40,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序,并可以在设备上运行。然而,本发明不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算设备。

示例性装置

在介绍了本发明示例性实施方式的介质之后,接下来,参考图5对本发明示例性实施方式的装置进行说明。

图5示意性地示出了根据本发明一实施方式的压力测试装置结构示意图,包括:

流量录制模块501,用于获取被测系统的线上数据;

生成模块502,用于采用线上数据生成压力测试数据;

压力测试引擎模块503,用于将压力测试数据发送至被测系统的线上环境。

如图5所示,在一种可能的实施方式中,上述装置还包括:

存储模块504,用于复制并保存被测系统在线上环境中的历史数据,还用于保存被测系统处理压力测试数据的过程中产生的数据。

在一种可能的实施方式中,生成模块502,用于对线上数据执行复制及改写中的至少一项操作,得到压力测试数据;其中,改写包括:对线上数据中的预定字段执行补全、修改及替换中的至少一项操作。

在一种可能的实施方式中,压力测试引擎模块503,用于将压力测试数据包含在请求中,并在请求中添加压力测试标记字段;将该请求发送至所述被测系统的线上环境。

如图5所示,在一种可能的实施方式中,上述装置还包括:

虚拟外部服务模块505,用于在被测系统处理压力测试数据时需要依赖外部服务的情况下,模拟外部服务的返回值,将返回值提供给被测系统的线上环境。

如图5所示,在一种可能的实施方式中,上述装置还包括:

监控模块506,用于监控被测系统的至少一项性能指标,在性能指标超出预设条件的情况下,指示压力测试引擎模块停止向被测系统的线上环境发送压力测试数据。

示例性计算设备

在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图6对本发明示例性实施方式的计算设备进行说明。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,根据本发明实施方式的计算设备可以至少包括至少一个处理单元以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明的各种示例性实施方式的压力测试方法中的步骤。

下面参照图6来描述根据本发明的这种实施方式的计算设备60。图6显示的计算设备60仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,计算设备60以通用计算设备的形式表现。计算设备60的组件可以包括但不限于:上述至少一个处理单元601、上述至少一个存储单元602,连接不同系统组件(包括处理单元601和存储单元602)的总线603。

总线603包括数据总线、控制总线和地址总线。

存储单元602可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)6021和/或高速缓存存储器6022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(rom)6023。

存储单元602还可以包括具有一组(至少一个)程序模块6024的程序/实用工具6025,这样的程序模块6024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备60也可以与一个或多个外部设备604(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口605进行。并且,计算设备60还可以通过网络适配器606与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图6所示,网络适配器606通过总线603与计算设备60的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了压力测试装置的若干单元/模块或子单元/子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1