具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本说明书旨在提供一种针对基于节点化测试框架的业务***,对该业务***中搭载的待测试业务所包括的若干待测试节点进行异步测试的技术方案。
具体地,针对上述若干待测试节点中的任一目标测试节点,可以在确定这若干待测试节点中,包括与该目标测试节点存在数据引用关系的前置测试节点时,从分别与这若干待测试节点进行数据对接的数据池中,查询与该前置测试节点对应的测试结果,并至少将查询到的该测试结果作为测试输入,对该目标测试节点进行测试。
其中,节点化测试框架可以是在SOFA框架的底层技术的基础上,基于上述业务***中搭载的待测试业务的业务特性,采用节点化的方式提供测试输出的测试框架;而待测试节点则可以是与该业务***中搭载的待测试业务对应的业务接口,通过调用这些业务接口可以执行该待测试业务。
在上述技术方案中,由于业务***中搭载的待测试业务所包括的若干待测试节点均可以异步完成测试;并且,将测试结果写入与所述若干待测试节点进行数据对接的数据池;因此,在针对所述待测试业务中的任一待测试节点进行测试时,不再需要同步等待前置节点测试完成测试得到测试结果,而是可以直接从所述数据池中查询到前置测试节点的测试结果,并将查询到的前置测试节点的测试结果作为测试输入该待测试节点进行测试,从而可以极大的提升测试框架的测试运行速度,降低测试框架的测试耗时。
请参考图1,图1是相关技术中节点化测试框架的架构示意图。
如图1所示,基于该节点化测试框架的业务***中搭载的待测试业务可以包括节点1、节点2和节点3。在对节点1进行测试时,需要利用与节点1对应的接口参数;在对节点2进行测试时,则需要利用节点1的测试结果,以及与节点1对应的接口参数;而在对节点3进行测试时,需要利用节点2的测试结果,以及与节点3对应的接口参数。在这种情况下,在将节点3确定为目标测试节点进行测试时,节点1和节点2即为节点3的前置测试节点。
相关技术中,在根据用户的测试指令,将节点3确定为目标测试节点进行测试时,首先可以将与节点1对应的接口参数作为测试输入,对节点1进行测试,得到节点1的测试结果;然后可以将与节点2对应的接口参数,以及节点1的测试结果作为测试输入,对节点2进行测试,得到节点2的测试结果;最后可以将与节点3对应的接口参数,以及节点2的测试结果作为测试输入,对节点3进行测试,以完成本次测试。
由于在对节点3进行测试时,需要同步等待节点1和节点2测试完成,因此对节点3的测试通常需要耗费较长时间,测试效率低下。另一方面,如果节点1和节点2中的任意一个测试失败,则无法继续对节点3进行测试,而在重新开始对节点3进行测试时,也需要重新对节点1和节点2进行测试,以获取节点1和节点2的测试结果,作为节点3的测试输入的一部分。
为了解决上述问题,本说明书提供一种测试方法和装置、电子设备。
请参考图2,图2是本说明书一示例性实施例示出的一种节点化测试框架的架构示意图。
如图2所示,在基于该节点化测试框架的业务***中搭载的待测业务可以包括节点1、节点2和节点3。其中,节点1、节点2和节点3可以异步执行,即在对节点3进行测试时,不再需要等待节点1和/或节点2测试完成;此外,可以同时对多个节点进行测试。
另一方面,节点1、节点2和节点3可以分别与预先设置的数据池进行数据对接。
请参考图3,图3是本说明书一示例性实施例示出的一种测试方法的流程图。
上述测试方法可以应用于基于图2所示的节点化测试框架的业务***,包括如下步骤:
步骤302,接收到针对所述若干待测试节点中的任一目标测试节点的测试指令。
在本实施例中,上述业务***可以向用户输出测试页面,在该测试页面中可以向用户展示该业务***中搭载的待测试业务所包括的待测试节点,用户可以从这些待测试节点中选择一个待测试节点作为目标测试节点,并点击展示在该测试页面中的“测试”按钮。在检测到用户针对“测试”按钮的点击操作时,可以确定接收到针对该目标测试节点的测试指令,从而可以基于该测试指令,对该目标测试节点进行测试。以图2为例,在该业务***向用户输出的测试页面中,可以展示节点1、节点2和节点3,假设用户选择节点3作为目标测试节点,则在检测到用户针对“测试”按钮的点击操作时,可以基于针对节点3的测试指令,对节点3进行测试。
另一方面,如果在对用户选择的目标测试节点进行测试时,需要利用与该目标测试节点对应的接口参数,则用户也可以通过该测试页面,输入与该目标测试节点对应的接口参数。
在示出的一种实施方式中,也可以在达到预设的触发条件时,将对应的待测试节点确定为目标测试节点,并触发生成针对该目标测试节点的测试指令。继续以图2为例,假设为节点3设置了“上午8:00”的触发条件,则在到达上午8:00时,可以将节点3确定为目标测试节点,并触发生成针对节点3的测试指令。
步骤304,响应于所述测试指令,确定所述若干待测试节点中是否包括与所述目标测试节点存在数据引用关系的前置测试节点。
在前述步骤302中确定接收到针对上述目标测试节点的测试指令时,可以基于该测试指令进行响应。具体地,响应于该测试指令,可以判断上述业务***中搭载的待测试业务所包括的待测试节点中,是否包括与该目标测试节点存在数据引用关系的前置测试节点。
以图2为例,假设在对节点1进行测试时,需要利用与节点1对应的接口参数;在对节点2进行测试时,则需要利用节点1的测试结果,以及与节点1对应的接口参数;而在对节点3进行测试时,需要利用节点2的测试结果,以及与节点3对应的接口参数,则在这种情况下,在将节点2确定为目标测试节点进行测试时,节点1即为与节点2存在数据引用关系的的前置测试节点;而在将节点3确定为目标测试节点进行测试时,节点2即为与节点3存在数据引用关系的前置测试节点。
另一方面,如果在对某个待测试节点进行测试时,不再需要利用其他待测试节点的测试结果,则说明在将该待测试节点确定为目标测试节点进行测试时,不存在与该目标测试节点存在数据引用关系的前置测试节点。
在示出的一种实施方式中,针对某个待测试节点,可以根据该待测试节点的节点属性,判断在对该待测试节点进行测试时是否需要利用其他待测试节点的测试结果,并确定该待测试节点的前置测试节点。需要说明的是,某个待测试节点的前置测试节点可以有多个,也可以仅有一个。
步骤306,如果所述若干待测试节点中包括与所述目标测试节点存在数据引用关系的前置测试节点,则从所述数据池中查询与所述前置测试节点对应的测试结果,并至少将查询到的所述测试结果作为测试输入对所述目标测试节点进行测试。
根据前述步骤304中的判断结果,如果确定上述业务***中搭载的待测试业务所包括的待测试节点中,包括与该目标测试节点存在数据引用关系的前置测试节点,则可以从分别与各个待测试节点进行数据对接的数据池中,查询与该前置测试节点对应的测试结果,并将查询到的该前置测试节点对应的测试结果作为该目标测试节点的测试输入,对该目标测试节点进行测试。
或者,如果在对该目标测试节点进行测试时,还需要利用与该目标测试节点对应的接口参数,则可以将查询到的该前置测试节点对应的测试结果,以及与该目标测试节点对应的接口参数作为该目标测试节点的测试输入,对该目标测试节点进行测试。
在示出的一种实施方式中,如果确定上述业务***中搭载的待测试业务所包括的待测试节点中,不包括与该目标测试节点存在数据引用关系的前置测试节点,则可以直接对该目标测试节点进行测试;或者,可以将与该目标测试节点对应的接口参数作为该目标测试节点的测试输入,对该目标测试节点进行测试。
在示出的一种实施方式中,在完成对上述目标测试节点(第一目标测试节点)的测试后,可以获取该目标测试节点的测试结果,并将获取到的该目标测试节点的测试结果异步写入上述数据池,即在完成对某个目标测试节点的测试后,可以直接将获取到的该目标测试节点的测试结果写入该数据池。
这样,后续在对另一目标测试节点(第二目标测试节点)进行测试时,如果需要利用前述目标测试节点(第一目标测试节点)的测试结果(即第一目标测试节点为第二目标测试节点的前置测试节点),则可以从该数据池中查询到与该第一目标测试节点对应的测试结果,从而可以直接将查询到的该第一目标测试节点对应的测试结果作为该第二目标测试节点的测试输入的一部分,对该第二目标测试节点进行测试。
在示出的一种实施方式中,为了实现在完成对某个目标测试节点的测试后,将获取到的该目标测试节点的测试结果写入与该目标测试节点进行对接的数据池,可以在与该目标测试节点对应的测试用例中设置***。这样,在完成对该目标测试节点的测试后,可以基于与该目标测试节点对应的测试用例中搭载的***,拦截该目标测试节点的测试结果。后续,即可将拦截到的该目标测试节点的测试结果异步写入该数据池。
在示出的一种实施方式中,在将某个目标测试节点的测试结果写入与该目标测试节点进行对接的数据池时,可以为该测试结果标记该目标测试节点的测试属性。其中,测试属性可以是该目标测试节点的节点ID,或者该目标测试节点对应的测试数据的数据特征,例如:该目标测试节点对应的测试数据所属的应用场景等,本说明书对此不作限制。
这样,针对某个待测试节点,可以根据该待测试节点的节点属性,判断在对该待测试节点进行测试时是否需要利用其他待测试节点的测试结果,并确定需要利用的测试结果对应的测试节点的测试属性。后续,在将该待测试节点确定为目标测试节点进行测试时,可以从上述数据池中,根据该测试属性查询该目标测试节点需要利用的测试结果,并将查询到的测试结果作为该目标测试节点的测试输入,对该目标测试节点进行测试。
在上述技术方案中,由于业务***中搭载的待测试业务所包括的若干待测试节点均可以异步完成测试;并且,将测试结果写入与所述若干待测试节点进行数据对接的数据池;因此,在针对所述待测试业务中的任一待测试节点进行测试时,不再需要同步等待前置节点测试完成测试得到测试结果,而是可以直接从所述数据池中查询到前置测试节点的测试结果,并将查询到的前置测试节点的测试结果作为测试输入该待测试节点进行测试,从而可以极大的提升测试框架的测试运行速度,降低测试框架的测试耗时。
与前述测试方法的实施例相对应,本说明书还提供了测试装置的实施例。
本说明书测试装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书测试装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该测试的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图5,图5为本说明书一示例性实施例示出的一种测试装置的框图。该装置500可以应用于图4所示的电子设备,该电子设备可以是基于节点化测试框架的业务***中的电子设备;所述业务***中搭载的待测试业务包括若干具有数据引用关系的待测试节点;其中,所述若干待测试节点均异步完成测试,并将测试结果写入与所述若干待测试节点进行数据对接的数据池;该装置500可以包括:
接收模块501,用于接收到针对所述若干待测试节点中的任一目标测试节点的测试指令;
确定模块502,用于响应于所述测试指令,确定所述若干待测试节点中是否包括与所述目标测试节点存在数据引用关系的前置测试节点;
测试模块503,用于如果所述若干待测试节点中包括与所述目标测试节点存在数据引用关系的前置测试节点,则从所述数据池中查询与所述前置测试节点对应的测试结果,并至少将查询到的所述测试结果作为测试输入对所述目标测试节点进行测试。
在本实施例中,与所述目标测试节点对应的测试用例中搭载了***;
所述装置500还可以包括:
写入模块504,用于基于所述***拦截所述目标测试节点的测试结果,并将拦截到的测试结果写入所述数据池。
在本实施例中,所述数据池中存储的测试结果,被标记了对应的测试节点的测试属性;
所述测试模块503具体可以用于:
将所述前置测试节点的测试属性作为查询索引,从所述数据池中查询与所述前置测试节点对应的测试结果。
在本实施例中,所述若干待测试节点为与所述待测试业务对应的业务接口。
在本实施例中,所述业务***为分布式***。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的***、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与前述测试方法的实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与测试的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收到针对所述若干待测试节点中的任一目标测试节点的测试指令;
响应于所述测试指令,确定所述若干待测试节点中是否包括与所述目标测试节点存在数据引用关系的前置测试节点;
如果所述若干待测试节点中包括与所述目标测试节点存在数据引用关系的前置测试节点,则从所述数据池中查询与所述前置测试节点对应的测试结果,并至少将查询到的所述测试结果作为测试输入对所述目标测试节点进行测试。
在本实施例中,与所述目标测试节点对应的测试用例中搭载了***;
通过读取并执行所述存储器存储的与测试的控制逻辑对应的机器可执行指令,所述处理器还被促使:
基于所述***拦截所述目标测试节点的测试结果,并将拦截到的测试结果写入所述数据池。
在本实施例中,所述数据池中存储的测试结果,被标记了对应的测试节点的测试属性;
通过读取并执行所述存储器存储的与测试的控制逻辑对应的机器可执行指令,所述处理器被促使:
将所述前置测试节点的测试属性作为查询索引,从所述数据池中查询与所述前置测试节点对应的测试结果。
在本实施例中,所述若干待测试节点为与所述待测试业务对应的业务接口。
在本实施例中,所述业务***为分布式***。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其他实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。