[发明专利]程序路径中确定函数调用的上下文环境影响的方法有效
申请号: | 201210127864.0 | 申请日: | 2012-04-27 |
公开(公告)号: | CN102708053B | 公开(公告)日: | 2017-10-20 |
发明(设计)人: | 王雅文;宫云战;周傲;黄俊飞;金大海;唐容;孙华衿 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司11228 | 代理人: | 刘淑敏 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 路径 确定 函数 调用 上下文 环境 影响 方法 | ||
1.一种程序路径中确定函数调用的上下文环境影响的方法,其特征在于,该方法包括:
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及对应的取值区间。
2.根据权利要求1所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤A包括:
A1、获取目标覆盖路径和让待测函数沿该路径执行的测试用例;
A2、对于控制流图G=(Node,Edge,start,end),路径P表示待测函数的一条执行序列<start,n1,…nend>,其中:所述start∈Node为函数入口,n∈Node,如果nend==end,P为一条完整路径,否则P为一条子路径;
A3、如果同一控制流图节点在路径上出现多次,视为不同的路径节点。
3.根据权利要求1所述的程序路径中确定函数调用的上下文环境影响的方法,其特征在于,所述步骤B包括:
B1、将路径的首节点设置为当前节点,沿路径进行数据流迭代;
B2、判断当前节点是否存在全局变量,如果是,执行步骤B3,如果否,执行步骤B4;
B3、将当前节点使用的全局变量添加到被测函数的全局变量集合中;
B4、判断当前节点是否为路径的尾节点,如果是,退出计算;如果否,将当前节点的后继节点设置为当前节点,然后返回步骤B2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210127864.0/1.html,转载请声明来源钻瓜专利网。