一种基于条件值的软件静态预测方法及工具的制作方法

文档序号:6652852阅读:310来源:国知局
专利名称:一种基于条件值的软件静态预测方法及工具的制作方法
技术领域
本发明涉及一种基于条件值的软件静态预测方法及工具,属于软件的静态测试技 术领域。
背景技术
软件测试技术通常分为静态测试和动态测试。动态测试就是在程序中运行测试用 例来检验程序的动态行为以及运行结果,并最终发现缺陷。静态测试是不执行程序代码而 寻找程序代码中可能存在的缺陷或评估程序代码的过程,程序静态测试的目标不是证明程 序完全正确,而是作为动态测试的补充,在程序运行前尽可能多的发现其中隐含的错误,提 高程序的可靠性和健壮性,静态测试在更高的抽象层次上对程序的某些属性进行考察,而 不是对程序的某一个特定输入的考察。现在国内对于静态测试中的符号执行方法方面的研究并不是很充分,国内比较著 名的是北京航空航天大学软件研究所开发的Mfeftx) C/C++, SafePro C/C++提供多选窗 口单驱动的用户工作环境,支持若干种测试信息的快速关联分析,提供了图文并茂的软件 测试结果报告,同时支持静态和动态测试。在这些已有的软件静态测试理论和测试工具中,往往侧重于对C/C++程序中主体 代码的静态分析,但对于程序中预处理指令却往往采用忽略或者直接跳过处理。然而对预 处理过程的分析通常是程序分析中的一项重要补充,在大型的软件系统中,广泛存在着文 件的相互包含、条件式编译和各类宏定义之间相互关联和高度交错,对复杂的头文件的解 析是一件冗余乏味的工作。条件值(c-value)是一类用于预处理变量符号替代的组合表达式。其基本结构如 下
Var <= c -> ^1Oe2在式(3.4)中,c代表布尔表达式,表达式力和%可以是常数、变量和条件值(条 件值是支持嵌套的)。引入条件值来描述预处理变量值的重要原因是其简洁、清晰的结构,在式(3.4) 中,若布尔表达式c为真,则预处理变量Var的取值为若布尔表达式c为假,则预处理变 量Var的取值为%。由于条件值之间是允许嵌套的,因此利用条件值的形式可以对预处理 变量的当前值进行完整地、准确地表述。条件值之间是允许相互嵌套的,随着对于条件编译指令的分析不可避免的会出现 “规模爆炸”,即表示条件值的规模会越来越大,因此在利用条件值来表示预处理变量值时, 对其进行化简操作是必不可少的。
C-^elOe2 =c AelV-IC Ae2(1) 式(1)中ei和%是指布尔表达式。
权利要求
1. 一种基于条件值的软件静态预测方法及工具,已经开发包含该方法的软件自动化测 试工具,其特征在于包括如下步骤1、第一阶段分析。其中包括1.1)将预处理代码输入测试工具中;1.2)根据C语言文法自定义一个关键词列表,并对照关键词列表对预处理代码进行词 法分析;2、第二阶段分析。其中包括2. 1)根据第一阶段分析步骤(1. 2)中的词法分析结果,对照C语言中预处理指令集,为 预处理指令后的变量创建相应的结点并且创建代码行的条件表达式;2.2)根据第二阶段分析步骤(2.1)中的结点类型,对不同的预处理指令进行处理,利 用条件值存储条件编译指令,最后通过对条件值的整合,得到条件值形式表示的预处理变 量值和代码行的可达性条件表达式。
2.根据权利要求1所述的针对条件编译指令的静态预测方法新技术,其特征在于增加 了条件值模块(利用整合处理后的条件值形式正确描述了预处理变量的值)。
全文摘要
本发明公布了一种基于条件值的软件静态预测方法及工具,有如下步骤1、第一阶段分析。其中包括1.1)将预处理代码输入测试工具中;1.2)利用基于C语言文法的词法分析器对代码进行词法分析;2、第二阶段分析。其中包括2.1)根据步骤(1.2)中词法分析结果,依据C语言中预处理指令集,为预处理指令后的变量创建相应的结点;2.2)根据所建立结点的属性,对不同的预处理指令进行处理,利用条件值存储条件编译指令,最后通过对条件值的整合,得到条件值形式表示的预处理变量值和代码行的可达性条件表达式。本发明避免了路径条件的可满足性判断及回溯操作,大大提高了方法的实用性。
文档编号G06F11/36GK102129406SQ20111005096
公开日2011年7月20日 申请日期2011年3月3日 优先权日2011年3月3日
发明者刘久富, 娄坚波, 朱丹丹, 梁娟娟, 王伟, 苏青琴, 陈魁 申请人:南京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1