掌桥专利:专业的专利平台
掌桥专利
首页

异常测试方法、设备及电子设备

文献发布时间:2023-06-19 11:29:13


异常测试方法、设备及电子设备

技术领域

本公开实施例涉及计算机技术领域,尤其涉及一种异常测试方法、设备及电子设备。

背景技术

混沌工程(Chaos Engineering)是在分布式系统上进行实验的学科,目的是建立对系统抵御生产环境中失控条件的能力。

现有技术中,在进行混沌工程实验时,一般是相关人员将故障注入至待验证服务对应的依赖服务中,并在将故障注入依赖服务后,观测待验证服务的稳定性情况,以利用该稳定性情况确定实验结果。

然而,由于需要人工执行混沌工程实验流程,且需要人工确定混沌工程实验的实验结果,导致实验结果确定所需的时间较长,从而造成混沌工程实验所需的实验成本较高。

发明内容

本公开实施例提供一种异常测试方法、设备及电子设备,以解决现有确定混沌工程实验的实验结果所需时间较长的问题。

第一方面,本公开实施例提供一种异常测试方法,包括:

获取待验证服务及其对应的依赖服务,并获取所述待验证服务对应的异常事件;

将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态;

根据所述待验证服务对应的稳定性状态生成测试结果信息。

第二方面,本公开实施例提供一种异常测试设备,包括:

信息获取模块,用于获取待验证服务及其对应的依赖服务,并获取所述待验证服务对应的异常事件;

处理模块,用于将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态;

所述处理模块,还用于根据所述待验证服务对应的稳定性状态生成测试结果信息。

第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器。

所述存储器存储计算机执行指令。

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

本公开实施例提供的异常测试方法、设备及电子设备,该方法包括获取待验证服务及其对应的依赖服务,并获取所述待验证服务对应的异常事件;将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态;根据所述待验证服务对应的稳定性状态生成测试结果信息。本公开实施例通过在进行异常测试时,即在进行混沌工程实验时,确定需验证的服务,即确定待验证服务,并获取该待验证服务对应的依赖服务,即获取与该待验证服务存在关联的服务,以供利用该服务确定待验证服务的稳定性。在得到待验证服务对应的依赖服务后,将异常事件注入到该依赖服务中,监测待验证服务的稳定性变化,以得到待验证服务对应的稳定性状态,实现稳定性状态的自动确定,并根据待验证服务对应的稳定性状态生成相应的测试结果信息,即得到混沌工程实验的实验结果,实现混沌工程实验流程的自动执行,以及实现实验结果的自动确定,无需人工执行实验流程,也无需人工确定实验结果,减少确定实验结果所需的时间,以及减少进行混沌工程实验所需的时间,同时还可以降低人工成本,从而可以降低混沌工程实验所需的实验成本,提高用户体验。

附图说明

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

图1为本公开实施例提供的异常测试方法的场景示意图;

图2为本公开实施例提供的异常测试方法的流程示意图一;

图3为本公开实施例提供的待验证服务的示意图;

图4为本公开实施例提供的异常测试方法的流程示意图二;

图5为本公开实施例提供的异常测试方法的流程示意图;

图6为本公开实施例提供的异常测试设备的结构框图;

图7为本公开实施例提供的电子设备的硬件结构示意图。

具体实施方式

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

现有的混沌工程建设方案通常为故障注入测试平台(Fault Injection Testing,FIT)和自动化混沌工程实验平台。故障注入测试平台是混沌工程的初级阶段建设方案。

现有技术中,故障注入测试平台在进行混沌工程实验时,在将故障注入至待验证服务对应的依赖服务中时,相关人员通过观察待验证服务的稳定性指标来判断待验证服务的稳定性状态,并根据该稳定性状态确定相应的结果结果。但由于需要人工执行实验流程,且需要人工确定实验结果,导致实验所需的时间较长,实验结果确定所需的时间较长。同时由于服务有其自身的稳定性观测指标,不具备通用性,因此,当待验证服务存在多个时,需要相关人员熟悉不同待验证服务对应的稳定性观察指标,以根据不同待验证服务对应的稳定性观察指标确定各个待验证服务的稳定性状态,造成稳定性状态判断复杂。

因此,针对上述问题,本发明的技术构思是提供一种混沌工程的过渡阶段建设方案,以实现从故障注入测试平台升级到自动化混沌工程实验平台,其可以自动执行混沌工程实验流程,以实现混沌工程实验流程的自动执行,减少实验所需的时间,并实现实验结果的自动确定,减少实验结果确定所需的时间,从而降低混沌工程实验的成本。同时定义了一个通用的稳定性指标,即可以通过该稳定性指标确定不同服务的稳定性状态,实现服务的稳定性状态的快速准确确定。

图1为本发明实施例提供的异常测试方法的场景示意图,如图1所示,在基于电子设备101,对业务系统进行混沌工程实验时,获取该业务系统中的待验证服务以及待验证服务对应的依赖服务,对该依赖服务注入故障,以确定待验证服务的稳定性情况,从而根据该稳定性情况生成相应的实验结果,输出该实验结果。

其中,电子设备101可以是计算机设备(如,台式机、笔记本电脑、一体机等)、服务器等设备。具体的,电子设备101为包括的混沌工程实验平台的设备。

参考图2,图2为本公开实施例提供的异常测试方法流程示意图一。本实施例的方法可以应用于电子设备上,具体的,应用于电子设备上的混沌工程实验平台,该异常测试方法包括:

S201:获取待验证服务及其对应的依赖服务,并获取待验证服务对应的异常事件。

在本公开实施例中,为了提高业务系统的可靠性以及稳定性,对业务系统进行混沌工程实验以测试系统是否存在缺陷,并确定业务系统在混乱状况下的表现,从而对业务系统进行改进,以提高业务系统的可靠性和稳定性。在对业务系统进行混沌工程实验时,是基于业务系统所提供的服务进行实验的,即确定该业务系统对应的待验证服务标识,该待验证服务标识对应的服务为待验证服务,并获取该待验证服务标识对应的依赖服务标识,该依赖服务标识对应的服务为待验证服务对应的依赖服务。

其中,待验证服务为系统中需要验证稳定性的服务。待验证服务对应的依赖服务表示业务系统所提供的服务中与待验证服务之间存在依赖关系的服务。

可选的,待验证服务对应的依赖服务为待验证服务的下游依赖服务。

可选的,在确定系统对应的待验证服务标识时,可以直接从第一预设位置中直接获取,也可以基于应用场景进行确定,即获取相关人员选择的实验场景,并将该场景所涉及到的服务的标识作为待验证服务标识,当然,也可以基于其它方式确定待验证服务标识,例如,基于其它终端发送的信息确定,在此,不对其进行限制。

其中,实验场景具有通用性,其可以满足建设高可用韧性业务系统的需求,其包括服务调用链的强弱依赖关系场景、验证服务调用的超时时间是否合理场景等。

进一步的,可选的,第一预设位置包括硬盘、数据表、数据库等存储位置,本公开不以此为限。

可选的,待验证服务标识为待验证服务的名称、编号等唯一标识。相应的,待验证服务标识对应的依赖服务标识也可以为依赖服务的名称、编号等唯一标识。

可选的,在获取该待验证服务标识对应的依赖服务标识时,对于每个待验证服务标识,从预设验证依赖服务映射表中查找该待验证服务标识对应的依赖服务标识,从而可以确定待验证服务对应的依赖服务。

在本公开实施例中,在进行混沌工程实验时,需要进行故障注入,因此,需要确定需要注入的故障,即异常事件,则查找待验证服务标识对应的异常事件标识,实现异常事件的确定。

进一步的,可选的,在查找待验证服务标识对应的异常事件标识时,对于待验证服务标识对应的每个依赖服务标识,查找该依赖服务标识对应的异常事件标识,以确定该依赖服务标识对应的依赖服务所需注入的异常事件。

其中,每个依赖服务对应的异常事件可以相同也可以不同,本公开不对其进行限制。

其中,异常事件类型包括可以根据实际情况进行选择,其包括拒绝服务故障、丢包或延时等类型。

S202:将异常事件注入至待验证服务对应的依赖服务中,以确定待验证服务对应的稳定性状态。

在本公开实施例中,在确定待验证服务对应的依赖服务以及待验证服务对应的异常事件后,对于待验证服务对应的每个依赖服务,将异常事件注入至该依赖服务中,并判断待验证服务的稳定性,从而得到与待验证服务和该依赖服务对应的稳定性状态,即得到待验证服务对应的一个稳定性状态。

另外,可选的,当待验证服务对应的每个依赖服务都存在其对应的异常事件时,在将异常事件注入至依赖服务中时,将该依赖服务对应的异常事件注入至该依赖服务中。

可选的,稳定性状态包括稳定状态和不稳定状态。

具体的,当待验证服务对应的稳定性状态为稳定状态时,表明在将异常事件注入至该依赖服务中后,即依赖服务出现异常时,待验证服务仍是稳定的,即其仍可以运行。

具体的,当待验证服务对应的稳定性状态为不稳定性状态时,表明在将异常事件注入至该依赖服务中后,即依赖服务出现异常时,待验证服务是不稳定的,即其无法正常运行。

S203:根据待验证服务对应的稳定性状态生成测试结果信息。

在本公开实施例中,在得到待验证服务对应的所有稳定性状态后,根据待验证服务对应的各个稳定性状态生成相应的测试结果信息,并输出该测试结果信息,以供相关人员根据测试结果信息确定系统是否存在问题,从而确定是否需对系统进行改进,以保证系统的可靠性和稳定性。

可选的,测试结果信息包括待验证服务对应的验证结果。当实验场景不同时,根据待验证服务对应的稳定性状态确定的待验证服务对应的验证结果不同,例如,当实验场景为服务调用链的强弱依赖关系场景时,表明需要确定待验证服务与其对应的依赖服务之间的强弱依赖关系,则待验证服务对应的验证结果为待验证服务与其对应的依赖服务之间的依赖关系,其中,该依赖关系包括强依赖和弱依赖。

举例来说,如图3所示,服务1为待验证服务,服务a和服务b分别为服务1的下游依赖服务。在将异常事件注入至服务a时,服务1的稳定性状态为稳定状态,则确定服务1与服务a之间为弱依赖,即可以得到待验证服务对应的一个验证结果为服务1与服务a之间为弱依赖。在将异常事件注入至服务b时,服务1的稳定性状态为不稳定状态,则确定服务1与服务b之间为强依赖,即可以得到待验证服务对应的一个验证结果为服务1与服务b之间为强依赖。

从上述描述可知,在进行异常测试时,即在进行混沌工程实验时,确定需验证的服务,即确定待验证服务,并获取该待验证服务对应的依赖服务,即获取与该待验证服务存在关联的服务,以供利用该服务确定待验证服务的稳定性。在得到待验证服务对应的依赖服务后,将异常事件注入到该依赖服务中,监测待验证服务的稳定性变化,以得到待验证服务对应的稳定性状态,实现稳定性状态的自动确定,并根据待验证服务对应的稳定性状态生成相应的测试结果信息,即得到混沌工程实验的实验结果,实现混沌工程实验流程的自动执行,以及实现实验结果的自动确定,无需人工执行实验流程,也无需人工确定实验结果,减少确定实验结果所需的时间,以及减少进行混沌工程实验所需的时间,同时还可以降低人工成本,从而可以降低混沌工程实验所需的实验成本,提高用户体验。

参考图4,图4为本公开实施例提供的异常测试方法流程示意图二。本实施例中详细描述在将异常事件注入至待验证服务对应的依赖服务后,可以利用稳定性指标的变化情况确定待验证服务的稳定性状态的过程,该带宽测量方法包括:

S401:获取待验证服务及其对应的依赖服务,并获取待验证服务对应的异常事件。

在本公开实施例中,在进行异常测试时,即在进行混沌工程实验时,需要构造进行实验所需的网络流量,则获取测试环境信息,并获取测试环境信息对应的流量构造方案。基于流量构造方案进行网络流量构造操作,以得到测试环境流量,实现实验流量的构造。

其中,在进行混沌工程实验时,可以在线上环境或线上环境进行该实验。相应的,测试环境信息包括线上环境标识和/或线下环境标识。

具体的,当测试环境信息为线下环境标识时,表明混沌工程实验是在线下环境进行的,其不会影响线上系统的稳定性或用户的体验,则获取线下环境对应的流量构造方案,以基于该线下环境对应的流量构造方案构造实验所需的流量,例如,基于该流量构造方案,利用自动化测试平台,执行测试用例以产生测试流量,实现网络流量的构造。

具体的,当测试环境信息为线上环境标识时,表明混沌工程实验是在线上环境进行的。由于线上环境是用户真正在使用的环境,需要控制实验的影响范围,即爆炸半径,因此需要筛选流量,则获取线上环境对应的流量构造方案构造实验所需的流量,以实现流量的筛选。例如,基于该流量构造方案,按照前端的平台去划分流量,以实现实验流量的筛选;又例如,基于该流量构造方案部署集群(例如,金丝雀发布集群),以通过集群筛选流量。

可以理解,在基于流量构造方案进行构造流量时,实际是执行流量构造方案所包括的操作步骤,以实现流量的构造筛选。

在本公开实施例中,在实验流量,即测试环境流量构造完成后,构造的测试环境流量的实际大小可能并不是所需构造的流量大小,即目标流量大小,因此,需要判断测试环境流量的实际大小是否为目标流量大小,以确定是否需要调整测试环境流量的大小,若测试环境流量的大小不等于目标流量大小,表明得到的测试环境流量的实际大小并不是目标流量大小,则对测试环境流量进行调整以将测试环境流量的大小调整至目标流量大小,即调整后的测试环境流量的大小为该目标流量大小。

可选的,若测试环境流量的大小等于目标流量大小,表明得到的测试环境流量的实际大小已经为目标流量大小,无需进行调整。

以一个具体应用场景为例,实验环境为线上环境,通过线上环境对应的流量构造方案部署金丝雀发布集群,金丝雀发布集群中的流量便为测试环境流量,即实验流量,实现实验流量的构造,即筛选。测试环境流量对应的目标流量大小为100kbs,而构造的金丝雀发布集群中的流量规模,即测试环境流量的大小为90kbs,因此,需要将测试环境流量的大小由90kbs调整至100kbs。

另外,可选的,当调整测试环境流量的大小后,在确定待验证服务对应的验证结果后,还需要对其进行恢复。具体的,将调整前的测试环境流量的大小作为初始流量大小,在确定待验证服务对应的验证结果后,将测试环境流量的当前大小调整至初始流量大小。

承接上述应用场景,在确定待验证服务对应的验证结果后,将金丝雀发布集群中的流量规模恢复至90kbs。

S402:在将异常事件注入至待验证服务对应的依赖服务中后,获取待验证服务对应的稳定性指标信息。

在本公开实施例中,对于待验证服务对应的每个依赖服务,在将异常事件注入至该依赖服务中后,监控稳定性指标的变化情况,以得到多个稳定性指标值,即得到与该待验证服务和该依赖服务对应的稳定性指标信息,从而可以通过对该稳定性指标信息进行分析,确定该待验证服务的稳定性状态,进而确定该待验证服务与该依赖服务之间的依赖关系。

其中,稳定性指标为一种通用的服务稳定状态描述指标,不同类型的服务均可以将其作为自身的稳定性观测指标,例如,稳定性指标为服务响应时间、所耗流量。

其中,待验证服务对应的稳定性指标信息包括多个稳定性指标值。可选的,稳定性指标信息还可以包括稳定性指标值对应的时间,即生成该稳定性指标值的时间。

S403:根据待验证服务对应的稳定性指标信息确定待验证服务对应的稳定性状态。

在本公开实施例中,对于待验证服务对应的每个依赖服务,在得到与该依赖服务和该待验证服务对应的稳定性指标信息后,对该稳定性指标信息进行分析,以确定在该依赖服务在出现故障时,待验证服务的稳定性状态,即得到待验证服务对应的稳定性状态。

在本公开实施例中,可选的,S403的实现方式包括:

确定多个稳定性指标值中是否存在异常指标值。

若存在异常指标值,则确定待验证服务对应的稳定性状态为不稳定状态。

若不存在异常指标值,则确定待验证服务对应的稳定性状态为稳定状态。

具体的,在对稳定性指标信息进行分析时,确定稳定性指标信息所包括的所有稳定性指标值中是否存在异常指标值,若存在异常指标值,表明在将异常时间注入待验证服务对应的依赖服务中后,即该依赖服务出现异常后,该待验证服务也出现了异常,即该待验证服务存在不稳定情况,则确定该待验证服务对应的稳定性状态为不稳定状态。若所有稳定性指标值中不存在异常指标值,表明在将异常时间注入待验证服务对应的依赖服务中后,即该依赖服务出现异常后,该待验证服务并未出现异常,仍是正常运行,则确定该待验证服务对应的稳定性状态为稳定状态。

进一步的,可选的,在确定多个稳定性指标值中是否存在异常指标值时,可以通过以下两种方式进行确定。

一种方式为:根据多个稳定性指标值生成稳定性曲线。若稳定性曲线不存在异常曲线段,则确定多个稳定性指标值中不存在异常指标值。若稳定性曲线存在异常曲线段,则确定多个稳定性指标值中存在异常指标值。

在本公开实施例中,基于稳定性指标信息所包括的多个稳定性指标值生成相应的曲线,以得到稳定性曲线,判断该稳定性曲线是否存在异常曲线段,当存在异常曲线段时,表明该稳定性曲线并不是平稳变化的,存在呈异常上升状态或异常下降状态的曲线段,即存在骤增或骤减的稳定性指标值,则确定该多个稳定性指标值中存在异常指标值。

当稳定性曲线不存在异常曲线段时,表明该稳定性曲线是平稳变化的,并不存在呈异常上升状态或异常下降状态的曲线段,即稳定性指标值变化较小,则确定该多个稳定性指标值中不存在异常指标值。

其中,异常曲线段为斜率的绝对值大于预设数值的曲线段。由于当曲线的斜率的绝对值越大时,曲线越陡峭,因此,当曲线段的斜率的绝对值大于预设数值时,该曲线段是陡峭的,即该曲线段呈突然上升状态,即异常上升状态,或突然下降状态,即异常下降状态。

其中,预设数值可以根据实际情况进行设置,本公开不对其进行限制。

另外,可选的,在生成稳定性曲线时,将每个稳定性指标值坐标一个坐标点,并将其标注在预设坐标系中,对预设坐标系中的坐标点进行曲线拟合,得到相应的稳定性曲线。

其中,预设坐标系的纵坐标为稳定性指标,横坐标可以根据实际情况进行设置,例如,将时间,即稳定性指标值对应的时间作为横坐标。

另外,曲线段的斜率可以为稳定性曲线上的某一个坐标点的斜率,也可以是基于稳定性曲线上的相邻两个坐标点确定的斜率。

另一种方式为:获取多个稳定性指标值中的相邻稳定性指标值之间的差值。若所有相邻稳定性指标值之间的差值均在预设差值范围内,则确定多个稳定性指标值中不存在异常指标值。若存在相邻稳定性指标值之间的差值未在预设差值范围内,则确定多个稳定性指标值中存在异常指标值。

具体的,计算稳定性指标信息中的任意相邻两个稳定性指标值之间的差值,若所有差值均在预设差值范围内,表明稳定性指标值变化较小,即稳定性指标值是平稳变化的,则确定稳定性指标信息所包括的多个稳定性指标值中不存在异常指标值。若存在差值未在预设差值范围内,表明存在骤增或骤减的稳定性指标值,即存在变化较大的稳定性指标值,则确定该多个稳定性指标值中存在异常指标值。

S404:根据待验证服务对应的稳定性状态生成测试结果信息。

在本公开实施例中,对于待验证服务对应的每个依赖服务,在将异常事件注入至该依赖服务后,即在给该依赖服务注入故障后,基于稳定性指标值确定待验证服务的稳定性,即得到待验证服务对应的稳定性状态。若待验证服务对应的稳定性状态为稳定状态,表明即使待依赖服务出现异常,该待验证服务仍可以稳定运行,则确定待验证服务对应的验证结果为弱依赖结果,即该待验证服务若依赖于该依赖服务。若待验证服务对应的稳定性状态为不稳定状态,表明当待依赖服务出现异常时,该待验证服务无法稳定运行,则确定待验证服务对应的验证结果为强依赖结果,即该待验证服务强依赖于该依赖服务。

在任意公开实施例中,可选的,测试结果信息还包括结果关联数据,其中结果关联数据表示与生成待验证服务对应的验证结果相关联的数据,即可以推断出验证结果的上下文数据。例如,验证结果为服务1与服务a之间的依赖关系为强依赖,则结果关联数据包括异常指标值。

进一步的,可选的,在得到待验证服务对应的验证结果后,还可以确定该验证结果是否符合预期,其具体过程为:判断待验证服务对应的验证结果是否为标准结果。若不为标准结果,则输出修改提示信息。若为标准结果,则输出测试完成提示信息。

具体的,获取标准结果,该标准结果为预先设置的结果。将待验证服务对应的验证结果与待验证服务对应的标准结果进行比较,若两者相同,表明该验证结果符合预期,则输出测试完成提示信息,以告知相关人员所进行混沌工程实验的结果符合预期,可以结束。若两者不同,表明该验证结果不符合预期,则输出修改提示信息,以告知相关人员所进行的混沌工程实验的结果不符合预期,需要进行改造,即需要修改实验方案和/或系统,以在改造后,再次进行混沌工程实验,直至最后得到的验证结果符合预期。

举例来说,得到的一个验证结果为服务1与服务a之间为弱依赖,但标准结果为服务1与服务a之间为强依赖,则确定该验证结果不符合标准结果,相应的,输出修改提示信息。

可以理解,在确定所有验证结果均为标准结果时,才输出测试完成提示信息,若存在验证结果不为标准结果,则输出修改提示信息。

另外,可选的,由于在进行混沌工程实验时,会发生不可预料的情况,相应的,得到的验证结果也可能是不可预测的,即不存在相应的标准结果,因此,在得到测试结果信息后,还可以由相关人员评估该测试结果信息中的验证结果是否符合预期。

另外,可选的,还可以存储相关人员输入的改造信息,其中该改造信息包括改造进度信息、改造方案、出现问题原因等。

其中,改造进度信息包括不同改造时间以及该改造时间对应的改造事项,在该改造时间内所需完成的改造事项,以使电子设备基于该改造进度提示相关人员在改造时间内完成相应的改造事项,避免出现长时间未完成改造的情况,保证改造完成的时限以及效率。

下面通过一个具体的应用实例,对混沌工程实验的流程进行描述,如图5所示,其包括:

1)选择实验目标,即混沌工程实验确定实验场景,以确定需验证稳定性的服务及其对应的需注入故障的服务,例如,依赖服务。

2)实验流量调整,即在构造进行混沌工程所需的实验流量后,对其进行调整,以将其调整至所需的流量大小。

3)注入故障和稳定性检测,即在需注入故障的服务中注入异常事件,并利用稳定性指标值确定此时需验证稳定性的服务的稳定性状态。

4)恢复流量,即将实验流量的大小恢复至调整前的大小。

5)生成实验报告,即在确定服务的稳定性状态后,基于该稳定性状态后,生成验证结果,并获取与生成该验证结果相关的关联数据,生成包括该验证结果以及该关联数据的实验报告。

6)实验报告确定,即输出该实验报告,以使相关负责人员对其进行确认,从而确定系统是否存在问题。

7)系统问题修复,即在确定系统存在问题时,相关负责人员进行系统问题的修复,以保证系统的稳定性和可用性,当然也可以是系统自动进行异常修复。

另外,混沌工程实验还可以定时自动执行上述混沌工程实验流程。

在本公开实施例中,稳定性指标是一个通用可以描述服务稳定状态的指标,其与系统的架构、框架和所使用的开发语言无关,当服务未出现可用性问题时,该稳定性指标是平稳的,当服务或系统出现可用性问题,即异常时,稳定性指标出现骤增或骤减的情况,从而可以快速体现出该异常,进而满足混沌工程实验的可观测能力。

在本公开实施例中,当在线上环境进行混沌工程实验时,需要控制实验的爆炸半径,因此,相关人员可以根据实际时延需求筛选流量,即确定流量筛选的的步骤,以得到相应的流量构造方案,从而电子设备在基于该流量构造方案筛选方案时,可以筛选出所需的流量,并在利用该流量进行混沌工程实验时,可以保证实验的影响范围,避免出现事故,出现资损或影响用户体验。

在本公开实施例中,在将异常事件注入至待验证服务对应的依赖服务以使该依赖服务出现异常时,表明需要利用待验证服务的相关监测数据确定待验证服务的稳定性情况,则获取稳定性指标信息,并对稳定性指标信息进行分析,以确定待验证服务的稳定性情况,即得到该待验证服务对应的稳定性状态,实现待验证服务的自动准确确定,提高服务的稳定性状态的确定效率以及准确率。

对应于上文实施例所述的异常测试方法,图6为本公开实施例提供的异常测试设备的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图6,异常测试设备60包括:信息获取模块601和处理模块602。

其中,信息获取模块601,用于获取待验证服务及其对应的依赖服务,并获取待验证服务对应的异常事件。

处理模块602,用于将异常事件注入至待验证服务对应的依赖服务中,以确定待验证服务对应的稳定性状态。

处理模块602,还用于根据待验证服务对应的稳定性状态生成测试结果信息。

在本公开的一个实施例中,处理模块602还用于:

在将异常事件注入至待验证服务对应的依赖服务中后,获取待验证服务对应的稳定性指标信息。

根据待验证服务对应的稳定性指标信息确定待验证服务对应的稳定性状态。

在本公开的一个实施例中,若待验证服务对应的稳定性指标信息包括多个稳定性指标值,则处理模块602还用于:

确定多个稳定性指标值中是否存在异常指标值。

若存在异常指标值,则确定待验证服务对应的稳定性状态为不稳定状态。

若不存在异常指标值,则确定待验证服务对应的稳定性状态为稳定状态。

在本公开的一个实施例中,处理模块602还用于:

根据多个稳定性指标值生成稳定性曲线。

若稳定性曲线不存在异常曲线段,则确定多个稳定性指标值中不存在异常指标值。

若稳定性曲线存在异常曲线段,则确定多个稳定性指标值中存在异常指标值。

在本公开的一个实施例中,异常曲线段为斜率的绝对值大于预设数值的曲线段。

在本公开的一个实施例中,处理模块602还用于:

获取多个稳定性指标值中的相邻稳定性指标值之间的差值。

若所有相邻稳定性指标值之间的差值均在预设差值范围内,则确定多个稳定性指标值中不存在异常指标值。

若存在相邻稳定性指标值之间的差值未在预设差值范围内,则确定多个稳定性指标值中存在异常指标值。

在本公开的一个实施例中,测试结果信息包括待验证服务对应的验证结果,则处理模块602还用于:

若待验证服务对应的稳定性状态为稳定状态,则确定待验证服务对应的验证结果为弱依赖结果。

若待验证服务对应的稳定性状态为不稳定状态,则确定待验证服务对应的验证结果为强依赖结果。

在本公开的一个实施例中,处理模块602还用于:

判断待验证服务对应的验证结果是否为标准结果。

若不为标准结果,则输出修改提示信息。

若为标准结果,则输出测试完成提示信息。

在本公开的一个实施例中,测试结果信息包括待验证服务对应的验证结果和结果关联数据,其中结果关联数据表示与生成待验证服务对应的验证结果相关联的数据。

在本公开的一个实施例中,处理模块602还用于:

获取测试环境信息,并获取测试环境信息对应的流量构造方案。

基于流量构造方案进行网络流量构造操作,以得到测试环境流量。

在本公开的一个实施例中,处理模块602还用于:

若测试环境流量的大小不等于目标流量大小,则对测试环境流量进行调整以将测试环境流量的大小调整至目标流量大小。

本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。

参考图7,其示出了适于用来实现本公开实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(Read Only Memory,简称ROM)702中的程序或者从存储装置709加载到随机访问存储器(Random Access Memory,简称RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。

通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置709;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置709被安装,或者从ROM702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。

本公开实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的异常测试方法。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

第一方面,根据本公开的一个或多个实施例,提供了一种异常测试方法,包括:

获取待验证服务及其对应的依赖服务,并获取所述待验证服务对应的异常事件;

将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态;

根据所述待验证服务对应的稳定性状态生成测试结果信息。

根据本公开的一个或多个实施例,将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态,包括:

在将所述异常事件注入至所述待验证服务对应的依赖服务中后,获取所述待验证服务对应的稳定性指标信息;

根据所述待验证服务对应的稳定性指标信息确定所述待验证服务对应的稳定性状态。

根据本公开的一个或多个实施例,所述待验证服务对应的稳定性指标信息包括多个稳定性指标值,则根据所述待验证服务对应的稳定性指标信息确定所述待验证服务对应的稳定性状态,包括:

确定所述多个稳定性指标值中是否存在异常指标值;

若存在异常指标值,则确定所述待验证服务对应的稳定性状态为不稳定状态;

若不存在异常指标值,则确定所述待验证服务对应的稳定性状态为稳定状态。

根据本公开的一个或多个实施例,确定所述多个稳定性指标值中是否存在异常指标值,包括:

根据所述多个稳定性指标值生成稳定性曲线;

若所述稳定性曲线不存在异常曲线段,则确定所述多个稳定性指标值中不存在异常指标值;

若所述稳定性曲线存在异常曲线段,则确定所述多个稳定性指标值中存在异常指标值。

根据本公开的一个或多个实施例,所述异常曲线段为斜率的绝对值大于预设数值的曲线段。

根据本公开的一个或多个实施例,确定所述多个稳定性指标值中是否存在异常指标值,包括:

获取所述多个稳定性指标值中的相邻稳定性指标值之间的差值;

若所有相邻稳定性指标值之间的差值均在预设差值范围内,则确定所述多个稳定性指标值中不存在异常指标值;

若存在相邻稳定性指标值之间的差值未在预设差值范围内,则确定所述多个稳定性指标值中存在异常指标值。

根据本公开的一个或多个实施例,若所述测试结果信息包括所述待验证服务对应的验证结果,则所述根据所述待验证服务对应的稳定性状态生成测试结果信息,包括:

若所述待验证服务对应的稳定性状态为稳定状态,则确定所述待验证服务对应的验证结果为弱依赖结果;

若所述待验证服务对应的稳定性状态为不稳定状态,则确定所述待验证服务对应的验证结果为强依赖结果。

根据本公开的一个或多个实施例,所述方法还包括:

判断所述待验证服务对应的验证结果是否为标准结果;

若不为所述标准结果,则输出修改提示信息;

若为所述标准结果,则输出测试完成提示信息。

根据本公开的一个或多个实施例,所述测试结果信息包括待验证服务对应的验证结果和结果关联数据,其中所述结果关联数据表示与生成所述待验证服务对应的验证结果相关联的数据。

根据本公开的一个或多个实施例,所述方法还包括:

获取测试环境信息,并获取所述测试环境信息对应的流量构造方案;

基于所述流量构造方案进行网络流量构造操作,以得到测试环境流量。

根据本公开的一个或多个实施例,所述方法还包括:

若所述测试环境流量的大小不等于目标流量大小,则对所述测试环境流量进行调整以将所述测试环境流量的大小调整至目标流量大小。

第二方面,根据本公开的一个或多个实施例,提供了一种异常测试设备,包括:

信息获取模块,用于获取待验证服务及其对应的依赖服务,并获取所述待验证服务对应的异常事件;

处理模块,用于将所述异常事件注入至所述待验证服务对应的依赖服务中,以确定所述待验证服务对应的稳定性状态;

所述处理模块,还用于根据所述待验证服务对应的稳定性状态生成测试结果信息。

根据本公开的一个或多个实施例,所述处理模块还用于:

在将所述异常事件注入至所述待验证服务对应的依赖服务中后,获取所述待验证服务对应的稳定性指标信息;

根据所述待验证服务对应的稳定性指标信息确定所述待验证服务对应的稳定性状态。

根据本公开的一个或多个实施例,若所述待验证服务对应的稳定性指标信息包括多个稳定性指标值,则所述处理模块还用于:

确定所述多个稳定性指标值中是否存在异常指标值;

若存在异常指标值,则确定所述待验证服务对应的稳定性状态为不稳定状态;

若不存在异常指标值,则确定所述待验证服务对应的稳定性状态为稳定状态。

根据本公开的一个或多个实施例,所述处理模块还用于:

根据所述多个稳定性指标值生成稳定性曲线;

若所述稳定性曲线不存在异常曲线段,则确定所述多个稳定性指标值中不存在异常指标值;

若所述稳定性曲线存在异常曲线段,则确定所述多个稳定性指标值中存在异常指标值。

根据本公开的一个或多个实施例,所述异常曲线段为斜率的绝对值大于预设数值的曲线段。

根据本公开的一个或多个实施例,所述处理模块还用于:

获取所述多个稳定性指标值中的相邻稳定性指标值之间的差值;

若所有相邻稳定性指标值之间的差值均在预设差值范围内,则确定所述多个稳定性指标值中不存在异常指标值;

若存在相邻稳定性指标值之间的差值未在预设差值范围内,则确定所述多个稳定性指标值中存在异常指标值。

根据本公开的一个或多个实施例,所述测试结果信息包括所述待验证服务对应的验证结果,则所述处理模块还用于:

若所述待验证服务对应的稳定性状态为稳定状态,则确定所述待验证服务对应的验证结果为弱依赖结果;

若所述待验证服务对应的稳定性状态为不稳定状态,则确定所述待验证服务对应的验证结果为强依赖结果。

根据本公开的一个或多个实施例,所述处理模块还用于:

判断所述待验证服务对应的验证结果是否为标准结果;

若不为所述标准结果,则输出修改提示信息;

若为所述标准结果,则输出测试完成提示信息。

根据本公开的一个或多个实施例,所述测试结果信息包括待验证服务对应的验证结果和结果关联数据,其中所述结果关联数据表示与生成所述待验证服务对应的验证结果相关联的数据。

在本公开的一个实施例中,所述处理模块还用于:

获取测试环境信息,并获取所述测试环境信息对应的流量构造方案;

基于所述流量构造方案进行网络流量构造操作,以得到测试环境流量。

根据本公开的一个或多个实施例,所述处理模块还用于:

若所述测试环境流量的大小不等于目标流量大小,则对所述测试环境流量进行调整以将所述测试环境流量的大小调整至目标流量大小。

第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

第五方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的异常测试方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 异常测试方法、设备及电子设备
  • 一种电子设备异常恢复装置及电子设备
技术分类

06120112942055