[发明专利]程序路径中确定函数调用的上下文环境影响的方法有效
申请号: | 201210127864.0 | 申请日: | 2012-04-27 |
公开(公告)号: | CN102708053B | 公开(公告)日: | 2017-10-20 |
发明(设计)人: | 王雅文;宫云战;周傲;黄俊飞;金大海;唐容;孙华衿 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司11228 | 代理人: | 刘淑敏 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种程序路径中确定函数调用的上下文环境影响的方法,该方法将返回值、被调用函数重定义的全局变量、指针或引用类型参数作为被调用函数的输出型变量,并采用路径敏感和上下文敏感的符号化区间运算技术,计算被调用函数在路径上各调用点输出型变量必需满足的上下文条件,最后根据该条件生成模拟替换函数,模拟替换函数根据各调用点的条件动态调整输出型变量的取值,保证程序按照目标路径执行。该方法可以用于自动化单元测试中面向路径的测试,包括面向全路径测试、面向子路径测试和面向目标测试等,实验证明,采用本发明所述方法,能够保证被测程序按照目标路径执行,并提高单元测试效率。 | ||
搜索关键词: | 程序 路径 确定 函数 调用 上下文 环境 影响 方法 | ||
【主权项】:
一种程序路径中确定函数调用的上下文环境影响的方法,其特征在于,该方法包括:A、获取被测函数的目标覆盖路径和满足该路径的测试用例;B、提取被测函数使用的全局变量;C、采用路径敏感的符号化区间运算技术,计算被调用函数在路径上各调用点必需满足的路径上下文条件;D、基于上下文条件,生成模拟替换代码;对于同一函数可能在路径上被多次调用,使用F表示被调用函数、fi为被调用函数在路径上的一个调用点;所述步骤C包括:C1、为待测函数的输入变量生成对应的符号,符号对应的初始取值区间的上限和下限都设置为测试用例中该变量的取值;C2、将路径的头节点设置为当前节点,沿路径进行数据流迭代;C3、根据当前节点对应的语句更新数据流信息;C4、判定当前节点是否为尾节点,如果是,退出计算;如果否,执行步骤C5;C5、将当前节点的后继节点设置为当前节点,然后返回步骤C3;所述步骤C3包括:C31、将当前所有符号以及符号对应的取值区间备份为前置信息pre‑info;C32、如果当前节点存在函数调用点f,为函数调用点生成对应的ID,所述ID包括该调用点对应的抽象语法树节点信息和控制流图节点信息;为有效输出型变量生成对应的符号,有效输出型变量包括返回值、指针或引用类型的参数、被测函数使用、且被f重定义的全局变量,将各有效输出型变量及初始符号<var,symbol>记录到f的初始符号集合中,将符号对应的初始取值区间下限设置为负无穷,将初始取值区间的上限设置为正无穷;C33、如果当前节点存在尚未符号化的变量,为该变量生成对应的符号;C34、如果当前节点对应的语句是赋值语句,计算赋值表达式的右端表达式对应的符号表达式,将赋值表达式的左端变量对应的符号表达式替换为计算结果;C35、如果当前结点为分支结点,根据分支结点中的条件表达式计算各符号的分支限定区间;C36、清除无效符号;所述步骤C36包括:C361、获取当前所有的符号放入集合中;C362、如果符号集合不为空,从集合中选择一个符号symbol,将符号从集合中移除,执行步骤C363,否则退出当前步骤;C363、查找是否有变量对应的符号表达式中包含symbol,如果是,执行步骤C362;如果否,则步骤C364;C364、判断symbol是否为某函数调用点f的输出型变量var的初始符号,如果是,执行步骤C365;如果否,执行步骤C366;C365、从pre‑info中取出symbol对应的取值区间domain,将<var,domain>保存到函数调用点f的必需满足的上下文条件中;C366、清除symbol及对应的取值区间。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210127864.0/,转载请声明来源钻瓜专利网。