测试用例生成方法、装置及电子设备与流程

文档序号:20047229发布日期:2020-03-03 03:57阅读:145来源:国知局
测试用例生成方法、装置及电子设备与流程
本发明涉及软件测试
技术领域
,具体而言,涉及一种测试用例生成方法、装置及电子设备。
背景技术
:现有技术中,在对待测试软件功能进行测试时,往往需要根据测试人员输入的传入参数及预先存储的其它数据(比如,数据库)来构造测试用例,上述构造过程对测试人员的经验有很高的要求,同时人工构造的效率也是非常的低。技术实现要素:有鉴于此,本发明实施例的目的在于提供一种测试用例生成方法,所述方法包括:分解组合属性得到组合属性集合,其中所述组合属性包括输入的传参组合属性及预存的依赖组合属性;遍历所述组合属性集合筛选出公共组合属性集合及个性组合属性集合,由所述公共组合属性集合生成公共组合属性用例集;对所述个性组合属性集合进行分解得到元属性集合;对所述元属性集合中的元属性进行分解得到元属性经验规则集合;及根据所述元属性经验规则集合生成个性组合属性用例集。本发明另一较佳实施例还提供一种测试用例生成装置,所述装置包括:第一分解模块,用于分解组合属性得到组合属性集合,其中所述组合属性包括输入的传参组合属性及预存的依赖组合属性;筛选模块,用于遍历所述组合属性集合筛选出公共组合属性集合及个性组合属性集合,由所述公共组合属性集合生成公共组合属性用例集;第二分解模块,用于对所述个性组合属性集合进行分解得到元属性集合;第三分解模块,用于对所述元属性集合中的元属性进行分解得到元属性经验规则集合;及生成模块,用于根据所述元属性经验规则集合生成个性组合属性用例集。本发明另一较佳实施例还提供一种电子设备,包括存储器、处理器以及上述测试用例生成装置。所述测试用例生成装置安装或存储于所述存储器,由所述处理器控制所述测试用例生成装置各功能模块的执行。与现有技术相比,本发明实施例提供的测试用例生成方法、装置及电子设备,首先,通过对输入的传参组合属性与预存的依赖组合属性进行分解,根据分解结果得到出公共组合属性集合及个性组合属性集,由所述公共组合属性集合生成公共组合属性用例集;接着,对所述个性组合属性集合进行分解得到元属性集合,并通过元属性集合得到元属性经验规则集合;最后,根据元属性经验规则集合生成个性组合属性用例集,从而生成包括公共组合属性用例集及个性组合属性用例集的测试用例。通过输入的传参组合属性与预存的依赖组合属性结合测试过程中的经验规则使电子设备自动生成测试用例,能快速构造测试用例,提高测试用例构造的效率。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1是本发明较佳实施例提供的电子设备的方框示意图。图2是本发明较佳实施例提供的一种测试用例生成方法的具体流程图。图3是图2中步骤s115包括的子步骤的流程示意图。图4是本发明较佳实施例提供的一种测试用例生成装置的功能模块框图。图5是本发明较佳实施例提供的另一种测试用例生成装置的功能模块框图。图标:100-电子设备;110-测试用例生成装置;111-存储器;112-存储控制器;113-处理器;120-数据库;1101-第一分解模块;1102-筛选模块;1103-第二分解模块;1104-第三分解模块;1105-生成模块;1106-语义信息设定模块。具体实施方式下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。请参照图1,是本发明较佳实施例提供的电子设备100的方框示意图。所述电子设备100可以是,但不限于,智能手机、个人电脑(personalcomputer,pc)、平板电脑、个人数字助理(personaldigitalassistant,pda)、移动上网设备(mobileinternetdevice,mid)等。所述电子设备100可以包括测试用例生成装置110、存储器111、存储控制器112以及处理器113。所述存储器111、存储控制器112及处理器113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。应用测试用例生成装置110可以包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述电子设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器113用于执行所述存储器111中存储的可执行模块,例如测试用例生成装置110所包括的软件功能模块及计算机程序等。其中,所述存储器111可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序。所述处理器113以及其他可能的组件对存储器111的访问可在所述存储控制器112的控制下进行。在本实施例中,所述存储器111中还存储有一数据库120,所述数据库120用于存储测试人员预先存储的数据(比如,依赖组合属性)。所述处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。应当理解的是,图1所示的结构仅为电子设备100的结构示意图,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。请参照图2,是本发明较佳实施例提供的测试用例生成方法的具体流程图,所述方法应用于电子设备100。具体方法的步骤介绍如下。步骤s111,分解组合属性得到组合属性集合。在本实施例中,所述组合属性包括输入的传参组合属性及预存的依赖组合属性,其中,所述输入的传参组合属性是指测试人员针对一待测试软件功能而需输入的参数;所述依赖组合属性是指在对待测试软件功能进行测试的过程中会用到,但不需要测试人员输入的组合属性,这类组合属性需要预先存储。这里的组合属性是指由一到多个元属性组成的对象。步骤s112,遍历所述组合属性集合筛选出公共组合属性集合及个性组合属性集合,由所述公共组合属性集合生成公共组合属性用例集。在本实施例中,所述步骤s112遍历所述属性集合筛选出公共组合属性集合及个性组合属性集合的方式可以是:检索预存的公共组合属性表从所述组合属性集合中筛选出公共组合属性集合。在本步骤中,所述电子设备100可以通过检索预先存储在存储器111中的公共组合属性表对组合属性集合中的组合属性进行筛选,当组合属性存在于所述公共组合属性表中时,则判断所述组合属性为公共组合属性,反之,则判断为个性组合属性。其中,所述公共组合属性表记录着测试人员提前设定的公共组合属性。所述公共组合属性包括多个公共属性,所述个性组合属性包括多个个性属性。公共属性是指常用的数据类型,比如,针对一个数据而言,该数据对应的整型、字符型就是公共属性。个性属性是与公共属性相对的概念,比如,针对一张订单表,这张订单表中记录的成功订单、失败订单就是个性属性。步骤s113,对所述个性组合属性集合进行分解得到元属性集合。在本实施例中,可以通过遍历所述个性组合属性集合的方式来分解个性组合属性,并通过预先存储的个性组合属性配置表来获得个性组合属性中的各个元属性,最终由各个元属性组成元属性集合。所述个性组合属性配置表中存储有个性组合属性中各个元属性之间的关系信息,通过该个性组合属性配置表可以将个性组合属性分解为多个元属性。步骤s114,对所述元属性集合中的元属性进行分解得到元属性经验规则集合。在本实施例中,所述步骤s114进行元属性分解的过程可以通过以下方式实现。遍历所述元属性集合中的元属性。根据元属性的元格式的表达式类型及元格式的类型得到元属性经验规则集合。其中,所述元格式的表达式可以是,但不限于离散类、连续类(比如,数字型)、范围类(比如,时间型)等。所述元格式的类型包括,但不限于整型、布尔型、浮点型、时间型及字符串型等。具体如何进行元属性的分解可以参照后面具体例子进行介绍。步骤s115,根据所述元属性经验规则集合生成个性组合属性用例集。请参照图3,在本实施例中,所述步骤s115包括以下子步骤。子步骤s1151,遍历所述元属性经验规则集合生成基准组合属性用例。在本实施例中,所述基准组合属性用例是指每个属性用例都是有效用例的组合属性,一般而言,选择每个属性用例的第一个有效用例组成的组合属性为所述基准组合属性。子步骤s1152,根据所述基准组合属性用例得到无效组合属性用例集合。在本实施例中,根据所述基准组合属性用例得到无效组合属性用例集合的方式可以是:将所述基准组合属性用例中的每一属性采用该属性对应的无效用例进行替换得到无效组合属性用例集合,其中每一次替换过程中只对一个属性进行无效用例替换。子步骤s1153,根据所述基准组合属性用例得到有效组合属性用例集合的方式可以是:将所述基准组合属性用例中的每一个属性采用该属性对应的其它有效用例进行替换得到有效组合属性用例集合,其中每一次替换过程中只对一个属性进行有效用例替换。子步骤s1154,由所述无效组合属性用例集合和有效组合属性用例集合构成所述个性组合属性用例集在本实施例中所述测试用例生成方法可以预先设定所述公共组合属性用例集的语义信息。在测试过程中,程序员设计的很多数据存储表都可以翻译为人为语言,比如,对于订单服务,有如下的人为语言“一条由张三通过支付宝购买的皇室战争宝石的支付记录”、“一条由李四发起的通过微信购买的天下宝石的未完成的支付记录”。对于上述中会被大量使用的数据可以采用预先设定所述公共组合属性用例集的语义信息的方式实现。这样就可以更快速更精准的生成测试用例。下面以具体的案例对步骤s114及步骤s115进行详细的说明。1.对元属性进行分解的经验规则例如,元属性,intage=[1-100],有如下经验规则:用例1:age=45(连续范围内的随机数)——a.1(有效用例)用例2:age=100(边界值)——a.2(有效用例)用例3:age=1(边界值)——a.3(有效用例)用例4:age=0(边界值-1,同时也是数字型基础校验)——a.4(无效用例)用例5:age=101(边界值+1)——a.5(无效用例)用例6:age=-1(负数)——a.6(无效用例)元属性:stringadminname={"zhangsan","lisi"},有如下经验规则:用例1:adminname="zhangsan"(遍历离散值)——b.1(有效用例)用例2:adminname="lisi"(遍历离散值)——b.2(有效用例)用例3:adminname=null(字符串基本校验)——b.3(无效用例)用例4:adminname=""(字符串基本校验)——b.4(无效用例)用例5:adminname="qf5tk"(不在离散范围)——b.5(无效用例)元属性:datebirthday=["1990-01-0100:00:00"-${now}],有如下经验规则:用例1:birthday="1998-07-1520:23:00"(范围内的随机数)——c.1(有效用例)用例2:birthday="1990-01-0100:00:00"(边界值)——c.2(有效用例)用例3:birthday="${now}"(边界值)——c.3(有效用例)用例4:birthday="${now}+60"(边界值的下一分钟)——c.4(无效用例)用例5:birthday="1989-12-3023:59:00"(边界值的上一分钟)——c.5(无效用例)用例6:birthday=null(非法输入)——c.6(无效用例)元属性:booleanman={true,false},有如下经验规则:用例1:man=true(遍历离散值)——d.1(有效用例)用例2:man=false(遍历离散值)——d.2(有效用例)用例3:man=null(非法输入)——d.3(无效用例)其中,${now}表示当前时间。2.生成组合属性用例假设,adminperson对象有如下属性:adminperson{intage=[1-100];stringadminname={"zhangsan","lisi"};datebirthday=["1990-01-0100:00:00"-${now}];boolman={true,false};}根据元属性经验规则,对这四个属性进行组合得到可以得到如下表1中的用例集。agea.1a.1a.1a.1a.1......adminnameb.1b.2b.2b.2b.2......birthdayc.1c.1c.2c.2c.2......mand.1d.2d.1d.2d.1......表1其中表1只列举了部分的用例集,若要进行完全的排列组合,组合数量满足笛卡尔集合,即,adminperson对象的用例集数量等于6*5*6*3=540个。3.减少组合属性用例集合的数量由于采用现有生成组合属性用例的方式会得到很多的结果,需要对组合属性用例集合的数量进行衰减,为此,引入基准组合属性用例,关于基准组合属性用例的介绍已经在前面描述过,在此就不再赘述。一般而言,每个属性用例的第一个有效用例组成的组合属性为所述基准组合属性用例。以上面介绍adminperson为例,基准组合属性用例的示例可参表2:agea.1adminnameb.1birthdayc.1mand.1表2在基准组合属性用例基础上,将所述基准组合属性用例中的每一属性采用该属性对应的无效用例进行替换得到无效组合属性用例集合,具体请参照表3。表3在基准组合属性用例基础上,将所述基准组合属性用例中的每一属性采用该属性对应的有效用例进行替换得到有效组合属性用例集合,具体请参照表4。表4通过上述衰减过程,可以将用例集数量由原来的540个用例衰减为17个用例(1个基准组合属性用例、10个无效组合属性用例及6个有效组合属性用例)。4.得到全属性用例集合比如某待测试功能createuser(),需要传入adminperson,user两个对象。其中adminperson={a1,a2.1,……,a2.10,a3.1,……,a3.6}user={b1,b2.1,……,b2.5,b3.1,……,b3.4},其中,b1是user对象中的基准组合属性用例,b2.1,……,b2.5是user对象中的无效组合属性用例,b3.1,……,b3.4是user对象中的有效组合属性用例。根据“3.减少组合属性用例集合的数量”中的算法,我们可以得到如下无效用例数据,请参照表5。表5根据“3.减少组合属性用例集合的数量”中的算法,我们可以得到如下表6中的离散、布尔、边界用例数据。表6由此得到全属性的用例数据:无效用例数:15;有效用例数:10。如此,通过上述方法就可以生成待测试功能的测试用例。本发明实施例还提供一种测试用例生成装置110,请参照图4,是本发明较佳实施例提供的图1所示测试用例生成装置110的功能模块框图。所述测试用例生成装置110包括第一分解模块1101、筛选模块1102、第二分解模块1103、第三分解模块1104及生成模块1105。所述第一分解模块1101用于分解组合属性得到组合属性集合。在本实施例中,所述组合属性包括输入的传参组合属性及预存的依赖组合属性,其中,所述输入的传参组合属性是指测试人员针对一待测试方法而需输入的参数;所述依赖组合属性是指在对待测试方法进行测试的过程中会用到,但不需要测试人员输入的组合属性,这类组合属性需要预先存储。这里的组合属性是指由一到多个元属性组成的对象,元属性包括,但不限于数字型、字符串型、时间型及布尔型等。在本实施例中,所述第一分解模块1101用于执行图2所示的步骤s111,关于该第一分解模块1101的具体描述也可参照步骤s111的描述。所述筛选模块1102用于遍历所述组合属性集合筛选出公共组合属性集合及个性组合属性集合,由所述公共组合属性集合生成公共组合属性用例集。所述筛选模块1102进行筛选的方式可以包括:检索预存的公共组合属性表从所述组合属性集合中筛选出公共组合属性集合。在本实施例中,所述筛选模块1102用于执行图2所示的步骤s112,关于该筛选模块1102的具体描述也可参照步骤s112的描述。所述第二分解模块1103用于对所述个性组合属性集合进行分解得到元属性集合。所述第二分解模块1103通过以下方式得到元属性集合。遍历所述元属性集合中的元属性。根据元属性的元格式的表达式类型及元格式的类型得到元属性经验规则集合。在本实施例中,所述第二分解模块1103用于执行图2所述步骤s113,关于该第二分解模块1103的具体描述也可以参照步骤s113的相关描述。所述第三分解模块1104用于对所述元属性集合中的元属性进行分解得到元属性经验规则集合。在本实施例中,所述第三分解模块1104用于执行图2所述步骤s114,关于该第三分解模块1104的具体描述也可以参照步骤s114的相关描述。所述生成模块1105用于根据所述元属性经验规则集合生成个性组合属性用例集。在本实施例中,所述生成模块1105根据所述元属性经验规则集合生成个性组合属性用例集的方式可以包括。遍历所述元属性经验规则集合生成基准组合属性用例,其中,所述基准组合属性用例是指每个属性用例都是有效用例的组合属性;根据所述基准组合属性用例得到无效组合属性用例集合;根据所述基准组合属性用例得到有效组合属性用例集合;及由所述无效组合属性用例集合和有效组合属性用例集合构成所述个性组合属性用例集。其中,所述生成模块1105根据所述基准组合属性用例得到无效组合属性用例集合的方式包括:将所述基准组合属性用例中的每一属性采用该属性对应的无效用例进行替换得到无效组合属性用例集合,其中每一次替换过程中只对一个属性进行无效用例替换。所述生成模块1105根据所述基准组合属性用例得到有效组合属性用例集合的方式包括:将所述基准组合属性用例中的每一个属性采用该属性对应的其它有效用例进行替换得到有效组合属性用例集合,其中每一次替换过程中只对一个属性进行有效用例替换。请参照图5,在本实施例中,所述测试用例生成装置110还可以包括语义信息设定模块1106。所述语义信息设定模块1106用于预先设定所述公共组合属性用例集的语义信息。综上所述,本发明实施例提供的测试用例生成方法、装置及电子设备,首先,通过对输入的传参组合属性与预存的依赖组合属性进行分解,根据分解结果得到出公共组合属性集合及个性组合属性集,由所述公共组合属性集合生成公共组合属性用例集;接着,对所述个性组合属性集合进行分解得到元属性集合,并通过元属性集合得到元属性经验规则集合;最后,根据元属性经验规则集合生成个性组合属性用例集,从而生成包括公共组合属性用例集及个性组合属性用例集的测试用例。通过输入的传参组合属性与预存的依赖组合属性结合测试过程中的经验规则使电子设备自动生成测试用例,能快速构造测试用例,提高测试用例构造的效率。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1