分布式系统的测试方法、装置、计算机设备及存储介质与流程

文档序号:15492228发布日期:2018-09-21 20:50阅读:236来源:国知局

本发明涉及系统测试领域,尤其涉及一种分布式系统的测试方法、装置、计算机设备及存储介质。



背景技术:

分布式系统是一个将硬件和软件组件分布在网络计算机上,并通过消息传递进行通信和协调的系统。而在分布式系统搭建完成之后会涉及到对该系统的软件测试环节,然而当前主流的软件测试模型(例如v模型、w模型、h模型以及x模型等)主要是针对非分布式系统进行设计的,虽然在分布式系统的测试中具有一定的适用性,但随着分布式系统技术的发展及测试要求的提高,这些软件测试模型己经不能满足分布式系统测试的需求。同时,由于分布式系统具有组件网络化、部署成本高等特点,现有针对分布式系统的测试方法便捷性不高,测试效率也较低。



技术实现要素:

本发明实施例提供一种分布式系统的测试方法、装置、计算机设备及存储介质,以解决现有的分布式系统的测试方法便捷性和效率不高的问题。

第一方面,本发明实施例提供一种分布式系统的测试方法,包括以下步骤:

获取分布式系统测试请求,所述分布式系统测试请求包括目标测试模块、目标测试类型和目标测试时间;

获取所述目标测试模块的通信链路数据,所述通信链路数据包括目标i/o口数量;

若在所述目标测试时间内所述目标i/o口数量大于或等于空闲i/o口数量,则获取并显示空闲i/o口数量大于或等于所述目标i/o口数量的空闲时间段;

获取调整测试时间,若当前系统时间达到调整测试时间,则接管所述目标测试模块的通信链路,基于所述目标测试类型对所述目标测试模块进行测试。

第二方面,本发明实施例提供一种分布式系统的测试装置,包括:

分布式系统测试请求获取模块,用于获取分布式系统测试请求,所述分布式系统测试请求包括目标测试模块、目标测试类型和目标测试时间;

通信链路数据获取模块,用于获取所述目标测试模块的通信链路数据,所述通信链路数据包括目标i/o口数量;

空闲时间段获取模块,用于若在所述目标测试时间内所述目标i/o口数量大于或等于空闲i/o口数量,则获取并显示空闲i/o口数量大于或等于所述目标i/o口数量的空闲时间段;

调整测试模块,用于获取调整测试时间,若当前系统时间达到调整测试时间,则接管所述目标测试模块的通信链路,基于所述目标测试类型对所述目标测试模块进行测试。

第三方面,本发明实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述分布式系统的测试方法的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述分布式系统的测试方法的步骤。

本发明实施例提供的分布式系统的测试方法、装置、计算机设备及存储介质中,在获取分布式系统测试请求之后,通过目标测试模块的目标i/o口数量和目标测试时间来判断目标测试模块在目标测试时间内是否有足够多的空闲i/o口来进行相应的测试任务。在目标测试时间内不具备足够多的空闲i/o口来进行相应的测试任务时,通过显示对应的空闲时间段的方式来进行提醒,以便用户可以直观地选择合适的测试时间,从而顺利地进行分布式系统的测试,提高了分布式系统测试的便捷性。通过接管目标测试模块的通信链路的方式,测试系统可以模拟分布式系统环境,节省了测试过程中花费在环境准备上的时间,同时也节省了大量的机器资源。再基于目标测试类型对目标测试模块进行测试,提高了分布式系统的测试效率。

附图说明

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

图1是本发明实施例1中的分布式系统的测试方法的一流程图;

图2是图1中步骤s40的一具体实施方式的一流程图;

图3是图1中步骤s40的另一具体实施方式的一流程图;

图4是图3中步骤s51的一具体实施方式的一流程图;

图5是图3中步骤s51的另一具体实施方式的一流程图;

图6是本发明实施例2中提供的分布式系统的测试装置的一示意图;

图7是本发明实施例4中提供的计算机设备的一示意图。

具体实施方式

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

实施例1

图1示出本实施例中分布式系统的测试方法的流程图。该分布式系统的测试方法应用在各种终端或者系统之中,以解决现有的分布式系统的测试方法便捷性和效率不高的问题。如图1所示,该分布式系统的测试方法包括如下步骤(示例性地,该实施例采用一测试系统来执行如下步骤):

s10:获取分布式系统测试请求,分布式系统测试请求包括目标测试模块、目标测试类型和目标测试时间。

其中,分布式系统测试请求是指对分布式系统进行测试的发起请求。分布式系统中包括多个模块,当需要对其中的某个模块进行测试时,可以触发一分布式系统测试请求。分布式系统测试请求包括目标测试模块、目标测试类型和目标测试时间。其中,目标测试模块用于指向或标识分布式系统中需要进行测试的模块。而目标测试类型是指针对分布式系统中需要进行测试的目标测试模块的具体测试类型,目标测试类型可以包括:性能测试、可靠性测试、压力测试或功能测试等。而目标测试时间是指预先设定的需要对分布式系统中的目标测试模块进行测试的时间。可选地,目标测试时间包括起始时间和结束时间,或者,目标测试时间包括起始时间和测试持续时间。

s20:获取目标测试模块的通信链路数据,通信链路数据包括目标i/o口数量。

其中,网络中两个节点之间的物理通道称为通信链路。通信链路数据是用于衡量目标测试模块和其他模块之间进行通信的数据。目标i/o口数量是指用于对该目标测试模块进行测试所需要的i/o口数量。具体地,可以根据目标测试模块的通信链路的数量来确定对应的目标i/o口数量。在一个具体实施方式中,目标i/o口数量可以等于目标测试模块的通信链路的数量。可选地,为了提高测试效率,目标i/o口数量也可以大于目标测试模块的通信链路的数量。

s30:若在目标测试时间内目标i/o口数量大于或等于空闲i/o口数量,则获取并显示空闲i/o口数量大于或等于目标i/o口数量的空闲时间段。

根据目标测试时间和目标i/o数量来判断测试系统在目标测试时间内的空闲i/o口数量是否符合要求。若在目标测试时间内目标i/o口数量大于空闲i/o口数量,则说明在目标测试时间内,该测试系统没有足够的空闲i/o口来支持该分布式系统测试请求。此时,获取并显示测试系统中空闲i/o口数量大于或等于目标i/o口数量的空闲时间段,以根据该空闲时间段来调整对该分布式系统进行测试的时间。

优选地,可以通过建立i/o口空闲时间表来体现测试系统中在不同时间段内的空闲i/o口数量。具体地,该i/o口空闲时间表包括时间区间和对应的空闲i/o口数量。其中,时间区间可以根据空闲i/o口数量的不同来划分。例如,以24小时为例,假设测试系统中总i/o口数量为20。若在8:00-10:00之间,有一个测试请求占据了15个i/o口,而其他时间内该测试系统的空闲i/o口数量均为20。则该i/o口空闲时间表可以将时间区间划分为:[00:00,8:00]、[8:00,10:00]和[10:00,24:00],如此,对应的i/o口空闲时间表可以为:

表一i/o口空闲时间表

通过表一所示的i/o口空闲时间表可以直观地了解在不同时间区间内对应的空闲i/o口数量。例如,若分布式系统测试请求中,目标测试模块的目标i/o口数量为10,而目标测试时间为9:00-11:00。此时,测试系统会获取并显示空闲i/o口数量大于或等于10个的空闲时间段,即[00:00,8:00]和[10:00,24:00]。

s40:获取调整测试时间,若当前系统时间达到调整测试时间,则接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试。

在显示了空闲i/o口数量大于或等于目标i/o口数量的空闲时间段之后,用户可以根据该空闲时间段来调整目标测试时间,在空闲i/o口数量大于或等于目标i/o口数量的空闲时间段之内选择一预定的时间区间作为调整测试时间,随即测试系统获取该调整测试时间。

当前系统时间是指系统当前显示的时间,而当前系统时间达到调整测试时间具体可以是指当前系统时间达到调整测试时间的起始时间。若当前系统时间达到调整测试时间,则接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试。

接管目标测试模块的通信链路是指接管目标测试模块和其他模块之间进行通信的各条通信链路。具体地,可以通过如下方式来实现通信链路的接管(以接管客户端与服务器端的通信链路为例):在客户端与服务器端之间插入一个模块。首先,该模块模拟服务器端启动相同的端口进行监听;然后,截获客户端发出的连接请求,并建立连接,这时该模块相对于客户端而言是服务器端,如此就可以获取客户端发送过来的数据包;同时,在模块上配置服务器端的地址,当接收了客户端发送过来的数据包时,向服务器端发送连接请求,并建立连接,此时该模块相对于服务器端而言就是客户端;最后,该模块把从客户端接收到的数据包转发到服务器端。在服务器端处理完请求后,通过前面建立的连接,将返回数据包发送给客户端。通过上述步骤就完成了一条通信链路的接管工作,同时也可以实现对链路中通信数据的控制。

在接管了目标测试模块的通信链路之后,就可以基于目标测试类型对目标测试模块进行测试。通过对目标测试模块的通信链路的接管,测试系统可以模拟该分布式系统环境,节省了测试过程中花费在环境准备上的时间,同时也节省了大量的机器资源。对目标测试模块进行测试的具体过程可以根据目标测试类型的不同而进行设定。

优选地,在获取调整测试时间之后,还包括:生成对应的调整测试任务。其中,调整测试任务是指目标测试时间经过调整的测试任务,一个分布式系统测试请求就对应一个测试任务。调整测试任务包括调整测试时间和目标i/o口数量。在生成调整测试任务之后,根据调整测试任务更新i/o口空闲时间表。通过这个方式实时对i/o口空闲时间表进行更新,保证了i/o口空闲时间表的准确性。

本实施例提供的分布式系统的测试方法中,在获取分布式系统测试请求之后,通过目标测试模块的目标i/o口数量和目标测试时间来判断目标测试模块在目标测试时间内是否有足够多的空闲i/o口来进行相应的测试任务。在目标测试时间内不具备足够多的空闲i/o口来进行相应的测试任务时,通过显示对应的空闲时间段的方式来进行提醒,以便用户可以直观地选择合适的测试时间,从而顺利地进行分布式系统的测试,提高了测试的便捷性。通过接管目标测试模块的通信链路的方式,测试系统可以模拟分布式系统环境,节省了测试过程中花费在环境准备上的时间,同时也节省了大量的机器资源。再基于目标测试类型对目标测试模块进行测试,提高了分布式系统的测试效率。

在一个具体实施方式中,在获取目标测试模块的通信链路数据,通信链路数据包括目标i/o口数量的步骤之后,分布式系统的测试方法还包括:

若在目标测试时间内目标i/o口数量小于空闲i/o口数量,则在当前系统时间达到目标测试时间时,接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试。

若在目标测试时间内目标i/o口数量小于空闲i/o口数量,则说明在目标测试时间内测试系统是有足够的空闲i/o口来支持该分布式系统测试请求的,故可以在当前系统时间达到目标测试时间时对目标测试模块的通信链路进行接管,并基于目标测试类型对目标测试模块进行测试。对目标测试模块进行测试的具体过程可以根据目标测试类型的不同而进行设定。

优选地,若在目标测试时间内目标i/o口数量小于空闲i/o口数量,则生成目标测试任务。其中,目标测试任务是指基于分布式系统测试请求而生成的测试任务。目标测试任务包括目标测试时间和目标i/o口数量。并根据目标测试任务更新i/o口空闲时间表。通过这个方式实时对i/o口空闲时间表进行更新,保证了i/o口空闲时间表的准确性。

在这个实施方式中,在获取目标测试时间内目标i/o口数量不大于当前空闲i/o口数量的结果之后,根据对应的目标测试时间对分布式系统进行测试,并且对i/o口空闲时间表进行实时更新,保证了分布式系统测试的便捷性和准确性。

在一个具体实施方式中,接管目标测试模块的通信链路,如图2所示,具体包括以下步骤:

s41:对目标测试模块启动端口监听。

端口监听是指对终端/模块所操作的一种信息记录。在分布式系统中,目标测试模块需要与对应的上游模块以及下游模块中的每一个模块建立通信连接。因此对于其中的每一个模块都需要启动相应的端口进行监听,并建立端口与目的模块之间的映射关系。其中,目的模块是指目标测试模块要建立通信连接的对应模块。上游模块和下游模块是以目标测试模块为基准,根据通信数据的流向来区分其关联模块的方式。处于目标测试模块通信数据流向的上游的模块为上游模块,处于目标测试模块通信数据流向的下游的模块为下游模块。步骤s41的具体过程如下:

(1)确定需要监听的端口数n。

通过目标测试模块的通信链路数据来确定需要监听的端口数n,可选地,需要监听的端口数n和目标i/o口数量相同。优选地,在确定需要监听的端口数n可以通过listen_num来实现。例如,若需要监听的端口数为5,则配置信息可以为:#definelisten_num5。

(2)建立端口与目的模块的ip和port的映射关系。

通过建立端口与目的模块的ip和port的映射关系,来建立目标测试模块和上游模块或目标测试模块和下游模块之间的数据通信。其中,在建立端口与目的模块的ip和port的映射关系时,目的模块与对应的上游模块或下游模块的ip和port必须一致,否则,无法建立目标测试模块和上游模块或目标测试模块和下游模块之间的联系。具体地,为每个端口配置对应的目的模块的ip和port信息,而每个端口的目的模块的ip和port信息和该端口对应的上游模块或下游模块的ip和port信息是相同的。

(3)启动端口监听,等待上游模块的连接服务。

在端口与目的模块的ip和port的映射关系建立完毕之后,就启动端口监听,进行实时地端口监听任务,等待上游模块的连接服务进而触发对应的进程。

s42:基于空闲i/o口建立目标测试模块和上游模块之间以及目标测试模块和下游模块之间的通信链路。

其中,通信链路连接的建立,包括两方面的连接:(1)接受上游模块的连接请求,并与上游模块建立连接;(2)向对应的下游模块发出连接请求,并与对应的下游模块建立连接。

在与上游模块建立连接时,目标测试模块相当于服务器端,上游模块相当于客户端。目标测试模块与上游模块建立连接后,会产生一个句柄fd1。在与下游模块建立连接时,目标测试模块模块相当于是客户端,通过在线进行系统监听过程中建立的映射关系,根据端口查找到目的模块的ip和port,向对应的下游模块发起连接,在建立连接后产生句柄fd2。通过建立这两方面的连接,就能在上游模块和下游模块之间建立联系,进而实现了模拟上下游通信链路的效果。

具体地,通过空闲i/o口来建立目标测试模块和上游模块之间以及目标测试模块和下游模块之间的通信链路。可选地,采用一个空闲i/o口建立一条对应的通信链路。例如,若目标测试模块和1个上游模块以及目标测试模块和5个下游模块之间进行通信,则可以采用6个空闲i/o口分别建立目标测试模块和1个上游模块以及目标测试模块和5个下游模块之间的通信链路。

在这个实施方式中,通过启动端口监听,确定需要接管的目的模块的数量以及对应的每一目的模块的ip和port之后,基于空闲i/o口建立目标测试模块和上游模块之间以及目标测试模块和下游模块之间的通信链路,方便后续的通信数据的转发和录制,保证了通信链路接管的准确性和效率。

在一个具体实施方式中,基于目标测试类型对目标测试模块进行测试,如图3所示,具体包括以下步骤:

s51:基于目标测试类型,录制目标测试模块的通信数据。

对于不同的目标测试类型,所需要录制的通信数据是不同的。在已经对目标测试模块的通信链路进行接管的前提下,基于目标测试类型,选择对应的通信数据进行录制。具体地,根据不同的目标测试类型,选择不同的测试数据进行输入,以触发不同的模块之间的数据交互,并利用接管了对应通信链路的i/o口录制对应的通信数据。

在需要录制的通信数据中,包含两个方向的数据,即从上游模块发送给测试系统的请求数据和从下游模块返回给测试系统的响应数据,所以在数据录制时可以对不同方向的数据进行标识,并分别进行录制。

具体地,录制目标测试模块的通信数据的过程可以为:测试系统在获取到上游模块发送的请求数据之后,标识并保存该请求数据,并将该请求数据转发到对应的下游模块中。下游模块在接收到对应的请求数据之后,会响应该请求数据,并进行相关的处理,在处理完成之后,下游模块会返回相对应的响应数据。测试系统标识并保存该响应数据,并将该响应数据转发到对应的上游模块中。通过上述步骤,即实现对上游模块发送给下游模块的请求数据以及下游模块返回到上游模块的响应数据的分别录制。

在一个具体实施方式中,录制目标测试模块的通信数据还包括对通信数据的转发。在相应的通信链路建立连接时,会产生两个句柄fd1和fd2。例如:通过空闲i/o口a和上游模块连接,产生句柄fd1。通过空闲i/o口b和上游模块连接,产生句柄fd2。这两个句柄都存在对应的读/写事件,所以可以使用这两个句柄来实现通信数据的转发。具体的通信数据的转发步骤如下:

(1)对句柄fd1进行读取:空闲i/o口a与上游模块建立连接后,对句柄fd1进行读取操作,以从上游模块读取请求数据。

(2)对句柄fd2进行写入:对于从上游模块读取到的请求数据,通过空闲i/o口b的句柄fd2写到下游模块中。

(3)对句柄fd2进行读取:下游模块在接收到对应的请求数据并处理完请求后,返回相应的响应数据到句柄fd2上,此时对句柄fd2进行读取操作,已从下游模块读取响应数据。

(4)对句柄fd1进行写入:通过对句柄fd1进行写入操作以将下游模块返回的响应数据转发到上游模块。

s52:基于通信数据对目标测试模块进行测试,获取测试结果。

根据目标测试类型并选择对应的通信数据对目标测试模块进行测试,获取测试结果。例如,若测试类型为性能测试,则可以使用压测工具和录制下来的上游模块发给目标测试模块的通信数据,向被测模块施加压力,并监控目标测试模块的运行状态和各项性能指标,并进行分析,最后得到测试结果。其中,压测工具是指用于进行压力测试的工具。

在这个实施方式中,根据目标测试类型来录制目标测试模块对应的通信数据,并根据录制的通信数据来对目标测试模块进行测试,获取测试结果。在保证分布式系统测试的便捷性的同时,不需要模拟分布式系统环境,节省了测试过程中花费在环境准备上的时间,同时也节省了大量的机器资源,提高了分布式系统的测试效率。

在一个具体实施方式中,基于目标测试类型,录制目标测试模块的通信数据,如图4所示,具体包括以下步骤:

s511:若目标测试类型为性能测试,则发送测试数据到上游模块中。

其中,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,即测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

发送测试数据到上游模块中可以采用压测工具向上游模块施加压力。其中,压测工具是指用于进行压力测试的工具。而压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性和稳定性等。具体地,可以采用webbench、siege或http_load等压测工具向上游模块施加压力。

s512:录制上游模块发送给目标测试模块的上游通信数据和下游模块返回到目标测试模块的下游通信数据。

在发送测试数据到上游模块之后,上游模块基于测试数据发送对应的上游通信数据到目标测试模块中,对该上游通信数据进行录制。具体地,可以将该上游通信数据保存到对应的上游通信数据文件中。目标测试模块在接收到上游通信数据之后,会对该上游通信数据进行响应,并进行相关的处理,处理完成之后,会发送数据到对应的下游模块中,下游模块相应地会返回下游通信数据到目标测试模块中,对该下游通信数据进行录制。具体地,可以将该下游通信数据保存到对应的下游通信数据文件中。

在一个具体实施方式中,录制目标测试模块的通信数据还包括对通信数据的转发。具体的转发步骤和步骤s51中的通信数据的转发相似,在此不再赘述。

在这个实施方式中,通过发送测试数据到上游模块,从而触发不同模块之间的进行数据地通信,在实现数据转发的同时完成了数据的录制,方便后续测试过程中的数据获取,节省了大量的机器资源,提高了分布式系统测试的便捷性和效率。

在一个具体实施方式中,基于目标测试类型,录制目标测试模块的通信数据,如图5所示,具体包括以下步骤:

s511’:若目标测试类型为可靠性测试,则向通信链路中注入网络异常测试逻辑,并通过控制命令控制通信链路中预定的链路进行交互。

其中,可靠性测试是软件系统在规定的时间内以及规定的环境条件下,完成规定功能的能力。一般情况下,通过对软件系统进行测试来度量其可靠性。一般地,通过以下两种方式来度量其可靠性:(1)在规定条件下,规定时间内,软件不引起系统失效的概率;(2)在规定时间周期内,在预定条件下执行所要求的功能的能力。

在可靠性测试中,将网络异常测试逻辑注入到测试系统接管的通信链路中,并通过控制命令控制通信链路中预定的链路进行交互的方式去测试在网络异常情况下各通信链路的交互数据,从而达到实现可靠性测试的目的。其中,网络异常测试逻辑是指对特定的网络参数进行修改并对关键节点进行监控的测试逻辑。例如,分布式系统负载均衡的能力很大程度上决定了系统的可靠性,针对系统负载均衡的测试,包含节点访问频次的均衡和节点通信数据量的均衡两个维度的测试。在访问频次均衡的测试中,可以在源代码中插桩植入一些标识信息,通过发送压力并统计这些标识来分析系统各个节点访问的频次。在节点通信数据量均衡的测试中,通过在发送压力时记录各服务器网卡性能数据,分析网卡性能数据来测试热点数据分散是否均匀。

具体地,可以通过使用hook技术来实现网络异常测试逻辑的注入。即替换被测程序中调用的函数,植入包含测试逻辑的函数。其中被替换的函数主要有两种类型:

(1)针对gnuc标准库中的strcmp、fopen等函数,编写相应的api,并编译成一个so动态库,通过设置ld_preload环境变量指定该so动态库的载入优先级,以达到覆盖原来标准库api的目的。

(2)针对用户自定义的函数,通过修改符号表跳转到包含测试逻辑的api处运行,不同的测试逻辑被封装在一个so文件里,使用工具来控制载入。

在这个实施方式中,通过so的机制新增异常测试逻辑,代码通用度高,避免频繁的更新和调整,而且在转发通信数据包的同时,可以很方便地录制通信数据,能直接满足可靠性测试过程中数据录制和测试的应用需求。

在接管的通信链路中注入网络异常测试逻辑之后,通过控制命令控制通信链路中预定的链路进行交互。例如,控制命令可以体现为控制目标测试模块持续向各个下游模块发送通信数据或者通过压测工具向上游模块发送压力,并通过注入的网络异常测试逻辑来修改网络参数并对关键节点进行实时监控。

s512’:录制通信链路中预定的链路之间交互的交互数据包和经过网络异常测试逻辑的异常测试数据包。

在这个步骤中,对通信链路中预定的链路之间交互的交互数据包的录制过程和步骤s512相似,在此不再赘述。而可靠性测试中在进行数据录制的时候,还需要对经过网络异常测试逻辑的异常测试数据包进行录制并单独保存,用于对分布式系统的可靠性进行分析。

例如,若在源代码中插桩植入一些标识信息,会在通信链路中预定的链路之间交互时统计这些标识进而来分析系统各个节点访问的频次。在数据量均衡的测试中,通过在发送压力时记录各服务器网卡性能数据传输情况,分析网卡性能数据来测试热点数据分散是否均匀。进一步地,通过录制通信链路中预定的链路之间交互的交互数据包可以分析在网络异常时是否会出现网络掉包、数据乱序或数据篡改等情况。

在这个实施方式中,通过向通信链路中注入网络异常测试逻辑,并通过控制命令控制通信链路中预定的链路进行交互,并录制对应的数据包,以便于后续更好地进行可靠性测试,提高了分布式系统测试的便捷性。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例2

图6示出与实施例1中分布式系统的测试方法一一对应的分布式系统的测试装置的原理框图。如图6所示,该分布式系统的测试装置包括分布式系统测试请求获取模块10、通信链路数据获取模块20、空闲时间段获取模块30和调整测试模块40。其中,分布式系统测试请求获取模块10、通信链路数据获取模块20、空闲时间段获取模块30和调整测试模块40的实现功能与实施例1中分布式系统的测试方法对应的步骤一一对应,为避免赘述,本实施例不一一详述。

分布式系统测试请求获取模块10,用于获取分布式系统测试请求,分布式系统测试请求包括目标测试模块、目标测试类型和目标测试时间。

通信链路数据获取模块20,用于获取目标测试模块的通信链路数据,通信链路数据包括目标i/o口数量。

空闲时间段获取模块30,用于若在目标测试时间内目标i/o口数量大于或等于空闲i/o口数量,则获取并显示空闲i/o口数量大于或等于目标i/o口数量的空闲时间段。

调整测试模块40,用于获取调整测试时间,若当前系统时间达到调整测试时间,则接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试。

优选地,该分布式系统的测试装置还包括目标测试模块50。

目标测试模块50,用于若在目标测试时间内目标i/o口数量小于空闲i/o口数量,则在当前系统时间达到目标测试时间时,接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试。

优选地,调整测试模块40包括端口监听单元41和通信链路建立单元42。

端口监听单元41,用于对目标测试模块启动端口监听。

通信链路建立单元42,用于基于空闲i/o口建立目标测试模块和上游模块之间以及目标测试模块和下游模块之间的通信链路。

优选地,调整测试模块40还包括通信数据录制单元51和测试结果获取单元52。

通信数据录制单元51,用于基于目标测试类型,录制目标测试模块的通信数据。

测试结果获取单元52,用于基于通信数据对目标测试模块进行测试,获取测试结果。

优选地,通信数据录制单元51包括:测试数据发送子单元511和性能测试数据录制子单元512。

测试数据发送子单元511,用于若目标测试类型为性能测试,则发送测试数据到上游模块中。

性能测试数据录制子单元512,用于录制上游模块发送给目标测试模块的上游通信数据和下游模块返回到目标测试模块的下游通信数据。

优选地,通信数据录制单元51还包括:交互数据发送子单元511’和可靠性测试数据录制子单元512’。

交互数据发送子单元511’,用于若目标测试类型为可靠性测试,则向通信链路中注入网络异常测试逻辑,并通过控制命令控制通信链路中预定的链路进行交互。

可靠性测试数据录制子单元512’,用于录制通信链路中预定的链路之间交互的交互数据包和经过网络异常测试逻辑的异常测试数据包。

优选地,目标测试模块50中,接管目标测试模块的通信链路,基于目标测试类型对目标测试模块进行测试的具体实现单元/子单元和调整测试模块40一致,在此不再赘述。

实施例3

本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中分布式系统的测试方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例2中分布式系统的测试装置中各模块/单元的功能,为避免重复,这里不再赘述。

可以理解地,所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号和电信信号等。

实施例4

图7是本发明一实施例提供的计算机设备的示意图。如图7所示,该实施例的计算机设备60包括:处理器61、存储器62以及存储在存储器62中并可在处理器61上运行的计算机程序63。处理器61执行计算机程序63时实现上述实施例1中分布式系统的测试方法的步骤,例如图1所示的步骤s10至s40。或者,处理器61执行计算机程序63时实现上述实施例2中分布式系统的测试装置中各模块/单元的功能,例如图6所示分布式系统测试请求获取模块10、通信链路数据获取模块20、空闲时间段获取模块30和调整测试模块40的功能。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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