[发明专利]一种基于条件值的软件静态预测方法及工具无效
申请号: | 201110050963.9 | 申请日: | 2011-03-03 |
公开(公告)号: | CN102129406A | 公开(公告)日: | 2011-07-20 |
发明(设计)人: | 刘久富;娄坚波;陈魁;苏青琴;王伟;朱丹丹;梁娟娟 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210016 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 条件 软件 静态 预测 方法 工具 | ||
技术领域
本发明涉及一种基于条件值的软件静态预测方法及工具,属于软件的静态测试技术领域。
背景技术
软件测试技术通常分为静态测试和动态测试。动态测试就是在程序中运行测试用例来检验程序的动态行为以及运行结果,并最终发现缺陷。静态测试是不执行程序代码而寻找程序代码中可能存在的缺陷或评估程序代码的过程,程序静态测试的目标不是证明程序完全正确,而是作为动态测试的补充,在程序运行前尽可能多的发现其中隐含的错误,提高程序的可靠性和健壮性,静态测试在更高的抽象层次上对程序的某些属性进行考察,而不是对程序的某一个特定输入的考察。
现在国内对于静态测试中的符号执行方法方面的研究并不是很充分,国内比较著名的是:北京航空航天大学软件研究所开发的SafePro C/C++,SafePro C/C++提供多选窗口单驱动的用户工作环境,支持若干种测试信息的快速关联分析,提供了图文并茂的软件测试结果报告,同时支持静态和动态测试。
在这些已有的软件静态测试理论和测试工具中,往往侧重于对C/C++程序中主体代码的静态分析,但对于程序中预处理指令却往往采用忽略或者直接跳过处理。然而对预处理过程的分析通常是程序分析中的一项重要补充,在大型的软件系统中,广泛存在着文件的相互包含、条件式编译和各类宏定义之间相互关联和高度交错,对复杂的头文件的解析是一件冗余乏味的工作。
条件值(c-value)是一类用于预处理变量符号替代的组合表达式。其基本结构如下:
在式(3.4)中,c代表布尔表达式,表达式e1和e2可以是常数、变量和条件值(条件值是支持嵌套的)。
引入条件值来描述预处理变量值的重要原因是其简洁、清晰的结构,在式(3.4)中,若布尔表达式c为真,则预处理变量Var的取值为e1,若布尔表达式c为假,则预处理变量Var的取值为e2。由于条件值之间是允许嵌套的,因此利用条件值的形式可以对预处理变量的当前值进行完整地、准确地表述。
条件值之间是允许相互嵌套的,随着对于条件编译指令的分析不可避免的会出现“规模爆炸”,即表示条件值的规模会越来越大,因此在利用条件值来表示预处理变量值时,对其进行化简操作是必不可少的。
式(1)中e1和e2是指布尔表达式。
def?(⊥)≡false (3)
def?(tokens)≡true (4)
式(3.9)符号∴代表一个任意操作符
以上公式主要是一些针对条件值的基本化简准则,其中包含了一些常用的运算符,如∧和∨分别代表逻辑与、逻辑或。
式(2)、(3)、(4)是针对条件值中包含的#define预处理指令的化简公式,其中式(4)主要指若出现单词序列组合,则默认其为真。
式(5)是出现∴为关系运算符或者算术运算符时,相关的条件值化简公式。举例来说,若预处理变量Var的值为利用式(1)可化简为进一步可化简为
式(6)、(7)是针对条件值中包含嵌套关系的化简公式。举例来说,若预处理变量Var的值为先利用式(6)可将其化简为再利用式(7)可将其进一步可化简为
式(8)、(9)是对于包含自由预处理变量的条件值的化简公式。
以上公式可以大大简化条件值中的布尔表达式的可满足性判断,在实际解决问题的过程中,选用适当的公式也将对解决一些NP-完全问题起到很好的帮助作用,进一步提高了条件值的实用性和高效性。
发明内容
本发明目的是针对现有技术存在的缺陷提供一种基于条件值的软件静态预测方法及工具。
本发明公布了一种基于条件值的软件静态预测方法,已经开发包含该方法的面向宿主的软件自动化测试工具。其特征在于包括如下步骤:
1、第一阶段分析。其中包括:
1.1)将预处理代码输入测试工具中;
1.2)根据C语言文法自定义一个关键词列表(包含预处理指令集),并对照关键词列表对预处理代码进行词法分析;
2、第二阶段分析。其中包括:
2.1)根据第一阶段分析步骤(1.2)中的词法分析结果,对照C语言中预处理指令集,为预处理指令后的变量(即预处理变量)创建相应的结点并且创建代码行的条件表达式;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110050963.9/2.html,转载请声明来源钻瓜专利网。