一种基于蜕变关系的整数溢出故障检测方法技术

技术编号:11401658 阅读:192 留言:0更新日期:2015-05-03 17:46
本发明专利技术公开了一种基于蜕变关系的整数溢出故障检测方法,首先,采用静态测试工具对被测程序进行静态检测,初步确定其中可能会发生整数溢出的整数变量,并将其标识为整数溢出检查点;然后,基于包含造成整数溢出故障相关的整数定义语句表和整数使用语句表的“定义-使用”模型来确定上述整数溢出检查点的被整数定义语句和整数使用语句所引用的整数标识为溢出整数,溢出整数若存在整数危险使用语句表中表述的整数危险使用,则将其标识为危险整数;最后,在被测程序源代码引用所述危险整数的语句被执行前,采用蜕变测试法检测所述危险整数是否会发生整数溢出故障。通过本发明专利技术的方法,为整数溢出故障的检测提供了精确、有效的方法。

【技术实现步骤摘要】
一种基于蜕变关系的整数溢出故障检测方法
本专利技术涉及软件中整数溢出故障检测,尤其涉及一种基于蜕变关系的整数溢出故障检测方法,属于软件测试领域。
技术介绍
整数溢出故障被认为是影响软件系统安全性的重要因素。为了检测这种故障的出现,通常存在两种方法。第一种是静态测试,又称为静态审查,通过一些静态审查工具,对程序源代码或者二进制代码按照设定的规则进行审查。这种方法最大的优点就是可以自动化实施,避免人工的参与,也提高了方法的可行性。但是它最大的缺点就是误报率高,即会产生大量的假故障。因为,通过静态审查工具得到的缺陷或者故障还需要进一步的人工确认,所以大量的假故障会带来极大的人工确认劳动。第二种就是动态测试,即通过人工设计一些有针对性的测试用例,从而通过程序运行结果判断其是否与预期一致。如果不一致,则存在相应的故障。这种方法的优点就是误报少,即只要测试用例执行结果与预期不一致,则一定存在故障。同时,测试人员也可以针对重点功能模块设计相应的测试用例,来实现对关键功能或者缺陷的重点测试。但是,实际测试中,这种测试所依赖的预期测试结果通常并不容易得到。这也就是软件测试中的测试判定难题。蜕变测试方法通过验证被测软件多次输出之间是否满足一定的关系,从而为构造测试判定提供了一种方法。这种关系我们称之为蜕变关系。显然,整数溢出故障动态检测过程中也存在着测试判定难题,即当通过测试用例执行程序时,即使发生整数溢出故障,测试人员也无法确认其结果的正确与否,除非测试结果为程序崩溃等显性失效。由此可见,针对整数溢出,静态测试虽然有静态审查工具支持,简单易行,但是其结果可靠性较低,误报率较高。相对而言,动态测试则可以极大地降低误报率。但是怎样设计有效的测试用例,以及怎样判断测试用例执行结果是否正确都存在困难。这两种问题极大地限制了动态测试在整数溢出故障检测中的应用领域。
技术实现思路
为了克服现有软件测试技术中的有关整数溢出的故障检测和定位中存在的缺陷和不足,本专利技术的提供了一种基于蜕变关系的整数溢出故障检测方法。该方法综合采用静态测试和动态测试,首先基于静态测试方法初步确定可能发生整数溢出的检查点,然后基于“定义-使用”模型来审查检查点是否存在危险整数,最后查找调用这些危险整数的操作,并在这些操作前插入蜕变关系。这样当运行目标程序时,可以通过蜕变关系判定其输出是否发生整数溢出故障。本专利技术的技术方案是提供一种基于蜕变关系的整数溢出故障检测方法,其设计要点在于,包括以下步骤:步骤1采用静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点;步骤2所述整数溢出检查点的整数若存在被“定义-使用”模型中的整数定义语句和整数使用语句所引用,则将其标识为溢出整数,所述“定义-使用”模型包含造成整数溢出故障的整数定义语句表和整数使用语句表的;被整数危险使用语句表中的整数危险使用语句所引用的由于整数溢出造成被测程序安全故障的所述溢出整数标识为危险整数;步骤3在引用所述危险整数的语句被执行前采用蜕变测试方法检测所述危险整数是否发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测危险整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。。在软件测试的应用中,本专利技术还有如下进一步优化的技术方案。进一步地,所述步骤2中的整数定义语句表包括:输入定义,通过包含输入终端输入或文件输入的外部输入改变内存储空间中整数变量的存储单元的存储值;赋值定义,通过赋值操作改变内存储空间中整数变量的存储单元的存储值;其它定义,通过环境变量改变内存储空间中整数变量的存储单元的存储值;所述步骤2中的整数使用语句表包括:谓词使用,谓词判断语句中引用到整数变量;计算使用,计算语句中引用到整数变量;输出使用,被测程序输出为整数变量;定位使用,被测程序中的数组、指针索引引用整数变量定位数据在存储空间的位置;迭代使用,被测程序的迭代次数或者循环次数的计数器引用整数变量。进一步地,所述步骤2中的整数危险使用语句表包括:输出使用,程序输出为整数变量的整数数值;定位使用,程序中的数组、指针索引、内存空间地址引用整数变量定位数据在存储空间的位置;迭代使用:程序引用整数变量控制迭代次数或者循环次数。进一步地,所述步骤3中的蜕变关系集包括两个用于检测整数溢出故障的蜕变关系MR1和MR2,其中x1和x2表示被测程序的危险整数的满足蜕变关系MR的输入关系r的两个测试用例,被测程序的输出若不满足蜕变关系MR的输出关系rf,则测试用例x1和x2所对应的被测程序的危险整数在被测程序的执行中会从内存储空间的存储单元中发生整数溢出,其被整数危险使用语句表中的整数危险使用语句在后续的引用中会发生整数溢出故障。本专利技术的一种基于蜕变关系的整数溢出故障检测方法,对于被测试程序在执行中发生整数溢出故障的测试与定位提供了一种简单有效的手段。首先,采用现有技术中已有的静态测试工具对被测程序源代码进行静态检测,初步确定被测程序源代码中可能会发生的整数溢出的整数变量,并将其标识为整数溢出检查点;然后,基于包含造成整数溢出故障相关的整数定义语句表和整数使用语句表的“定义-使用”模型来确定上述整数溢出检查点的整数定义语句和整数使用语句所引用的整数标识为溢出整数,溢出整数若存在被整数危险使用语句表中表述的整数危险使用语句所使用则将其标识为危险整数;最后,在被测程序源代码引用所述危险整数的语句被执行前,采用蜕变测试法检测所述危险整数是否会发生整数溢出故障,在危险整数发生危险使用之前确定程序当前运行是否会发生整数溢出故障。通过本专利技术的方法,即利用了静态测试工具可以自动化执行的优点以及其漏报率低的优势,又发挥了蜕变测试测试结果误报率极低的长处。两种方法的结合,弥补了单一的静态测试或者动态测试的不足,为整数溢出故障的检测提供了精确、有效的方法。有益效果整数溢出故障的检测精确、有效,通过静态测试和动态测试相结合,弥补了单一的静态测试或者动态测试的不足;静态测试工具程序可以自动检测被测程序源代码中可能会发生整数溢出的整数的程序源代码语句,其漏报率低;蜕变测试测确认可能会发生整数溢出的整数的程序源代码语句中的整数是否会产生溢出故障,其误报率极低,使得本专利技术的整数溢出故障的检测精确、有效。附图说明图1本专利技术的基于蜕变关系的整数溢出故障测试方法原理图。图2被测程序中整数变量的“定义-使用”模型示意图。图3蜕变关系在“定义-使用”模型中的应用示意图具体实施方式为了阐明本专利技术的技术方案及技术目的,下面结合附图及具体实施方式对本专利技术做进一步的介绍。实施方式本专利技术的一种基于蜕变关系的整数溢出故障检测方法,包括以下步骤:第一步,对被测程序源代码进行静态测试,把可能发生整数溢出的整数标识为整数溢出检查点。采用现有技术已有的静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点。。对被测程序源代码中引用整数的语句的检测和标定,采用现有的静态测试方法,利用现有技本文档来自技高网
...
一种基于蜕变关系的整数溢出故障检测方法

【技术保护点】
一种基于蜕变关系的整数溢出故障检测方法,其特征在于,包括以下步骤:步骤1采用静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点;步骤2所述整数溢出检查点的整数若存在被“定义‑使用”模型中的整数定义语句或整数使用语句所引用,则将其标识为溢出整数,所述“定义‑使用”模型包含造成整数溢出故障的整数定义语句表和整数使用语句表;被整数危险使用语句表中的整数危险使用语句所引用的由于整数溢出造成被测程序安全故障的所述溢出整数标识为危险整数;步骤3在引用所述危险整数的语句被执行前采用蜕变测试方法检测所述危险整数是否发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测危险整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。

【技术特征摘要】
1.一种基于蜕变关系的整数溢出故障检测方法,其特征在于,包括以下步骤:步骤1采用静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点;步骤2所述整数溢出检查点的整数若存在被“定义—使用”模型中的整数定义语句或整数使用语句所引用,则将其标识为溢出整数,所述“定义—使用”模型包含造成整数溢出故障的整数定义语句表和整数使用语句表;被整数危险使用语句表中的整数危险使用语句所引用的由于整数溢出造成被测程序安全故障的所述溢出整数标识为危险整数;步骤3在引用所述危险整数的语句被执行前采用蜕变测试方法检测所述危险整数是否发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测危险整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。2.根据权利要求1所述的一种基于蜕变关系的整数溢出故障检测方法,其特征在于:所述步骤2中的整数定义语句表包括:输入定义,通过包含输入终端输入或文件输入的外部输入改变内存储空间中整数变量的存储单元的存储值;赋值定义,通过赋值操作改变内存储空间中整数变量的存储单元的存储值;其它定义,通过环境变量改变内...

【专利技术属性】
技术研发人员:惠战伟黄松李辉任正平胡斌余沛毅
申请(专利权)人:中国人民解放军理工大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1