一种软件压力测试方法和装置与流程

文档序号:17790204发布日期:2019-05-31 20:04阅读:162来源:国知局
一种软件压力测试方法和装置与流程

本发明涉及软件开发技术领域,特别是涉及一种软件压力测试方法和装置。



背景技术:

软件压力测试是检验软件性能的重要手段,具体手段是模拟实际应用的软硬件环境及用户使用过程中的系统负荷,长时间或超大负荷地运行该被测试的软件,以测试该软件的性能、可靠性和稳定性。目前,在对相应软件进行压力测试时需要对其进行相应修改,从而造成测试过程较为繁琐,测试效率较低。



技术实现要素:

有鉴于此,本发明提供了一种软件压力测试方法和装置,以解决目前的软件压力测试过程较为繁琐、效率较低的问题。

为了解决上述问题,本发明公开了一种软件压力测试方法,包括步骤:

响应用户的测试请求,发出压力测试控制指令

根据所述压力测试控制指令产生压力流量,并将所述压力流量送入置于容器的被测软件;

记录所述被测软件在压力流量的驱动下产生的目标数据;

根据所述目标数据生成所述被测软件的测试结果。

可选的,所述目标数据包括所述被测软件的响应信息和/或所述被测软件与外部的外部通信内容。

可选的,所述外部通信内容包括所述被测软件对外部数据库或者rpc服务器的访问流量。

可选的,所述测试结果包括请求的次数、请求的时延和/或请求的抖动。

可选的,还包括:

将所述被测软件安装于所述容器中。

相应的,还提供了一种软件压力测试装置,包括:

压测控制模块,用于响应用户的测试请求,发出压力测试控制指令

施压机模块,用于根据所述压力测试控制指令产生压力流量,并将所述压力流量送入置于容器的被测软件;

透明代理模块,用于记录所述被测软件在压力流量的驱动下产生的目标数据;

所述压测控制模块还用于根据所述目标数据生成所述被测软件的测试结果。

可选的,所述目标数据包括所述被测软件的响应信息和/或所述被测软件与外部的外部通信内容。

可选的,所述外部通信内容包括所述被测软件对外部数据库或者rpc服务器的访问流量。

可选的,所述测试结果包括请求的次数、请求的时延和/或请求的抖动。

可选的,还包括:

软件安装模块,用于将所述被测软件安装于所述容器中。

从上述技术方案可以看出,本发明提供了一种软件压力测试方法和装置,具体为根据用户的测试请求发出压力测试控制指令;根据压力测试控制指令产生压力流量,并将压力流程送入置于容器网络的被测软件;记录被测软件在压力流量的驱动下产生的目标数据;根据目标数据生成测试结果。通过本方案只需将被测软件置于相应的容器网络即可实现压力测试,而无需对其进行修改,从而能够解决目前的软件压力测试方法中因需要进行软件修改而导致的过程繁琐、效率较低的问题。本申请的技术方案除了能够生成测试结果外,还能够反映出结果的成因。

且通过对施压响应数据与外部通信数据分析,并结合历史基线信息,能更好的识别出近期性能数据的变化和变化趋势。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例的一种软件压力测试方法的流程图;

图2为本申请实施例的另一种软件压力测试方法的流程图;

图3为本申请实施例的一种软件压力测试装置的框图。

具体实施方式

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

实施例一

图1为本申请实施例的一种软件压力测试方法的流程图。

参照图1所示,本实施例提供的软件压力测试方法用于对被测软件进行压力测试,并得到相应的测试结果,该方法具体包括步骤:

s1、响应用户的测试请求,发出测试控制指令。

这里用于确定进行压力测试的时机,即根据用户发出相应测试请求的时间发出相应的测试控制指令,以便使相应的系统开始对被测软件进行测试。

s2、根据测试控制指令向被测软件发送压力流量。

在接收到相应的测试控制指令后,产生相应的压力流量,并将该压力流量送入被置于容器的被测软件,以对该被测软件进行压力测试。被测软件在进行压力测试时会根据压力流量产生相应的响应信息,并在压力流量的驱动下与连接与该容器的外部数据库或者外部rpc服务器产生信息交互,这些都能够反映被测软件在压力流量下的性能。

s3、记录被测软件在压力流量驱使下的目标数据。

在被测软件被注入压力流量后,其会对压力流量做出相应的反映,即产生相应的数据,即这里所说的目标数据,为了对其在压力流量下的性能进行检测,需要将相应目标数据予以记录。这里的目标数据包括该被测软件对压力流量产生的响应信息,还包括该被测软件因性能不足而产生的大量的外部通信内容,即对外部数据库或者外部rpc服务器的访问流量,这些都能反映该被测软件的相应性能。

s4、根据目标数据计算生成被测软件的测试结果。

在得到相应的目标数据,具体包括响应信息、对外部数据库或者外部rpc服务器的访问流量后,根据这些信息计算该被测软件在被测试情况下的测试结果,例如被测软件的请求的次数、请求的时延和请求的抖动中的部分或全部,从而使用户能够对被测软件的性能有直观的判断。

这里的测试结果包括被测试软件的服务能力,也包括提供这个服务能力是受到了什么样的外界影响。且通过分析目标数据能获取到这样的影响信息。

如果在压力测试发现,被测试软件的性能不足,但同时存在大量外部通信请求,并且请求数量远超过设计,则说明软件中存在不合理的外部请求,比如循环中请求数据库和调用rpc服务。

如果在压力测试时发现,被测试软件的性能不足,虽然外部请求的数量不多,但是每次响应的时延都很大,说明外部请求慢导致了被测试系统性能下降。

从上述技术方案可以看出,本实施例提供了一种软件压力测试方法,具体为根据用户的测试请求发出压力测试控制指令;根据压力测试控制指令产生压力流量,并将压力流程送入置于容器的被测软件;记录被测软件在压力流量的驱动下产生的目标数据;根据目标数据生成测试结果。通过本方案只需将被测软件置于相应的容器即可实现压力测试,而无需对其进行修改,从而能够解决目前的软件压力测试方法中因需要进行软件修改而导致的过程繁琐、效率较低的问题。本申请的技术方案除了能够生成测试结果外,还能够反映出结果的成因。

且通过对施压响应数据与外部通信数据分析,并结合历史基线信息,能更好的识别出近期性能数据的变化和变化趋势。

另外,有些软件是基于容器发布的,此时就无需将该被测软件置于相应的容器,而对于不是基于容器发布的被测软件来说,在上述相应用户的测试请求,发出测试控制指令步骤之前,就需要包括如下步骤,具体如图2所示。

s0、将被测软件安装于容器中。

容器用于容纳被测软件运行,通常使用docker,容器网络为主机上的各个容器提供网络环境。在容器网络中,更容易针对指定容器发出的流量进行流量控制。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例二

图3为本申请实施例的一种软件压力测试装置的框图。

参照图3所示,本实施例提供的软件压力测试装置用于对被测软件进行压力测试,并得到相应的测试结果,该装置具体包括压测控制模块10、施压机模块20和透明代理模块30。

压测控制模块用于响应用户的测试请求,发出测试控制指令。

这里用于确定进行压力测试的时机,即根据用户发出相应测试请求的时间发出相应的测试控制指令,以便使相应的系统开始对被测软件进行测试。

施压机模块用于根据测试控制指令向被测软件发送压力流量。

在接收到相应的测试控制指令后,产生相应的压力流量,并将该压力流量送入被置于容器的被测软件,以对该被测软件进行压力测试。被测软件在进行压力测试时会根据压力流量产生相应的响应信息,并在压力流量的驱动下与连接与该容器的外部数据库100或者外部rpc服务器200产生信息交互,这些都能够反映被测软件在压力流量下的性能。

透明代理模块用于记录被测软件在压力流量驱使下的目标数据。

在被测软件被注入压力流量后,其会对压力流量做出相应的反映,即产生相应的数据,即这里所说的目标数据,为了对其在压力流量下的性能进行检测,需要将相应目标数据予以记录。这里的目标数据包括该被测软件对压力流量产生的响应信息,还包括该被测软件因性能不足而产生的大量的外部通信内容,即对外部数据库或者外部rpc服务器的访问流量,这些都能反映该被测软件的相应性能。

压测控制模块还用于根据目标数据计算生成被测软件的测试结果。

在得到相应的目标数据,具体包括响应信息、对外部数据库或者外部rpc服务器的访问流量后,根据这些信息计算该被测软件在被测试情况下的测试结果,例如被测软件的请求的次数、请求的时延和请求的抖动中的部分或全部,从而使用户能够对被测软件的性能有直观的判断。

如果在压力测试发现,被测试软件的性能不足,但同时存在大量外部通信请求,并且请求数量远超过设计,则说明软件中存在不合理的外部请求,比如循环中请求数据库和调用rpc服务。

如果在压力测试时发现,被测试软件的性能不足,虽然外部请求的数量不多,但是每次响应的时延都很大,说明外部请求慢导致了被测试系统性能下降。

从上述技术方案可以看出,本实施例提供了一种软件压力测试装置,具体为根据用户的测试请求发出压力测试控制指令;根据压力测试控制指令产生压力流量,并将压力流程送入置于容器的被测软件;记录被测软件在压力流量的驱动下产生的目标数据;根据目标数据生成测试结果。通过本方案只需将被测软件置于相应的容器即可实现压力测试,而无需对其进行修改,从而能够解决目前的软件压力测试方法中因需要进行软件修改而导致的过程繁琐、效率较低的问题。本申请的技术方案除了能够生成测试结果外,还能够反映出结果的成因。

且通过对施压响应数据与外部通信数据分析,并结合历史基线信息,能更好的识别出近期性能数据的变化和变化趋势。

另外,有些软件是基于容器发布的,此时就无需将该被测软件置于相应的容器,而对于不是基于容器发布的被测软件来说,在上述相应用户的测试请求,发出测试控制指令步骤之前,就需要包括软件安装模块。

软件安装模块用于将被测软件安装于容器中。

容器用于容纳被测软件运行,通常使用docker,容器网络为主机上的各个容器提供网络环境。在容器网络中,更容易针对指定容器发出的流量进行流量控制。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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