[发明专利]一种程序不可达路径的自动检测方法在审
申请号: | 201510843266.7 | 申请日: | 2015-11-26 |
公开(公告)号: | CN105446881A | 公开(公告)日: | 2016-03-30 |
发明(设计)人: | 唐郑熠;王金水;薛醒思;洪茂雄;胡文瑜;刘建华 | 申请(专利权)人: | 福建工程学院 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市商泰律师事务所 11255 | 代理人: | 王晓彬 |
地址: | 350118 福*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 不可 路径 自动检测 方法 | ||
技术领域
本发明属于软件测试领域,具体地,本发明涉及一种程序不可达路径的自动检测方法。
背景技术
术语解释:
控制流图:控制流图(ControlFlowGraph)是程序语句逻辑执行顺序的图形化表达方式,简称为CFG。CFG包括节点和有向边两类元素:节点表示程序中的语句,并且有唯一的入口节点与出口节点;边表示节点之间的顺序关系。
程序路径:是指由CFG中的节点构成的一个序列,若该序列的首节点为入口节点,末节点为出口节点,则该路径称为完整路径。
不可达路径:是指在任何情况下都不会出现的程序路径。
软件测试是软件质量保障的重要手段,需要耗费大量的人力与物力。统计数据表明,软件测试的开销占到了软件开发总成本的60%以上。软件测试的自动化是提高软件测试质量、降低成本、提高效率的一个重要途径,因此被学术界与工业界广泛地关注与研究。大体上,软件测试可以分为功能测试与结构测试,后者是指对程序的内部逻辑结构进行测试,以判定程序的各条路径是否能够满足需求。然而充分覆盖程序的测试是难以达成的,因为即使是并不复杂的程序段,也会由于分支、循环结构的存在,导致产生规模巨大的路径空间。因此,结构测试的一个重要研究领域,就是解决面向程序路径的测试数据生成问题。而不可达路径的检测,则是其中的一个重要研究热点。所谓的程序不可达路径,是指在任何输入下,都不会被执行的程序路径。程序不可达路径的存在,会导致在生成测试数据时,产生大量的无效测试数据,从而在测试执行时浪费大量的人力与物力,从而大大影响到测试的效率。因此,不可达路径的检测不仅能够降低测试成本,还能够有效提高测试效率,一直以来都是软件测试领域的一个研究热点。
程序中所存在的不可达路径是代码冗余的一种表现形式,Liverpool大学的Yates与Malevris两位学者,通过实验证明了在大型软件系统中通常都会包含有10-25%的冗余代码。不可达路径的检测问题已经被证明是一个不可判定问题,因此所有的检测方法都是非完备的,即不存在能够检测出所有不可达路径的算法。目前,检测程序不可达路径的方法,可以分为静态检测与动态检测两类。
1.静态检测技术
静态检测技术可依据原理,分为两类:
●基于路径条件可满足性的方法:是指针对所有的程序路径,通过对满足路径条件的谓词组合进行求解,依据解的存在性来判定路径的可达性。这类方法具有较高的复杂度。
●基于分支相关性的方法:是指通过对分支语句进行相关性分析的手段,来检测不可达路径。
在第一类技术中,典型的方法,是抽取程序的每条路径的分支谓词,并规约为一个方程组,通过求解方程组是否有解来判定路径是否可达。然而这类方法具有较高的复杂性,并且缺乏表达数组、结构体等复合数据类型的能力。此外,还有一些类似的方法:使用区间算术规约程序路径,但这类方法在处理条件谓词中的非线性表达式时,效率较为低下;使用代码模式检测程序分支,并通过符号执行技术进行路径的可达性检测,但这类方法的通用性受到代码模式的约束;使用变量的抽象取值范围规约程序的状态条件,通过判断路径的变量取值范围来判定路径是否可达,但这类方法不能很好地处理复合的分支条件。
程序分支之间的相关性是产生不可达路径的主要原因,在具有一定复杂度的程序中,9-40%的分支语句会存在相关系。但基于相关性分析的检测方法由于无法分析结构复杂的分支条件,因此难以获得令人满意的节点覆盖率。该类方法的代表性工作包括:在传统的数据流分析中加入了分支相关性分析,从而提高传统数据流分析的精度;通过判断赋值语句、分支语句之间的冲突性来识别不可达路径,然而该方法却缺乏处理循环结构的能力;通过对控制流与数据流的静态分析,来确定相关性语句,并进而判定不可达路径,其特点是能够处理函数调用关系。
2.动态检测技术
动态检测技术是指在进行路径测试的过程中,依据测试用例生成的复杂度来判定待测试的路径是否可达。然而动态检测技术的检查代价通常较大,并且无法保证检测结果的绝对准确,具有较强的不确定性。
常见的方法包括:使用基于启发式策略的方法检测不可达路径,其依据是可达路径的部分属相同这一原理,从而通过检测试数据的生成轨迹来实现路径可达性的检测;使用语义更新技术,从程序语义上来排除程序中的不可达路径;利用遗传算法来检测不可达路径,为了更好地引导搜索,该类方法会通过融合控制流图的信息,进行适应度函数的设计。
现有的技术方案,存在以下的问题:
(1)复杂度较高,检测效率较低。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建工程学院,未经福建工程学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510843266.7/2.html,转载请声明来源钻瓜专利网。