一种测试用例集的构建方法和设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种测试用例集的构建方法和设备。
背景技术
软件测试是软件生命周期的一个必要环节,其目的在于尽早发现软件设计中存在的错误,进而确保软件质量。测试用例是进行软件测试的基础,一个覆盖度高且精简的测试用例集能够降低软件测试成本并提高软件测试效率。
在实际应用中,一般通过一台服务器实现测试用例集的集成构建。对于一个庞大的软件系统来讲,需要使用到多个测试用例集,且每一个测试用例集对应的应用场景不同,那么在一台服务器上实现多个测试用例集的集成构建,需要耗费很长时间,使得测试用例集的构建效率比较低。例如:对于一个需要3000~4000个测试用例的软件系统,假设单个测试用例需要消耗的时间为1秒,那么构建该软件系统的测试用例集则需要耗时1~2小时。
为了保证测试用例集的构建效率,提出采用多台服务器并行处理以完成测试用例集构建的方案。但是,由于构建测试用例集需要的数据库只有一个,在利用多台服务器并行处理时,容易出现竞争访问数据库的问题,使得不同服务器中的测试用例之间产生相互干扰,导致测试用例集构建失败。
综上所述,亟需一种测试用例集的构建方法,以解决现有技术中存在的构建测试用例集效率低的问题。
发明内容
有鉴于此,本申请实施例提供了一种测试用例集的构建方法和设备,用于解决现有技术中存在的构建测试用例集效率低的问题。
一种测试用例集的构建方法,包括:
获取待处理的至少一个测试用例;
对所述至少一个测试用例进行分类,得到至少一个测试用例子集,其中,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;
针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;
在得到所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。
一种测试用例集的构建设备,包括:
获取单元,用于获取待处理的至少一个测试用例;
分类单元,用于对所述至少一个测试用例进行分类,得到至少一个测试用例子集,其中,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;
处理单元,用于针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;在得到所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。
本申请有益效果如下:
本申请实施例获取待处理的至少一个测试用例;对所述至少一个测试用例进行分类,得到至少一个测试用例子集,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;在得到所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。针对待处理的至少一个测试用例,通过分类的方式,将用例标签相同的测试用例分配给一个构建服务器,将用例标签不同的测试用例分配给不同的构建服务器,这样,可以有效防止用例标签相同的测试用例在执行构建操作时发生竞争访问数据库的情形,避免用例标签相同的测试用例之间在执行构建操作时产生的相互干扰,有效提升了测试用例的构建效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种测试用例集的构建方法的流程示意图;
图2为本申请实施例提供的一种测试用例集的构建方法的流程示意图;
图3为本申请实施例提供的一种测试用例集的构建方法的流程示意图;
图4为本申请实施例提供的一种测试用例集的构建设备的结构示意图。
具体实施方式
为了实现本申请的目的,本申请实施例提供了一种测试用例的构建方法和设备,获取待处理的至少一个测试用例;对所述至少一个测试用例进行分类,得到至少一个测试用例子集,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;在得到所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。针对待处理的至少一个测试用例,通过分类的方式,将用例标签相同的测试用例分配给一个构建服务器,将用例标签不同的测试用例分配给不同的构建服务器,这样,可以有效防止用例标签相同的测试用例在执行构建操作时发生竞争访问数据库的情形,避免用例标签相同的测试用例之间在执行构建操作时产生的相互干扰,有效提升了测试用例的构建效率。
下面结合说明书附图对本申请各个实施例作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种测试用例集的构建方法的流程示意图。所述方法可以如下所示。
步骤101:获取待处理的至少一个测试用例。
在步骤101中,在构建测试用例集之前,首先需要获取用于构建的至少一个测试用例。
由于每一个测试用例在编写阶段,将为每一个测试用例进行打标签,这里所说的标签即为后续提到的用例标签。
目前打标签的方式比较多,例如:采用注解的方式,规定测试用例的变量名,并为每一个测试用例设置该变量名对应的变量值。那么用例标签可以记录为:软件系统标识+业务标识+标签编号等。在编写测试用例时,有一些测试用例所用于测试的软件功能相同,即测试用例的变量名相同,那么这些测试用例的用例标签也可以相同。
除此之外,测试用例的用例标签还可以由系统自动生成,例如:可以由测试用例框架系统自动生成,也可以由构建测试用例集系统自动生成,这里不做限定。
这里所记载的测试用例框架系统可以是测试用例在被编写之后,用于存储测试用例的系统或者按照软件的功能和测试用例的功能,建立测试用例与软件功能之间映射关系的系统。在测试用例被编写之后,测试用例框架系统对于接收到的每一个测试用例,为其生成测试用例的用例标签。
这里所记载的构建测试用例集系统可以是后续记载的由构建服务器组成的系统,在启动测试用例集构建流程时,对于获取到的每一个测试用例,可以由构建测试用例集系统根据每一个测试用例的所覆盖的测试功能为其分配测试的用例标签。
步骤102:对所述至少一个测试用例进行分类,得到至少一个测试用例子集。
其中,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同。
在步骤102中,对于步骤101中获取到的测试用例,为了保证后续构建操作的效率,避免构建过程中测试用例之间的相互干扰,可以对获取到的测试用例进行分类,得到不同的测试用例子集。在这里对测试用例进行分类的方式可以由多种,例如:基于测试用例的用例标签进行分类;基于构建测试用例集系统中构建服务器的个数进行分类;基于设定的拆分数值进行分类;等等。
下面详细描述如何实现对获取到的测试用例进行分类。
第一种方式:
根据每一个所述测试用例的用例标签,对所述至少一个测试用例进行分类,得到至少一个测试用例子集。
具体地,正如步骤101中所记载的每一个测试用例对应一个用例标签,那么意味着获取到的多个测试用例,有些测试用例的用例标签相同,有些测试用例的用例标签不同。
这样,对于获取到的测试用例,确定每一个测试用例的用例标签,按照用例标签的不同对获取到的测试用进行分类,即用例标签相同的测试用例分为一类。假设获取到的测试用例所对应的用例标签包含3种,那么在对获取到的测试用例进行分类时,将划分得到3类,即3个测试用例子集。
例如:获取到的测试用例有10个,其中,3个测试用例的用例标签为A;3个测试用例的用例标签为B;4个测试用例的用例标签为C。那么用例标签为A的3个测试用例为一个测试用例子集;用例标签为B的3个测试用例为一个测试用例子集;用例标签为C的4个测试用例为一个测试用例子集。
需要说明的是,这样得到的测试用例子集,同一个测试用例子集中包含的测试用例的用例标签是相同,不同测试用例子集中包含的测试用例的用例标签是不同的。
可选地,在得到每一个测试用例子集时,所述方法还包括:
针对每一个所述测试用例子集,执行以下操作:
选择其中一个所述测试用例子集,按照所述测试用例子集所测试业务的业务类型的个数,将选择的所述测试用例子集中包含的测试用例进行拆分,得到多个不同的测试用例组。
具体地,为了保证测试用例构建的效率,若得到的测试用例子集中包含的测试用例数量比较大时,可以选择按照所述测试用例子集所测试业务的业务类型的个数,对该测试用例子集进一步进行拆分,得到多个不同的测试用例组,以便于后续构建服务器在执行构建操作时能够保证资源均衡,提高系统性能。
第二种方式:
按照预设的拆分数值,将所述至少一个测试用例进行拆分,得到至少一个测试用例子集。
具体地,为了保证构建测试用例集的系统中资源分配均衡,需要预设在测试用例进行构建时所要拆分的拆分数值,这样在获取到测试用例时,可以按照预设的拆分数值,对获取到的测试用例进行分类。
这里需要说明的是,在对获取到的测试用例进行分类时,需要保证用例标签不同的测试用例在不同测试用例子集中。
假设获取到的测试用例为10个,预设的拆分数值为3个,但是这10个测试用例所对应的用例标签为2个,即测试用例1、测试用例3、测试用例5、测试用例7和测试用例9所对应的用例标签相同,为用例标签a;测试用例0、测试用例2、测试用例4、测试用例6和测试用例8所对应的用例标签相同,为用例标签b。那么在按照第二种方式进行分类时,用例标签a对应的测试用例与用例标签b对应的测试用例不能在同一个测试用例子集中。
那么拆分结果可以为:测试用例1、测试用例3、测试用例5为一个测试用例子集;测试用例7和测试用例9为一个测试用例子集;测试用例0、测试用例2、测试用例4、测试用例6和测试用例8为一个测试用例子集;
拆分结果也可以为:测试用例1、测试用例3、测试用例5、测试用例7和测试用例9为一个测试用例子集;测试用例0和测试用例2为一个测试用例子集;测试用例4、测试用例6和测试用例8为一个测试用例子集。
可选地,在得到至少一个测试用例子集时,所述方法还包括:
在确定至少两个所述测试用例子集中包含的所述测试用例的用例标签相同时,合并所述至少两个所述测试用例子集,得到合并后的测试用例子集。
具体地,按照第二种方式进行拆分之后,若发现存在至少两个所述测试用例子集中包含的所述测试用例的用例标签相同时,可以合并所述至少两个所述测试用例子集,进而得到合并后的测试用例子集。
需要说明的是,在执行第二种方式是,可以先确定每一个测试用例的用例标签,进而按照用例标签对测试用例进行分类,再按照设定拆分数值对分类后的测试用例子集进行拆分,这里的拆分是个别的,也可以是全部的,若是按照这种方式进行拆分,则无需在进行合并。也就是说,在本申请实施例中存在得到的不同的测试用例子集对应的用例标签相同的情形。
步骤103:针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作。
在步骤103中,分别针对步骤102中不同的分类方式执行不同的分配和构建操作。
具体地,不管是采用步骤102中的第一种方式进行分类还是采用步骤102中的第二种方式进行分类,在确定所述构建服务器接收到的所述测试用例子集的个数为1时,指示所述构建服务器按照串行方式对属于同一个所述所述测试用例子集中包含的所述测试用例执行构建操作;
在确定所述构建服务器接收到的所述测试用例子集的个数大于1时,指示所述构建服务器按照串行方式对属于同一个所述所述测试用例子集中包含的所述测试用例执行构建操作,以及按照并行方式依次对不同的所述测试用例子集中包含的所述测试用例执行构建操作。
这里所谓的串行方式即在对一个测试用例执行构建操作完成后触发对下一个测试用例执行构建操作,可以由一个进程实现,也可以由多个进程不同时实现;这里所谓的并行方式即为不同的所述测试用例子集分配不同的进程,这些进程并行处理不同的所述测试用例子集中包含的测试用例的构建操作。
此外,针对步骤102中的第一种分类方式,假设在步骤102中,在得到每一个测试用例子集之后,还对该测试用例子集进行拆分得到多个不同的测试用例组,那么在得到多个不同的测试用例组时,将所述多个不同的测试用例组分配给构建服务器。
若将所述多个不同的测试用例组分配给不同构建服务器,则指示每一个所述构建服务器在对接收到的所述测试用例组中包含的所述测试用例执行构建操作时,依次针对每一个测试用例执行以下操作:部署测试环境,在所述构建服务器的内存中加载测试所需要的物理数据,基于加载的所述物理数据执行对所述测试用例的构建操作,并将操作后更新的物理数据同步至内存数据库中。
这样,若不同构建服务器所需要使用的物理数据相同,由于在测试之前已在每一个构建服务器中加载了该物理数据,可以有效避免在测试过程中因为访问内存数据库中的物理数据而导致相互干扰的问题。
这里的内存数据库可以理解为一个总的数据库,所有测试用例的物理物理数据均存储于此。
此外,在该构建服务器接收到多个不同的测试用例组时,还可以采取分布式的方式将多个不同的测试用例组分配给不同的构建子服务器,使得构建子服务器依次对接收到的测试用例组中包含的测试用例执行构建操作。
针对每一个测试用例执行构建操作的具体方式包括:
部署测试环境,并加载内存数据,启动对测试用例的构建操作。
步骤104:在得到每一个所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。
通过本申请实施例提供的技术方案,获取待处理的至少一个测试用例;对所述至少一个测试用例进行分类,得到至少一个测试用例子集,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;针对每一个所述测试用例子集,分别将不同的所述测试用例子集分配给不同的构建服务器,并指示每一个所述构建服务器对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;在得到每一个所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集,通过分类的方式,将用例标签相同的测试用例分配给一个构建服务器,将用例标签不同的测试用例分配给不同的构建服务器,这样,可以有效防止用例标签相同的测试用例在执行构建操作时发生竞争访问数据库的情形,避免用例标签相同的测试用例之间在执行构建操作时产生的相互干扰,有效提升了测试用例的构建效率。
图2为本申请实施例提供的一种测试用例集的构建方法的流程示意图。从图2中可以看出,在对测试用例集进行构建时,可以先按照用例标签进行分类,在对分类的测试用例集进行拆分,进而构建服务器按照串行或并行方式对接收到的测试用例子集中包含的测试用例进行构建操作,最后集成测试用例集。
图3为本申请实施例提供的一种测试用例集的构建方法的流程示意图。从图3中可以看出,在对测试用例集进行构建时,可以先对获取到的测试用例进行拆分,之后针对每一个构建服务器,在对接收到的所述测试用例组中包含的所述测试用例执行构建操作时,依次针对每一个测试用例执行以下操作:部署测试环境,在所述构建服务器的内存中加载测试所需要的物理数据,基于加载的所述物理数据执行对所述测试用例的构建操作,并将操作后更新的物理数据同步至内存数据库中。
需要说明的是,图2和图3中所示的方式可以结合使用,这里不再详细赘述。
图4为本申请实施例提供的一种测试用例集的构建设备的结构示意图。所述构建设备还包括:获取单元41、分类单元42和处理单元43,其中:
获取单元41,用于获取待处理的至少一个测试用例;
分类单元42,用于对所述至少一个测试用例进行分类,得到至少一个测试用例子集,其中,每一个所述测试用例子集中包含的所述测试用例的用例标签相同,不同所述测试用例子集中包含的所述测试用例的用户标签不同;
处理单元43,用于针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作;在得到所述构建服务器输出的构建操作结果时,将得到所述构建操作结果集成一个测试用例集。
在本申请的另一个实施例中,所述分类单元42对所述至少一个测试用例进行分类,得到至少一个测试用例子集,包括:
根据每一个所述测试用例的用例标签,对所述至少一个测试用例进行分类,得到至少一个测试用例子集。
在本申请的另一个实施例中,所述分类单元42,还用于在得到每一个测试用例子集时针对每一个所述测试用例子集,执行以下操作:
选择其中一个所述测试用例子集,按照所述测试用例子集所测试业务的业务类型的个数,将选择的所述测试用例子集中包含的测试用例进行拆分,得到多个不同的测试用例组;
所述处理单元,具体用于在得到多个不同的测试用例组时,将所述多个不同的测试用例组分配给构建服务器。
在本申请的另一个实施例中,所述处理单元43指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作,包括:
若将所述多个不同的测试用例组分配给不同构建服务器,则指示每一个所述构建服务器在对接收到的所述测试用例组中包含的所述测试用例执行构建操作时,依次针对每一个测试用例执行以下操作:部署测试环境,在所述构建服务器的内存中加载测试所需要的物理数据,基于加载的所述物理数据执行对所述测试用例的构建操作,并将操作后更新的物理数据同步至内存数据库中。
在本申请的另一个实施例中,所述分类单元42对所述至少一个测试用例进行分类,得到至少一个测试用例子集,包括:
按照预设的拆分数值,将所述至少一个测试用例进行拆分,得到至少一个测试用例子集;
在确定至少两个所述测试用例子集中包含的所述测试用例的用例标签相同时,合并所述至少两个所述测试用例子集,得到合并后的测试用例子集。
在本申请的另一个实施例中,所述处理单元43针对每一个所述测试用例子集,分别将至少一个所述测试用例子集分配给构建服务器,并指示所述构建服务器分别对接收到的所述测试用例子集中所包含的所述测试用例执行构建操作,包括:
在确定所述构建服务器接收到的所述测试用例子集的个数大于1时,指示所述构建服务器按照串行方式对属于同一个所述所述测试用例子集中包含的所述测试用例执行构建操作,以及按照并行方式依次对不同的所述测试用例子集中包含的所述测试用例执行构建操作。
需要说明的是,本申请实施例提供的所述构建设备可以通过软件方式实现,也可以通过硬件方式实现,这里不做限定。构建设备通过分类的方式,将用例标签相同的测试用例分配给一个构建服务器,将用例标签不同的测试用例分配给不同的构建服务器,这样,可以有效防止用例标签相同的测试用例在执行构建操作时发生竞争访问数据库的情形,避免用例标签相同的测试用例之间在执行构建操作时产生的相互干扰,有效提升了测试用例的构建效率。
本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。