一种测试用例执行方法及装置与流程

文档序号:18414167发布日期:2019-08-13 19:07阅读:158来源:国知局
一种测试用例执行方法及装置与流程

本发明涉及软件测试领域、测试执行领域,具体涉及一种测试用例执行方法及装置。



背景技术:

java是一门面向对象编程语言,junit是一个java语言的单元测试框架,多数java的开发环境都已经集成了junit作为单元测试的工具。

junit目前的执行方式有以下几种:

1、执行单个测试用例;测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径是否满足某个特定需求。本文中的测试用例指的是用junit编写的测试用例。

2、使用suite,suite是junit编写的测试用例的集合,可以一次执行多个测试用例。需要手动把所有要执行的测试用例的名字写到suite的注解中,增删大量的测试用例成本比较高,不支持用例子集的划分,不支持用文件配置的方式管理测试用例子集是否需要执行。其中,测试用例子集,是指测试用例集合里面一小部分特定用例的集合,一个suite可能有多个测试用例子集。

3、使用categories,categories是suite的一种拓展,是一种支持用例子集划分的用例集合。通过注解的方式对用例集中的用例进行细分,可以选择执行某些用例子集,以及不执行某些用例子集。需要手动把所有要执行的测试用例的名字写到suite的注解中,增删大量的测试用例成本比较高;不支持用文件配置的方式管理测试用例子集是否需要执行,每次修改用例子集的执行计划时需要修改代码。

4、使用classpathsuite,classpathsuite是suite的一种拓展,支持通过用例目录和名称的正则匹配来划分用例集,增删大量测试用例比较方便。用例子集的划分依赖于用例的名字和路径,用例子集较多时,需要不同用例子集有不同的命名规则,命名规则会变的很复杂以及容易出错。不支持用文件配置的方式管理测试用例子集是否需要执行,每次修改用例子集的执行计划时需要修改代码。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

现有技术不支持文件配置用例子集是否执行,如果用例集的部分用例子集有时需要执行,有时不需要执行,每次变动都需要修改代码,代码的改动比较大,而且java修改代码需要重新编译才能执行,成本比较高。



技术实现要素:

本发明实施例提供一种测试用例执行方法及装置,以方便地增删大量的测试用例,降低修改代码的成本。

第一方面,本发明实施例提供了一种测试用例执行方法,其包括:

获取待执行测试用例集包含的全部测试用例,所述待执行测试用例集被划分为多个测试用例子集,其中,不同的测试用例子集使用不同的名称;

读取待执行测试用例集的每一个测试用例,针对当前读取的测试用例,执行如下操作:

根据预先添加在当前测试用例上的子集注解信息,获取当前测试用例隶属的测试用例子集的名称;

根据当前测试用例隶属的测试用例子集的名称,在配置文件中读取与所述测试用例子集的名称相对应的配置信息,所述配置信息用于指示测试用例子集是否需要执行;

如果读取到的配置信息指示测试用例子集需要执行,则执行当前测试用例;如果读取到的配置信息指示测试用例子集不需要执行,则不执行当前测试用例。

第二方面,本发明实施例提供了一种测试用例执行装置,其包括:

获取模块,用于获取待执行测试用例集包含的全部测试用例,所述待执行测试用例集被划分为多个测试用例子集,其中,不同的测试用例子集使用不同的名称;

测试用例读取模块,用于读取待执行测试用例集的每一个测试用例;

子集名称获取模块,用于根据预先添加在当前读取的测试用例上的子集注解信息,获取当前测试用例隶属的测试用例子集的名称;

配置信息读取模块,用于根据当前测试用例隶属的测试用例子集的名称,在配置文件中读取与所述测试用例子集的名称相对应的配置信息,所述配置信息用于指示测试用例子集是否需要执行;

执行处理模块,用于如果读取到的配置信息指示测试用例子集需要执行,则执行当前测试用例;如果读取到的配置信息指示测试用例子集不需要执行,则不执行当前测试用例。

第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一项所述的测试用例执行方法。

第四方面,本发明实施例提供了一种计算机设备,其包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现前述任一所述的测试用例执行方法。

上述技术方案具有如下有益效果:本发明的实施例通过junit测试用例添加注解的方式划分子集用例,然后在自定义的junit的执行器中读取用例的注解返回的用户子集的名称,通过该用例子集在配置文件中的设置来决定用例是否执行,实现了junit用例子集可通过配置来决定是否要执行。该技术方案可以方便地增删大量的测试用例,降低修改代码的成本。

附图说明

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

图1是本发明的实施例的测试用例执行方法的流程图;

图2是本发明的实施例的测试用例执行装置的逻辑功能框图;

图3是本发明的实施例的电子设备的原理框图。

具体实施方式

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

实施例1

图1是本发明的实施例的测试用例执行方法的流程图。如图1所示,该方法包括如下步骤:

步骤101:获取待执行测试用例集包含的全部测试用例,所述待执行测试用例集被划分为多个测试用例子集,其中,不同的测试用例子集使用不同的名称。

具体地,待执行测试用例集按照不同类型或不同功能被划分为多个测试用例子集。测试用例的类型根据测试业务的需求来划分,比如微博相关的功能是一个用例集,而评论、赞就是其中的用例子集。

具体地,本步骤可以根据测试用例名称的正则匹配,获取测试用例集包含的全部测试用例。本步骤拓展classpathsuite的功能,这样可以方便增删大量的测试用例。正则匹配,是指使用正则表达式来检索符合某个规则的文本。正则匹配方式可以满足更加复杂的需求,比如匹配某一个文件夹下以名字xxx结尾的用例,或者匹配某一个文件夹下名字以xxx开头的用例,或者匹配某一个文件夹下名字包含xxx的用例。可选地,还可以根据测试用例名称的路径和名字的结尾确定属于哪一个用例集,比如xxx路径下,以status结尾的属于微博的测试用例集。

另一种实施方式,一个测试用例集一般都放在同一个文件夹下,直接写测试用例集的文件夹名可以更加方便查找全部的用例。

步骤102:读取待执行测试用例集的每一个测试用例,针对当前读取的测试用例,执行如下步骤103-105。本步骤可以依次读取执行测试用例集的每一个测试用例。在一较佳实施例中,可以根据测试用例的路径和测试用例的名称顺序读取测试用例。举例如下:假设有文件夹a和文件夹b,a文件夹下面有测试用例1,测试用例2,b文件夹下面有测试用例1,测试用例2,则读取顺序依次是:a的测试用例1、a的测试用例2、b的测试用例1、b的测试用例2。

步骤103:根据预先添加在当前测试用例上的子集注解信息,获取当前测试用例隶属的测试用例子集的名称。

本步骤是通过测试用例的自定义注解,获取测试用例子集的名称。具体地,注解是写在用例类名的上面的,是预先添加在测试用例之上,每个测试用例子集的名称是唯一的。测试用例的子集是根据测试中的需求来定义和划分的,比如某几个用例跟发微博这个功能是相关的,可以划分为一个子集,然后在注解中自定义某一个名字xxx代表发微博这个用例子集就可以了。所有发微博相关的用例都加上注解xxx。

具体地,测试用例添加自定义的用例子集的注解,注解的返回值是测试用例子集的名称,不同类型或不同功能的用例子集使用不同的名称。

在执行的过程中,不使用junit默认的runner(执行器),在自定义的runner中获取测试用例的注解中的用例子集的名称;其中,junitrunner是junit的执行器,规定junit的用例如何执行。java注解,是对java进行说明,注释的一种元数据。

具体地,定义一个注解类,例如@switch(name=“xxx”),xxx代表测试用例子集的名字,自定义的runner可以根据注解的类型找到这个注解。

本实施例中的自定义的runner会找到测试用例的用例子集的注解,然后根据注解中的名称name在配置文件中的配置来决定是否执行测试用例,现有技术中的默认的runner对加了用例子集注解的用例不做判断,直接全部执行。在java中的实现方式是定义一个类,继承默认的runner,然后重写其中与执行过程相关的方法。

步骤104:根据当前测试用例隶属的测试用例子集的名称,在配置文件中读取与所述测试用例子集的名称相对应的配置信息,所述配置信息用于指示测试用例子集是否需要执行。

本步骤是根据配置文件判断该配置文件中该测试用例子集是否需要执行。具体地,本步骤的判断方式为:读取配置文件中该用例子集的配置是否为true。配置文件是一个文本文件,是根据自己设定的用例子集来手动配置或写入的,比如发微博这个子集需要执行,就配置xxx=true,反之配置xxx=false,划分了多少个用例子集,配置文件就配置多少行。在用例执行的时候需要通过代码读取这个配置文件。

步骤105:如果读取到的配置信息指示测试用例子集需要执行,则执行当前测试用例;如果读取到的配置信息指示测试用例子集不需要执行,则不执行当前测试用例。

具体地,该配置信息采用“true”和“false”的形式指示测试用例子集是否需要执行;如果配置文件中对应的测试用例子集的配置信息为true,则执行该当前测试用例。如果配置文件中对应的测试用例子集的配置信息为false,则不执行该当前测试用例。

具体地,在用例执行的过程中,是获取全部的用例,然后一个一个地判断,该用例属于哪一个子集,然后该子集是否执行,一次判断只决定一个用例是否执行。因为同一个子集的用例会有相同的判断结果,也就决定了一个子集全部的用例是否执行。

该方法还包括如下步骤:预先生成配置文件,所述配置文件中包括每个测试用例子集的名称与配置信息之间的对应关系。

举例说明:

该测试技术已应用到微博平台测试的自动化测试执行中,一个用例集通常有上千个junit测试用例。在日常工作中,有几组用例子集有时需要执行,有时不需要执行。本发明的实施例使用这一测试技术可以方便地管理和执行这些测试用例集,如果遇到执行计划的变动,某几组用例子集不用执行,只需要修改几行配置文件即可。

本发明的实施例具有如下优点:

可以比较方便的划分用例子集,只需要在用例上的注解里添加用例子集的名称;

当有多个用例子集的执行计划有变更的时候,不需要修改代码,只需要修改配置文件,改动的成本比较小。

实施例2

图2是本发明的实施例的测试用例执行装置的逻辑功能框图。如图2所示,一种测试用例执行装置200,包括:

获取模块210,用于获取待执行测试用例集包含的全部测试用例,所述待执行测试用例集被划分为多个测试用例子集,其中,不同的测试用例子集使用不同的名称;

测试用例读取模块220,用于读取待执行测试用例集的每一个测试用例;

子集名称获取模块230,用于根据预先添加在当前读取的测试用例上的子集注解信息,获取当前测试用例隶属的测试用例子集的名称;

配置信息读取模块240,用于根据当前测试用例隶属的测试用例子集的名称,在配置文件中读取与所述测试用例子集的名称相对应的配置信息,所述配置信息用于指示测试用例子集是否需要执行;

执行处理模块250,用于如果读取到的配置信息指示测试用例子集需要执行,则执行当前测试用例;如果读取到的配置信息指示测试用例子集不需要执行,则不执行当前测试用例。

可选地,获取模块210,具体用于根据测试用例名称的正则匹配,获取待执行测试用例集包含的全部测试用例;其中,所述待执行测试用例集按照类型被划分为多个测试用例子集。

可选地,执行处理模块250,具体用于:如果读取到的配置信息为“true”,则执行当前测试用例;如果读取到的配置信息为“false”,则不执行当前测试用例;其中,所述配置信息采用“true”和“false”的形式指示测试用例子集是否需要执行。

进一步地,该装置还可以包括:配置文件生成模块,用于预先生成配置文件,该配置文件中包括每个测试用例子集的名称与配置信息之间的对应关系。

该装置支持通过文件配置用例子集是否执行,如果用例集的部分用例子集有时需要执行,有时不需要执行,每次变动都不需要修改代码,执行成本低。

实施例3

本发明实施例还提供了一种电子设备,如图3所示,包括一个或多个处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。

存储器303,用于存放计算机程序;

处理器301,用于执行存储器303上所存放的程序时,实现上述测试用例执行方法的各步骤。

本发明的实施例具有如下优点:

可以比较方便的划分用例子集,只需要在用例上的注解里添加用例子集的名称;

当有多个用例子集的执行计划有变更的时候,不需要修改代码,只需要修改配置文件,改动的成本比较小。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述测试用例执行方法的各步骤。

本发明的实施例通过junit测试用例添加注解的方式划分子集用例,然后在自定义的junit的执行器中读取用例的注解返回的用户子集的名称,通过该用例子集在配置文件中的设置来决定用例是否执行,实现了junit用例子集可通过配置来决定是否要执行。该技术方案可以方便地增删大量的测试用例,降低修改代码的成本。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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