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.根据权利要求1所述的方法,其特征在于,所述根据所述表达式集合生成用于测试所述待测函数的测试用例集合包括:将从所述表达式集合中依次读取到的任意一个表达式作为当前表达式,并对所述当前表达式执行以下步骤,以生成所述当前表达式所对应的测试用例,直至遍历完所述表达式集合中的表达式:获取所述当前表达式中所涉及的测试条件中的条件变量,其中,所述条件变量包括以下至少之一:可构造对象变量、非构造对象变量;和在生成所述当前表达式所对应的测试用例的过程中,在所述待测函数中所述测试条件的条件变量为所述可构造对象变量时,直接构造所述可构造对象变量得到构造后的条件变量,并将所述构造后的变量作为所述当前表达式所对应的测试用例中测试条件的条件变量,以生成所述当前表达式所对应的测试用例;和/或,在所述待测函数中所述测试条件的条件变量为所述非构造对象变量时,采用Mock函数模拟所述非构造对象变量得到模拟后的条件变量,并将所述模拟后的条件变量作为所述当前表达式所对应的测试用例中测试条件的条件变量,以生成所述当前表达式所对应的测试用例;和将生成的所述当前表达式所对应的测试用例存储在用于测试所述待测函数的所述测试用例集合中,其中,所述测试用例集合中包括所述表达式集合中每一个表达式所对应的测试用例。3.根据权利要求2所述的方法,其特征在于,在所述待测函数中所述测试条件的条件变量为所述可构造对象变量时,直接构造所述可构造对象变量得到构造后的条件变量包括:在所述待测函数中所述条件变量所涉及的条件参数为常量参数时,直接构造所述常量参数,将构造后的所述常量参数作为所述测试用例中测试条件的条件变量的条件参数;在所述待测函数中所述测试条件的条件变量为所述非构造对象变量时,采用Mock函数模拟所述非构造对象变量得到模拟后的条件变量包括:在所述条件变量所涉及的条件参数为变量参数时,通过所述Mock函数将所述变量参数模拟为常量参数,将模拟后的常量参数作为所述测试用例中测试条件的条件变量的条件参数。4.根据权利要求1所述的方法,其特征在于,在所述遍历所述待测函数中的函数语句,获取进入所述待测函数中任意一个或多个分支时的测试条件时,还包括:根据由所述待测函数获取到的所述测试条件建立与所述待测函数相匹配的树状结构,其中,所述树状结构中的每一个路径节点存储一个所述测试条件,所述树状结构中作为根节点的路径节点中的所述测试条件与作为子节点的路径节点中的所述测试条件具有嵌套关系。5.根据权利要求4所述的方法,其特征在于,所述根据由所述待测函数获取到的所述测试条件建立与所述待测函数相匹配的树状结构包括:依次读取所述待测函数中的函数语句作为当前函数语句,对所述当前函数语句执行以下步骤,直至读完所述待测函数中的全部函数语句;判断所述当前函数语句中是否包含所述测试条件;若所述当前函数语句中包含所述测试条件,则将所述测试条件对应存储到所述树状结构中对应的路径节点中;获取下一个函数语句作为所述当前函数语句。6.根据权利要求5所述的方法,其特征在于,所述判断所述当前函数语句中是否包含所述测试条件包括:判断所述当前函数语句中是否包括用于标识所述测试条件的条件关键字;若读取到的所述当前函数语句中包括所述条件关键字,则判断出所述当前函数语句为所述测试条件所在的函数语句。7.根据权利要求5所述的方法,其特征在于,所述将所述测试条件对应存储到所述树状结构中对应的路径节点中包括:重复执行以下步骤,直至获取到所述测试条件在所述树状结构中对应的所述路径节点:获取在所述当前函数语句之前出现的相邻的上一个测试条件作为当前历史测试条件;判断所述当前函数语句中的所述测试条件与所述当前历史测试条件是否具有所述嵌套关系;若所述当前函数语句中的所述测试条件与所述当前历史测试条件具有所述嵌套关系,则将所述当前函数语句中的所述测试条件存储到与所述当前历史测试条件对应的所述路径节点的子节点中;若所述当前函数语句中的所述测试条件与所述当前历史测试条件不具有所述嵌套关系,则判断所述当前函数语句中的所述测试条件是否为所述树状结构中的所述根节点;若所述当前函数语句中的所述测试条件是所述树状结构中的所述根节点,则将所述当前函数语句中的所述测试条件存储到新的树状结构的根节点中;若所述当前函数语句中的所述测试条件不是所述树状结构中的所述根节点,则重新获取在所述当前历史测试条件之前出现的相邻的上一个测试条件作为下一个所述当前历史测试条件。8.根据权利要求4至7中任一项所述的方法,其特征在于,所述记录由各个分支的测试条件构成的表达式集合包括:读取从所述树状结构的所述根节点分别到每一个叶子节点的所述测试条件,其中,所述树状结构的所述根节点到一个所述叶子节点之间的所有路径节点构成一个分支的路径,所述叶子节点为所述分支的最后一个路径节点;将每一条所述路径中读取到的所述测试条件作为与所述路径对应的所述分支的表达式,并存储到所述待测函数的所述表达式集合中。9.一种生成测试用例的装置,其特征在于,包括:第一获取单元,用于获取...
【专利技术属性】
技术研发人员:陈晋福,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。