100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 测试方法 装置 电子设备及存储介质与流程

测试方法 装置 电子设备及存储介质与流程

时间:2020-09-01 08:02:54

相关推荐

测试方法 装置 电子设备及存储介质与流程

本公开涉及计算机技术领域,具体涉及一种测试方法、装置、电子设备及存储介质。

背景技术:

软件测试是一种用来鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或90%。因此,测试人员需要费尽心思设计测试场景来覆盖代码。

技术实现要素:

本公开实施例提供一种测试方法、装置、电子设备及存储介质。

第一方面,本公开实施例中提供了一种测试方法。

具体的,所述测试方法,包括:

获取待测试代码中类与方法之间的第一对应关系;

在所述待测试代码中加入分支测试探针;

根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

结合第一方面,本公开在第一方面的第一种实现方式中,获取待测试代码中类与方法之间的第一对应关系,包括:

在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

结合第一方面和/或第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,在所述待测试代码中加入分支测试探针,包括:

利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

结合第一方面、第一方面的第一种实现方式和/或第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述代码覆盖率工具为jacoco代码覆盖率工具。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式和/或第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息,包括:

根据所述第一对应关系和第二对应关系确定所述待测试代码中类、方法与分支数量之间的第三对应关系;

根据所述第三对应关系确定测试场景数量。

结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和/或第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系,包括:

统计所述待测试代码中加入的所述分支测试探针的数量;

根据所述分支测试探针的数量确定所述方法与所述分支测试探针的数量之间的对应关系。

第二方面,本公开实施例中提供了一种测试装置。

具体的,所述测试装置,包括:

获取模块,被配置为获取待测试代码中类与方法之间的第一对应关系;

加入模块,被配置为在所述待测试代码中加入分支测试探针;

第一确定模块,被配置为根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

第二确定模块,被配置为根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

结合第二方面,本公开在第二方面的第一种实现方式中,所述获取模块,包括:

第一确定子模块,被配置为在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

结合第二方面和/或第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述加入模块,包括:

加入子模块,被配置为利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

结合第二方面、第二方面的第一种实现方式和/或第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述代码覆盖率工具为jacoco代码覆盖率工具。

结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和/或第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述第二确定模块,包括:

第二确定子模块,被配置为根据所述第一对应关系和第二对应关系确定所述待测试代码中类、装置与分支数量之间的第三对应关系;

第三确定子模块,被配置为根据所述第三对应关系确定测试场景数量。

结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式和/或第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述第一确定模块,包括:

统计子模块,被配置为统计所述待测试代码中加入的所述分支测试探针的数量;

第四确定子模块,被配置为根据所述分支测试探针的数量确定所述装置与所述分支测试探针的数量之间的对应关系。

所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,测试装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持测试装置执行上述第一方面中测试方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述测试装置还可以包括通信接口,用于测试装置与其他设备或通信网络通信。

第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面所述的方法。

第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储测试装置所用的计算机指令,其包含用于执行上述任一方法所涉及的计算机指令。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开实施例在软件测试过程中,通过自动获取待测试代码中类与方法之间的第一对应关系,进而在待测试代码中加入分支测试探针,并利用分支测试探针确定方法与方法中分支数量之间的第二对应关系,并根据第一对应关系和第二对应关系确定待测试代码的测试场景信息。通过这种方式,由于自动获得了待测试代码中类、方法、方法中分支数量之间的对应关系,进而可以通过上述对应关系指导测试人员完善所要搭建的测试场景,不会造成测试场景的遗漏,能够提高测试过程中的代码覆盖率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:

图1示出根据本公开一实施方式的测试方法的流程图;

图2示出根据图1所示实施方式的步骤s104的流程图;

图3示出根据图1所示实施方式的步骤s103的流程图;

图4示出根据本公开一实施方式的测试装置的结构框图;

图5示出根据图4所示实施方式的第二确定模块404的结构框图;

图6示出根据图4所示实施方式的第一确定模块403的结构框图;

图7是适于用来实现根据本公开一实施方式的测试方法的电子设备的结构示意图。

具体实施方式

下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。

在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。

另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

图1示出根据本公开一实施方式的测试方法的流程图。如图1所示,所述测试方法包括以下步骤:

在步骤s101中,获取待测试代码中类与方法之间的第一对应关系;

在步骤s102中,在所述待测试代码中加入分支测试探针;

在步骤s103中,根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

在步骤s104中,根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

本实施例中,待测试代码可以是一个软件开发项目中的全部软件代码,也可以是部分软件代码,具体可以根据实际测试需要而定,在此不做限制。

待测试代码可以是通过java语言、c++等语言编写而成的,只要是能够针对该待测试代码获取其中类与方法之间的第一对应关系、方法与方法中各分支数量之间的第二对应关系的待测试代码,即可使用本公开实施例提出的上述测试方案。

在一些实施例中,待测试代码为java语言编写的软件时,可以利用java发射机制从待测试代码中获取待测试代码中类与方法之间的第一对应关系。第一对应关系可以包括该待测试代码中各个类以及各个类下各个方法之间的对应关系,假如待测试代码中包括类c1,那么该类c1下如果包括两个方法m1和m2,则第一对应关系可以包括{c1,m1}与{c1,m2}。可以理解的是,如果存在其他机制也能够获得上述第一对应关系,则本公开实施例中依然可以适用。

分支测试探针可以为测试工具在待测试代码的分支处添加的测试探针,例如测试工具在对待测试代码进行测试处理过程中,遇到if和switch指令之后添加对应的分支测试探针,以便在执行测试时能够在遇到分支测试探针时输出对应的测试信息等。可以根据待测试代码的编写语言选择对应的工具,例如对于java编写的待测试代码,可以利用jacoco这一代码覆盖率工具的分支覆盖率功能添加分支测试探针。

在添加了分支测试探针之后,可以统计待测试代码中每个方法下所添加的分支测试探针的数量,进而确定方法与方法中包含的分支数量之间的第二对应关系。

在测试过程中,一个分支测试探针表示一个测试场景,因此在确定了第一对应关系和第二对应关系之后,就可以确定一个类下每个方法中分支测试探针的数量,进而可以确定该待测试代码中的测试场景信息。测试场景信息至少包括测试场景的数量。

本公开实施例在软件测试过程中,通过自动获取待测试代码中类与方法之间的第一对应关系,进而在待测试代码中加入分支测试探针,并利用分支测试探针确定方法与方法中分支数量之间的第二对应关系,并根据第一对应关系和第二对应关系确定待测试代码的测试场景信息。通过这种方式,由于自动获得了待测试代码中类、方法、方法中分支数量之间的对应关系,进而可以通过上述对应关系指导测试人员完善所要搭建的测试场景,不会造成测试场景的遗漏,能够提高测试过程中的代码覆盖率。

在本实施例的一个可选实现方式中,所述步骤s101,即获取待测试代码中类与方法之间的第一对应关系的步骤,进一步包括以下步骤:

在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

该可选的实现方式中,对于java语言编写的待测试代码,可以利用已有的反射机制确定第一对应关系。java语言中的反射机制是在软件运行状态中,对于待测试代码中任意一个类,都能够确定这个类的所有属性和方法。因此,本公开实施例中可以采用反射机制从待测试代码中确定出类与方法之间的第一对应关系,也即待测试代码中包括哪些类,各个类下又包括哪些方法。

在本实施例的一个可选实现方式中,所述步骤s102,即在所述待测试代码中加入分支测试探针的步骤,进一步包括以下步骤:

利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

该可选的实施例中,可以采用代码覆盖率工具在待测试代码中加入分支测试探针。

在一些实施例中,针对java语言编写的待测试代码可以采用jacoco代码覆盖率工具,jacoco是基于asm(assembly,汇编语言)框架的功能代码覆盖率统计框架。

jacoco包含了多种尺度的覆盖率计数器,包含指令级(instructions,c0coverage),分支(branches,c1coverage)、圈复杂度(cyclomaticcomplexity)、行(lines)、方法(non-abstractmethods)、类(classes)。其中,分支(branches,c1coverage)是指jacoco对所有的if和switch分支指令计算了分支覆盖率。这项指标会统计所有的分支数量,并同时指出哪些分支被执行,哪些分支没有被执行。

本公开实施例可以利用jacoco针对待测试代码中的if和switch分支指令添加分支测试探针的功能在待测试代码中添加分支测试探针,并通过统计分支测试探针的数量获得第二对应关系,进而再根据第一对应关系和第二对应关系确定待测试代码的测试场景信息。

在本实施例的一个可选实现方式中,如图2所示,所述步骤s104,即根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息的步骤,进一步包括以下步骤:

在步骤s201中,根据所述第一对应关系和第二对应关系确定所述待测试代码中类、方法与分支数量之间的第三对应关系;

在步骤s202中,根据所述第三对应关系确定测试场景信息。

该可选的实现方式中,第一对应关系中包括待测试代码中类与方法的对应关系,而第二对应关系中包括方法与分支数量的对应关系,因此通过第一对应关系和第二对应关系可以获得待测试代码中类、方法和分支数量三者的对应关系。例如,待测试代码中包括类c1,而该类c1下包括两个方法m1和m2,第一对应关系包括{c1,m1}与{c1,m2},第二对应关系包括{m1,4}与{m2,10},那么可以获得第三对应关系为{c1,m1,4}和{c1,m2,10}。

由于一个分支对应一个测试场景,因此可以通过第三对应关系确定待测试代码中所包括的测试场景信息。测试场景信息可以包括但不限于待测试代码对应的待测试类、每个待测试类下的方法、每个待测试类下的每个方法对应的测试场景数量、测试场景总数量等。例如,上述例子中第三对应关系为{c1,m1,4}和{c1,m2,10}时,可以确定测试场景信息包括该待测试代码中包括一个类、该类包括两个方法、两个方法分别对应4个测试场景和10个测试场景、总共对应14个测试场景等信息。

在本实施例的一个可选实现方式中,如图3所示,所述步骤s103,即根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系的步骤,进一步包括以下步骤:

在步骤s301中,统计所述待测试代码中加入的所述分支测试探针的数量;

在步骤s302中,根据所述分支测试探针的数量确定所述方法与所述分支测试探针的数量之间的对应关系。

该可选的实现方式中,利用代码覆盖率工具在待测试代码中加入分支测试探针之后,可以通过遍历加入了分支测试探针的待测试代码,从中统计出每个方法以及每个方法下分支测试探针的数量,进而得到第二对应关系。

下面通过java语言编写的待测试代码中,利用jacoco工具添加分支测试探针为例,说明本公开实施例提出的测试方法的基本流程。

首先,利用java反射机制对待测试代码中接口的实现类进行反射获取所有的方法,输出实现类与方法之间的第一对应关系;

例如,待测试代码中包括如下代码:

通过反射机制可以输出类与方法的关系为{class1,hello},{class2,testswitch},由于上述举例说明的代码不是完整的代码,类暂时用class1和class2代替。

利用jacoco对上述代码处理后,可以输出一字节码文件,该字节码文件中包括待测试代码中插入分支测试探针的字节码,通过对该字节码文件进行解析能够统计得到方法和分支测试探针数量之间的关系,例如可以得{hello,4}和{testswitch,10}。

结合利用反射机制得到的类和方法之间的对应关系,最终可以确定类、方法和分支数量三者之间的关系,例如{class1,hello,4}和{class2,testswitch,10}。

因此,从上述类、方法和分支数量三者之间的关系可以确定该待测试代码的测试场景数量总数为14个,所要涵盖的类为两个,且该两个类下的方法分别为“hello”和“testswitch”,分别包括4、10个分支。

下述为本公开装置实施例,可以用于执行本公开方法实施例。

图4示出根据本公开一实施方式的测试装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,所述测试装置包括:

获取模块401,被配置为获取待测试代码中类与方法之间的第一对应关系;

加入模块402,被配置为在所述待测试代码中加入分支测试探针;

第一确定模块403,被配置为根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

第二确定模块404,被配置为根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

本实施例中,待测试代码可以是一个软件开发项目中的全部软件代码,也可以是部分软件代码,具体可以根据实际测试需要而定,在此不做限制。

待测试代码可以是通过java语言、c++等语言编写而成的,只要是能够针对该待测试代码获取其中类与方法之间的第一对应关系、方法与方法中各分支数量之间的第二对应关系的待测试代码,即可使用本公开实施例提出的上述测试方案。

在一些实施例中,待测试代码为java语言编写的软件时,可以利用java发射机制从待测试代码中获取待测试代码中类与方法之间的第一对应关系。第一对应关系可以包括该待测试代码中各个类以及各个类下各个方法之间的对应关系,假如待测试代码中包括类c1,那么该类c1下如果包括两个方法m1和m2,则第一对应关系可以包括{c1,m1}与{c1,m2}。可以理解的是,如果存在其他机制也能够获得上述第一对应关系,则本公开实施例中依然可以适用。

分支测试探针可以为测试工具在待测试代码的分支处添加的测试探针,例如测试工具在对待测试代码进行测试处理过程中,遇到if和switch指令之后添加对应的分支测试探针,以便在执行测试时能够在遇到分支测试探针时输出对应的测试信息等。可以根据待测试代码的编写语言选择对应的工具,例如对于java编写的待测试代码,可以利用jacoco这一代码覆盖率工具的分支覆盖率功能添加分支测试探针。

在添加了分支测试探针之后,可以统计待测试代码中每个方法下所添加的分支测试探针的数量,进而确定方法与方法中包含的分支数量之间的第二对应关系。

在测试过程中,一个分支测试探针表示一个测试场景,因此在确定了第一对应关系和第二对应关系之后,就可以确定一个类下每个方法中分支测试探针的数量,进而可以确定该待测试代码中的测试场景信息。测试场景信息至少包括测试场景的数量。

本公开实施例在软件测试过程中,通过自动获取待测试代码中类与方法之间的第一对应关系,进而在待测试代码中加入分支测试探针,并利用分支测试探针确定方法与方法中分支数量之间的第二对应关系,并根据第一对应关系和第二对应关系确定待测试代码的测试场景信息。通过这种方式,由于自动获得了待测试代码中类、方法、方法中分支数量之间的对应关系,进而可以通过上述对应关系指导测试人员完善所要搭建的测试场景,不会造成测试场景的遗漏,能够提高测试过程中的代码覆盖率。

在本实施例的一个可选实现方式中,所述获取模块401,包括:

第一确定子模块,被配置为在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

该可选的实现方式中,对于java语言编写的待测试代码,可以利用已有的反射机制确定第一对应关系。java语言中的反射机制是在软件运行状态中,对于待测试代码中任意一个类,都能够确定这个类的所有属性和方法。因此,本公开实施例中可以采用反射机制从待测试代码中确定出类与方法之间的第一对应关系,也即待测试代码中包括哪些类,各个类下又包括哪些方法。

在本实施例的一个可选实现方式中,所述加入模块402,包括:

加入子模块,被配置为利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

该可选的实施例中,可以采用代码覆盖率工具在待测试代码中加入分支测试探针。

在一些实施例中,针对java语言编写的待测试代码可以采用jacoco代码覆盖率工具,jacoco是基于asm(assembly,汇编语言)框架的功能代码覆盖率统计框架。

jacoco包含了多种尺度的覆盖率计数器,包含指令级(instructions,c0coverage),分支(branches,c1coverage)、圈复杂度(cyclomaticcomplexity)、行(lines)、方法(non-abstractmethods)、类(classes)。其中,分支(branches,c1coverage)是指jacoco对所有的if和switch分支指令计算了分支覆盖率。这项指标会统计所有的分支数量,并同时指出哪些分支被执行,哪些分支没有被执行。

本公开实施例可以利用jacoco针对待测试代码中的if和switch分支指令添加分支测试探针的功能在待测试代码中添加分支测试探针,并通过统计分支测试探针的数量获得第二对应关系,进而再根据第一对应关系和第二对应关系确定待测试代码的测试场景信息。

在本实施例的一个可选实现方式中,如图5所示,所述第二确定模块404,包括:

第二确定子模块501,被配置为根据所述第一对应关系和第二对应关系确定所述待测试代码中类、装置与分支数量之间的第三对应关系;

第三确定子模块502,被配置为根据所述第三对应关系确定测试场景数量。

该可选的实现方式中,第一对应关系中包括待测试代码中类与方法的对应关系,而第二对应关系中包括方法与分支数量的对应关系,因此通过第一对应关系和第二对应关系可以获得待测试代码中类、方法和分支数量三者的对应关系。例如,待测试代码中包括类c1,而该类c1下包括两个方法m1和m2,第一对应关系包括{c1,m1}与{c1,m2},第二对应关系包括{m1,4}与{m2,10},那么可以获得第三对应关系为{c1,m1,4}和{c1,m2,10}。

由于一个分支对应一个测试场景,因此可以通过第三对应关系确定待测试代码中所包括的测试场景信息。测试场景信息可以包括但不限于待测试代码对应的待测试类、每个待测试类下的方法、每个待测试类下的每个方法对应的测试场景数量、测试场景总数量等。例如,上述例子中第三对应关系为{c1,m1,4}和{c1,m2,10}时,可以确定测试场景信息包括该待测试代码中包括一个类、该类包括两个方法、两个方法分别对应4个测试场景和10个测试场景、总共对应14个测试场景等信息。

在本实施例的一个可选实现方式中,如图6所示,所述第一确定模块403,包括:

统计子模块601,被配置为统计所述待测试代码中加入的所述分支测试探针的数量;

第四确定子模块602,被配置为根据所述分支测试探针的数量确定所述装置与所述分支测试探针的数量之间的对应关系。

该可选的实现方式中,利用代码覆盖率工具在待测试代码中加入分支测试探针之后,可以通过遍历加入了分支测试探针的待测试代码,从中统计出每个方法以及每个方法下分支测试探针的数量,进而得到第二对应关系。

下面通过java语言编写的待测试代码中,利用jacoco工具添加分支测试探针为例,说明本公开实施例提出的测试方法的基本流程。

首先,利用java反射机制对待测试代码中接口的实现类进行反射获取所有的方法,输出实现类与方法之间的第一对应关系;

例如,待测试代码中包括如下代码:

通过反射机制可以输出类与方法的关系为{class1,hello},{class2,testswitch},由于上述举例说明的代码不是完整的代码,类暂时用class1和class2代替。

利用jacoco对上述代码处理后,可以输出一字节码文件,该字节码文件中包括待测试代码中插入分支测试探针的字节码,通过对该字节码文件进行解析能够统计得到方法和分支测试探针数量之间的关系,例如可以得{hello,4}和{testswitch,10}。

结合利用反射机制得到的类和方法之间的对应关系,最终可以确定类、方法和分支数量三者之间的关系,例如{class1,hello,4}和{class2,testswitch,10}。

因此,从上述类、方法和分支数量三者之间的关系可以确定该待测试代码的测试场景数量总数为14个,所要涵盖的类为两个,且该两个类下的方法分别为“hello”和“testswitch”,分别包括4、10个分支。

本公开实施方式还提供了一种电子设备,如图7所示,包括至少一个处理器701;以及与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行以实现:

获取待测试代码中类与方法之间的第一对应关系;

在所述待测试代码中加入分支测试探针;

根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

其中,获取待测试代码中类与方法之间的第一对应关系,包括:

在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

其中,在所述待测试代码中加入分支测试探针,包括:

利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

其中,所述代码覆盖率工具为jacoco代码覆盖率工具。

其中,根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息,包括:

根据所述第一对应关系和第二对应关系确定所述待测试代码中类、方法与分支数量之间的第三对应关系;

根据所述第三对应关系确定测试场景数量。

其中,根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系,包括:

统计所述待测试代码中加入的所述分支测试探针的数量;

根据所述分支测试探针的数量确定所述方法与所述分支测试探针的数量之间的对应关系。

具体地,处理器701、存储器702可以通过总线或者其他方式连接,图7中以通过总线连接为例。存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器701通过运行存储在存储器702中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本公开实施例中的上述方法。

存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储航运网络运输的历史数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,电子设备可选地包括通信组件703,存储器702可选地包括相对于处理器701远程设置的存储器,这些远程存储器可以通过通信组件703连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器702中,当被一个或者多个处理器701执行时,执行本公开实施例中的上述方法。

上述产品可执行本公开实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本公开实施方式所提供的方法。

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

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。

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

技术特征:

1.一种测试方法,其特征在于,包括:

获取待测试代码中类与方法之间的第一对应关系;

在所述待测试代码中加入分支测试探针;

根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

2.根据权利要求1所述的方法,其特征在于,获取待测试代码中类与方法之间的第一对应关系,包括:

在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

3.根据权利要求1所述的方法,其特征在于,在所述待测试代码中加入分支测试探针,包括:

利用代码覆盖率工具在所述待测试代码中加入所述分支测试探针。

4.根据权利要求3所述的方法,其特征在于,所述代码覆盖率工具为jacoco代码覆盖率工具。

5.根据权利要求1-4任一项所述的方法,其特征在于,根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息,包括:

根据所述第一对应关系和第二对应关系确定所述待测试代码中类、方法与分支数量之间的第三对应关系;

根据所述第三对应关系确定测试场景数量。

6.根据权利要求1-4任一项所述的方法,其特征在于,根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系,包括:

统计所述待测试代码中加入的所述分支测试探针的数量;

根据所述分支测试探针的数量确定所述方法与所述分支测试探针的数量之间的对应关系。

7.一种测试装置,其特征在于,包括:

获取模块,被配置为获取待测试代码中类与方法之间的第一对应关系;

加入模块,被配置为在所述待测试代码中加入分支测试探针;

第一确定模块,被配置为根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;

第二确定模块,被配置为根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。

8.根据权利要求7所述的装置,其特征在于,所述获取模块,包括:

第一确定子模块,被配置为在所述待测试代码包括java代码时,利用反射机制确定所述第一对应关系。

9.一种电子设备,其特征在于,包括存储器和处理器;其中,

所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-6任一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-6任一项所述的方法。

技术总结

本公开实施例公开了一种测试方法、装置、电子设备及存储介质。该方法包括:获取待测试代码中类与方法之间的第一对应关系;在所述待测试代码中加入分支测试探针;根据所述待测试代码中加入的所述分支测试探针的数量确定第二对应关系;其中,所述第二对应关系包括所述待测试代码中方法与所述方法中包含的分支数量之间的对应关系;根据所述第一对应关系和第二对应关系确定所述待测试代码的测试场景信息。通过本公开实施例自动获得待测试代码中类、方法、方法中分支数量之间的对应关系,进而可以通过上述对应关系指导测试人员完善所要搭建的测试场景,不会造成测试场景的遗漏,能够提高测试过程中的代码覆盖率。

技术研发人员:吴磊

受保护的技术使用者:拉扎斯网络科技(上海)有限公司

技术研发日:.10.31

技术公布日:.02.21

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。