生成测试用例的方法及装置制造方法及图纸

技术编号:15391456 阅读:103 留言:0更新日期:2017-05-19 04:46
本发明专利技术公开了一种生成测试用例的方法及装置。其中,该方法包括:获取待测函数;遍历待测函数中的函数语句,获取进入待测函数中任意一个或多个分支时的测试条件;记录由各个分支的测试条件构成的表达式集合,其中,表达式集合中包含的一个表达式用于表征待测函数中对应的一个分支的测试用例;根据表达式集合生成用于测试待测函数的测试用例集合。

Method and device for generating test case

The invention discloses a method and a device for generating test cases. Among them, the method includes: obtaining the function to be tested; the measured traversal function statement in a function, get into the test function in any test conditions of one or more branches; the expression record consists of various branches of the set of test conditions, including a set of expressions contained in the test cases for characterization of a corresponding branch to be measured in function; according to the expression set to generate test cases for testing the function of the collection.

【技术实现步骤摘要】
生成测试用例的方法及装置
本专利技术涉及计算机领域,具体而言,涉及一种生成测试用例的方法及装置。
技术介绍
如今,单元测试已成为软件开发过程中不可缺少的一部分。为了对被测试的待测函数中所包含的函数模块进行对应的单元测试,目前常用的测试方式是针对待测函数中不同的函数模块,由人工编写对应的测试用例实现对待测函数的单元测试。然而,当待测函数的数据量较大时,若仍然采用这种通过人工编写测试用例的方式,一个一个编写用于测试当前待测函数的测试用例时,测试效率明显较低;此外,这种手动编写的测试用例也无法保证实现对待测函数的全面覆盖。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
根据本申请实施例的一个方面,提供了一种生成测试用例的方法,包括:获取待测函数;遍历上述待测函数中的函数语句,获取进入上述待测函数中任意一个或多个分支时的测试条件;记录由各个分支的测试条件构成的表达式集合,其中,上述表达式集合中包含的一个表达式用于表征上述待测函数中对应的一个分支的测试用例;根据上述表达式集合生成用于测试上述待测函数的测试用例集合。根据本申请实施例的另一个方面,提供了一种生成测试用例的装置,包括:第一获取单元,用于获取待测函数;第二获取单元,用于遍历上述待测函数中的函数语句,获取进入上述待测函数中任意一个或多个分支时的测试条件;记录单元,用于记录由各个分支的测试条件构成的表达式集合,其中,上述表达式集合中包含的一个表达式用于表征上述待测函数中对应的一个分支的测试用例;生成单元,用于根据上述表达式集合生成用于测试上述待测函数的测试用例集合。在本申请实施例中,通过遍历待测函数中的全部函数语句,获取到进入待测函数中任意一个或多个分支时的测试条件,进一步,通过记录由上述各个测试条件构成的表达式集合,其中,表达式集合中的每一个表达式用于表征待测函数中对应的一个分支的测试用例,从而实现利用上述表达式集合中的表达式生成用于测试该待测函数的测试用例。也就是说,通过这种自动遍历进入待测函数中任意一个或多个分支时的测试条件,记录各个分支对应的表达式,从而实现自动生成不同的测试用例,不仅大大提高了测试待测函数的测试效率,而且,遍历函数语句还可以保证覆盖到全部分支,进而实现提高测试覆盖度的效果。进而解决了现有技术中通过手动编写测试用例所导致的测试效率较低的技术问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本申请实施例的一种可选的生成测试用例的方法的流程图;图2是根据本申请实施例的一种可选的生成测试用例的方法的应用场景示意图;图3是根据本申请实施例的一种可选的生成测试用例的方法的示意图;图4是根据本申请实施例的一种可选的生成测试用例的方法所涉及的待测函数的示意图;图5是根据本申请实施例的一种可选的生成测试用例的装置的示意图;以及图6是根据本申请实施例的一种可选的生成测试用例的计算机终端的示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本专利技术实施例,还提供了一种生成测试用例的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本专利技术实施例中,图1示出了上述生成测试用例的方法的流程图,如图1所示,该方法包括:S102,获取待测函数;S104,遍历待测函数中的函数语句,获取进入待测函数中任意一个或多个分支时的测试条件;S106,记录由各个分支的测试条件构成的表达式集合,其中,表达式集合中包含的一个表达式用于表征待测函数中对应的一个分支的测试用例;S108,根据表达式集合生成用于测试待测函数的测试用例集合。可选地,在本实施例中,上述生成测试用例的方法可以但不限于应用于如图2所示的应用场景中,测试服务器202通过上述生成测试用例的方法生成对被测服务器204中的待测函数进行自动化测试的测试用例,从而实现对待测函数的自动化测试。其中,上述测试服务器202与被测服务器204可以为同一服务器,也就是说,测试服务器也可以对自身运行的待测函数进行自动化测试,本实施例对此不做任何限定。具体而言,测试服务器在获取到需要进行测试的待测函数后,通过遍历待测函数中的全部函数语句,获取到进入待测函数中任意一个或多个分支时的测试条件,进一步,通过记录由上述各个测试条件构成的表达式集合,其中,表达式集合中的每一个表达式用于表征待测函数中对应的一个分支的测试用例,从而实现利用上述表达式集合中的表达式生成用于测试该待测函数的测试用例。也就是说,通过这种自动遍历进入待测函数中任意一个或多个分支时的测试条件,记录各个分支对应的表达式,从而实现自动生成不同的测试用例,不仅大大提高了测试待测函数的测试效率,而且,遍历函数语句还可以保证覆盖到全部分支,进而实现提高测试覆盖度的效果。可选地,在本实施例中,在遍历待测函数中的函数语句,获取进入待测函数中任意一个或多个分支时的测试条件时,还可以包括:根据由待测函数获取到的测试条件建立与待测函数相匹配的树状结构。通过将进入任意一个分支的测试条件存储到对应的树状结构的路径节点中,以便于获取由测试条件构成的一个分支的表达式。其中,树状结构中作为根节点的路径节点中的测试条件与作为子节点的路径节点中的测试条件具有嵌套关系。进一步,记录由各个分支的测试条件构成的表达式集合可以包括但不限于:读取树状结构的各个分支路径中各个路径节点中的测试条件,其中一个分支路径中的路径节点记录为一个表达式,树状结构中的所有分支路径的表达式构成该待测函数的表达式集合。例如,待测函数及其对应的树状结构可以如图3所示,其中,在该待测函数中可以依次获取到测试条件为:x>0、x<3,x≥3,result=null,result!=null,x≤0。进一步,由上述树状结构可以得出,该待测函数共包含四个分支。其中,由树状结构的根节点读取至最后一个叶子节点可以如下:第一分支的测试条件所构成的表达式可以为:x>0,且x<3;第二分支的测试条件所构成的表达式可以为:x>0,且x≥3,result=null;第三分支的本文档来自技高网
...
生成测试用例的方法及装置

【技术保护点】
一种生成测试用例的方法,其特征在于,包括:获取待测函数;遍历所述待测函数中的函数语句,获取进入所述待测函数中任意一个或多个分支时的测试条件;记录由各个分支的测试条件构成的表达式集合,其中,所述表达式集合中包含的一个表达式用于表征所述待测函数中对应的一个分支的测试用例;根据所述表达式集合生成用于测试所述待测函数的测试用例集合。

【技术特征摘要】
1.一种生成测试用例的方法,其特征在于,包括:获取待测函数;遍历所述待测函数中的函数语句,获取进入所述待测函数中任意一个或多个分支时的测试条件;记录由各个分支的测试条件构成的表达式集合,其中,所述表达式集合中包含的一个表达式用于表征所述待测函数中对应的一个分支的测试用例;根据所述表达式集合生成用于测试所述待测函数的测试用例集合。2.根据权利要求1所述的方法,其特征在于,所述根据所述表达式集合生成用于测试所述待测函数的测试用例集合包括:将从所述表达式集合中依次读取到的任意一个表达式作为当前表达式,并对所述当前表达式执行以下步骤,以生成所述当前表达式所对应的测试用例,直至遍历完所述表达式集合中的表达式:获取所述当前表达式中所涉及的测试条件中的条件变量,其中,所述条件变量包括以下至少之一:可构造对象变量、非构造对象变量;和在生成所述当前表达式所对应的测试用例的过程中,在所述待测函数中所述测试条件的条件变量为所述可构造对象变量时,直接构造所述可构造对象变量得到构造后的条件变量,并将所述构造后的变量作为所述当前表达式所对应的测试用例中测试条件的条件变量,以生成所述当前表达式所对应的测试用例;和/或,在所述待测函数中所述测试条件的条件变量为所述非构造对象变量时,采用Mock函数模拟所述非构造对象变量得到模拟后的条件变量,并将所述模拟后的条件变量作为所述当前表达式所对应的测试用例中测试条件的条件变量,以生成所述当前表达式所对应的测试用例;和将生成的所述当前表达式所对应的测试用例存储在用于测试所述待测函数的所述测试用例集合中,其中,所述测试用例集合中包括所述表达式集合中每一个表达式所对应的测试用例。3.根据权利要求2所述的方法,其特征在于,在所述待测函数中所述测试条件的条件变量为所述可构造对象变量时,直接构造所述可构造对象变量得到构造后的条件变量包括:在所述待测函数中所述条件变量所涉及的条件参数为常量参数时,直接构造所述常量参数,将构造后的所述常量参数作为所述测试用例中测试条件的条件变量的条件参数;在所述待测函数中所述测试条件的条件变量为所述非构造对象变量时,采用Mock函数模拟所述非构造对象变量得到模拟后的条件变量包括:在所述条件变量所涉及的条件参数为变量参数时,通过所述Mock函数将所述变量参数模拟为常量参数,将模拟后的常量参数作为所述测试用例中测试条件的条件变量的条件参数。4.根据权利要求1所述的方法,其特征在于,在所述遍历所述待测函数中的函数语句,获取进入所述待测函数中任意一个或多个分支时的测试条件时,还包括:根据由所述待测函数获取到的所述测试条件建立与所述待测函数相匹配的树状结构,其中,所述树状结构中的每一个路径节点存储一个所述测试条件,所述树状结构中作为根节点的路径节点中的所述测试条件与作为子节点的路径节点中的所述测试条件具有嵌套关系。5.根据权利要求4所述的方法,其特征在于,所述根据由所述待测函数获取到的所述测试条件建立与所述待测函数相匹配的树状结构包括:依次读取所述待测函数中的函数语句作为当前函数语句,对所述当前函数语句执行以下步骤,直至读完所述待测函数中的全部函数语句;判断所述当前函数语句中是否包含所述测试条件;若所述当前函数语句中包含所述测试条件,则将所述测试条件对应存储到所述树状结构中对应的路径节点中;获取下一个函数语句作为所述当前函数语句。6.根据权利要求5所述的方法,其特征在于,所述判断所述当前函数语句中是否包含所述测试条件包括:判断所述当前函数语句中是否包括用于标识所述测试条件的条件关键字;若读取到的所述当前函数语句中包括所述条件关键字,则判断出所述当前函数语句为所述测试条件所在的函数语句。7.根据权利要求5所述的方法,其特征在于,所述将所述测试条件对应存储到所述树状结构中对应的路径节点中包括:重复执行以下步骤,直至获取到所述测试条件在所述树状结构中对应的所述路径节点:获取在所述当前函数语句之前出现的相邻的上一个测试条件作为当前历史测试条件;判断所述当前函数语句中的所述测试条件与所述当前历史测试条件是否具有所述嵌套关系;若所述当前函数语句中的所述测试条件与所述当前历史测试条件具有所述嵌套关系,则将所述当前函数语句中的所述测试条件存储到与所述当前历史测试条件对应的所述路径节点的子节点中;若所述当前函数语句中的所述测试条件与所述当前历史测试条件不具有所述嵌套关系,则判断所述当前函数语句中的所述测试条件是否为所述树状结构中的所述根节点;若所述当前函数语句中的所述测试条件是所述树状结构中的所述根节点,则将所述当前函数语句中的所述测试条件存储到新的树状结构的根节点中;若所述当前函数语句中的所述测试条件不是所述树状结构中的所述根节点,则重新获取在所述当前历史测试条件之前出现的相邻的上一个测试条件作为下一个所述当前历史测试条件。8.根据权利要求4至7中任一项所述的方法,其特征在于,所述记录由各个分支的测试条件构成的表达式集合包括:读取从所述树状结构的所述根节点分别到每一个叶子节点的所述测试条件,其中,所述树状结构的所述根节点到一个所述叶子节点之间的所有路径节点构成一个分支的路径,所述叶子节点为所述分支的最后一个路径节点;将每一条所述路径中读取到的所述测试条件作为与所述路径对应的所述分支的表达式,并存储到所述待测函数的所述表达式集合中。9.一种生成测试用例的装置,其特征在于,包括:第一获取单元,用于获取...

【专利技术属性】
技术研发人员:陈晋福
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1