【技术实现步骤摘要】
本专利技术涉及软件单元自动测试技术,尤其涉及一种。
技术介绍
在对软件进行单元测试时,对于被测函数中的被调用的函数,通常不直接调用原函数,而是生成逻辑简单的替换函数,用替换函数模拟原函数的行为,主要原因有1)可以将被测程序与执行代价较大的实际程序隔离,提高单元测试的效率;2)将被测函数与不可控制的执行环境隔离,让测试过程顺利进行;3)单元测试中,被调用函数可能尚未实现。自动化单元测试中,替换函数的生成会遇到新问题。传统的替换函数生成方法中,替换函数的输出值为随机值。自动化单元测试通常选择一条目标覆盖路径,然后生成满足该路径的测试用例,最后动态执行被测函数,判断沿该路径执行时,程序的行为是否正确。由于路径上 被调用函数会修改调用点各变量的取值,被调用函数的随机输出值可能导致各变量的取值不能满足路径条件,导致被测函数不能按照目标覆盖路径执行,影响测试的覆盖率。因此,需要计算被调用函数在路径上每个调用点必须满足的路径上下文条件,替换函数根据各调用点必须满足的上下文条件修改输出型变量的取值,让被测函数按照目标覆盖路径执行。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种,以计算给定路径中各函数调用点对上下文环境所产生的影响,通过采用路径敏感的符号化区间运算技术确定被调用函数在路径上各调用点必须满足的上下文条件,最后根据该条件生成被调用函数的模拟替换函数,保证被测程序按照目标覆盖路径执行,从而提高单元测试的效率和覆盖率。为达到上述目的,本专利技术的技术方案是这样实现的 一种,该方法包括 A、获取被测函数的目标覆盖路径和满足该路径的测试用例; B、提取被 ...
【技术保护点】
【技术特征摘要】
1.ー种程序路径中确定函数调用的上下文环境影响的方法,其特征在于,该方法包括 A、获取被测函数的目标覆盖路径和满足该路径的测试用例; B、提取被测函数使用的全局变量; C、采用路径敏感的符号化区间运算技术,计算被调用函数在路径上各调用点必需满足的路径上下文条件; D、基于上下文条件,生成模拟替换代码;对于同一函数可能在路径上被多次调用,使用F表示被调用函数、为被调用函数在路径上的一个调用点。2.根据权利要求I所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤A包括 Al、获取目标覆盖路径和让待测函数沿该路径执行的测试用例; A2、对于控制流图G ニ (Node, Edge, start, 6 必,路径/7表示待测函数的一条执行序列<start, U1,…/ 6ジ,其中所述 siari E Abofe 为函数入口,n E Abofe,如果/ —== end, P为一条完整路径,否则/7为一条子路径; A3、如果同一控制流图节点在路径上出现多次,视为不同的路径节点。3.根据权利要求I所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤B包括 BI、将路径的首节点设置为当前节点,沿路径进行数据流迭代; B2、判断当前节点是否存在全局变量,如果是,执行步骤B3,如果否,执行步骤B4 ; B3、将当前节点使用的全局变量添加到被测函数的全局变量集合中; B4、判断当前节点是否为路径的尾节点,如果是,退出计算;如果否,将当前节点的后继节点设置为当前节点,然后返回步骤B2。4.根据权利要求I所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤C包括 Cl、为待测函数的输入变量生成对应的符号,符号对应的初始取值区间的上限和下限都设置为测试用例中该变量的取值; C2、将路径的头节点设置为当前节点,沿路径进行数据流迭代; C3、根据当前节点对应的语句更新数据流信息; C4、判定当前节点是否为尾节点,如果是,退出计算;如果否,执行步骤C5 ; C5、将当前节点的后继节点设置为当前节点,然后返回步骤C3。5.根据权利要求4所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤C3包括 C31、将当前所有符号以及符号对应的取值区间备份为前置信息/Tre-i/7/b; C32、如果当前节点存在函数调用点八为函数调用点生成对应的ID,所述ID包括该调用点对应的抽象语法树节点信息和控制流图节点信息;为有效输出型变量生成对应的符号,有效输出型变量包括返回值、指针或引用类型的參数、被测函数使用、且被/重定义的全局变量,将各有效输出型变量及初始符号く var,symbol}记录到f的初始符号集合中,将符号对应的初始取值区间下限设置为负无穷,将初始取值区间的上限设置为正无穷; C33、如果当前节点存在尚未符号化的变量,为该变量生成对应的符号;C34、如果当前节点对应的语句是赋值语句,计算赋值表达式的右端表达式对应的符号表达式,将赋值表达式的左端变量对应的符号表达式替换为计算结果; C35、如果当前结点为分支结点,根据分支结点中的条件表达式计算各符号的分支限定区间; C36、清除无效符号。6.根据权利要求5所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤C36包括 C361、获取当前所有的符号放入集合中; C362、如果符号集合不为空,从集合中选择...
【专利技术属性】
技术研发人员:王雅文,宫云战,周傲,黄俊飞,金大海,唐容,孙华衿,
申请(专利权)人:北京邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。