CN104572470A - 一种基于蜕变关系的整数溢出故障检测方法 - Google Patents

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

Info

Publication number
CN104572470A
CN104572470A CN201510039364.5A CN201510039364A CN104572470A CN 104572470 A CN104572470 A CN 104572470A CN 201510039364 A CN201510039364 A CN 201510039364A CN 104572470 A CN104572470 A CN 104572470A
Authority
CN
China
Prior art keywords
integer
statement
overflow
dangerous
definition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510039364.5A
Other languages
English (en)
Other versions
CN104572470B (zh
Inventor
惠战伟
黄松
李辉
任正平
胡斌
余沛毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PLA University of Science and Technology
Original Assignee
PLA University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PLA University of Science and Technology filed Critical PLA University of Science and Technology
Priority to CN201510039364.5A priority Critical patent/CN104572470B/zh
Publication of CN104572470A publication Critical patent/CN104572470A/zh
Application granted granted Critical
Publication of CN104572470B publication Critical patent/CN104572470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

一种基于蜕变关系的整数溢出故障检测方法
技术领域
本发明涉及软件中整数溢出故障检测,尤其涉及一种基于蜕变关系的整数溢出故障检测方法,属于软件测试领域。
背景技术
整数溢出故障被认为是影响软件系统安全性的重要因素。为了检测这种故障的出现,通常存在两种方法。第一种是静态测试,又称为静态审查,通过一些静态审查工具,对程序源代码或者二进制代码按照设定的规则进行审查。这种方法最大的优点就是可以自动化实施,避免人工的参与,也提高了方法的可行性。但是它最大的缺点就是误报率高,即会产生大量的假故障。因为,通过静态审查工具得到的缺陷或者故障还需要进一步的人工确认,所以大量的假故障会带来极大的人工确认劳动。
第二种就是动态测试,即通过人工设计一些有针对性的测试用例,从而通过程序运行结果判断其是否与预期一致。如果不一致,则存在相应的故障。这种方法的优点就是误报少,即只要测试用例执行结果与预期不一致,则一定存在故障。同时,测试人员也可以针对重点功能模块设计相应的测试用例,来实现对关键功能或者缺陷的重点测试。但是,实际测试中,这种测试所依赖的预期测试结果通常并不容易得到。这也就是软件测试中的测试判定难题。蜕变测试方法通过验证被测软件多次输出之间是否满足一定的关系,从而为构造测试判定提供了一种方法。这种关系我们称之为蜕变关系。显然,整数溢出故障动态检测过程中也存在着测试判定难题,即当通过测试用例执行程序时,即使发生整数溢出故障,测试人员也无法确认其结果的正确与否,除非测试结果为程序崩溃等显性失效。
由此可见,针对整数溢出,静态测试虽然有静态审查工具支持,简单易行,但是其结果可靠性较低,误报率较高。相对而言,动态测试则可以极大地降低误报率。但是怎样设计有效的测试用例,以及怎样判断测试用例执行结果是否正确都存在困难。这两种问题极大地限制了动态测试在整数溢出故障检测中的应用领域。
发明内容
为了克服现有软件测试技术中的有关整数溢出的故障检测和定位中存在的缺陷和不足,本发明的提供了一种基于蜕变关系的整数溢出故障检测方法。该方法综合采用静态测试和动态测试,首先基于静态测试方法初步确定可能发生整数溢出的检查点,然后基于“定义-使用”模型来审查检查点是否存在危险整数,最后查找调用这些危险整数的操作,并在这些操作前插入蜕变关系。这样当运行目标程序时,可以通过蜕变关系判定其输出是否发生整数溢出故障。
本发明的技术方案是提供一种基于蜕变关系的整数溢出故障检测方法,其设计要点在于,包括以下步骤:
步骤1采用静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点;
步骤2所述整数溢出检查点的整数若存在被“定义-使用”模型中的整数定义语句和整数使用语句所引用,则将其标识为溢出整数,所述“定义-使用”模型包含造成整数溢出故障的整数定义语句表和整数使用语句表的;被整数危险使用语句表中的整数危险使用语句所引用的由于整数溢出造成被测程序安全故障的所述溢出整数标识为危险整数;
步骤3在引用所述危险整数的语句被执行前采用蜕变测试方法检测所述危险整数是否发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测危险整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。。
在软件测试的应用中,本发明还有如下进一步优化的技术方案。
进一步地,所述步骤2中的整数定义语句表包括:
输入定义,通过包含输入终端输入或文件输入的外部输入改变内存储空间中整数变量的存储单元的存储值;
赋值定义,通过赋值操作改变内存储空间中整数变量的存储单元的存储值;
其它定义,通过环境变量改变内存储空间中整数变量的存储单元的存储值;
所述步骤2中的整数使用语句表包括:
谓词使用,谓词判断语句中引用到整数变量;
计算使用,计算语句中引用到整数变量;
输出使用,被测程序输出为整数变量;
定位使用,被测程序中的数组、指针索引引用整数变量定位数据在存储空间的位置;
迭代使用,被测程序的迭代次数或者循环次数的计数器引用整数变量。
进一步地,所述步骤2中的整数危险使用语句表包括:
输出使用,程序输出为整数变量的整数数值;
定位使用,程序中的数组、指针索引、内存空间地址引用整数变量定位数据在存储空间的位置;
迭代使用:程序引用整数变量控制迭代次数或者循环次数。
进一步地,所述步骤3中的蜕变关系集包括两个用于检测整数溢出故障的蜕变关系MR1和MR2
其中x1和x2表示被测程序的危险整数的满足蜕变关系MR的输入关系r的两个测试用例,被测程序的输出若不满足蜕变关系MR的输出关系rf,则测试用例x1和x2所对应的被测程序的危险整数在被测程序的执行中会从内存储空间的存储单元中发生整数溢出,其被整数危险使用语句表中的整数危险使用语句在后续的引用中会发生整数溢出故障。
本发明的一种基于蜕变关系的整数溢出故障检测方法,对于被测试程序在执行中发生整数溢出故障的测试与定位提供了一种简单有效的手段。首先,采用现有技术中已有的静态测试工具对被测程序源代码进行静态检测,初步确定被测程序源代码中可能会发生的整数溢出的整数变量,并将其标识为整数溢出检查点;然后,基于包含造成整数溢出故障相关的整数定义语句表和整数使用语句表的“定义-使用”模型来确定上述整数溢出检查点的整数定义语句和整数使用语句所引用的整数标识为溢出整数,溢出整数若存在被整数危险使用语句表中表述的整数危险使用语句所使用则将其标识为危险整数;最后,在被测程序源代码引用所述危险整数的语句被执行前,采用蜕变测试法检测所述危险整数是否会发生整数溢出故障,在危险整数发生危险使用之前确定程序当前运行是否会发生整数溢出故障。通过本发明的方法,即利用了静态测试工具可以自动化执行的优点以及其漏报率低的优势,又发挥了蜕变测试测试结果误报率极低的长处。两种方法的结合,弥补了单一的静态测试或者动态测试的不足,为整数溢出故障的检测提供了精确、有效的方法。
有益效果
整数溢出故障的检测精确、有效,通过静态测试和动态测试相结合,弥补了单一的静态测试或者动态测试的不足;静态测试工具程序可以自动检测被测程序源代码中可能会发生整数溢出的整数的程序源代码语句,其漏报率低;蜕变测试测确认可能会发生整数溢出的整数的程序源代码语句中的整数是否会产生溢出故障,其误报率极低,使得本发明的整数溢出故障的检测精确、有效。
附图说明
图1本发明的基于蜕变关系的整数溢出故障测试方法原理图。
图2被测程序中整数变量的“定义-使用”模型示意图。
图3蜕变关系在“定义-使用”模型中的应用示意图
具体实施方式
为了阐明本发明的技术方案及技术目的,下面结合附图及具体实施方式对本发明做进一步的介绍。
实施方式
本发明的一种基于蜕变关系的整数溢出故障检测方法,包括以下步骤:
第一步,对被测程序源代码进行静态测试,把可能发生整数溢出的整数标识为整数溢出检查点。采用现有技术已有的静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点。。对被测程序源代码中引用整数的语句的检测和标定,采用现有的静态测试方法,利用现有技术已有的静态测试工具检测被测程序源代码中是否存在可能会发生整数溢出的语句,并将可能会发生整数溢出的语句标识为整数溢出检查点。现有技术中的静态测试方法存在误报率较高,因此需要进一步通过动态测试来检测这些整数溢出检查点是否一定会发生整数溢出,对于一定发生整数溢出的该整数标识为危险整数。
第二步,对整数溢出检查点采用“定义-使用”模型,如图2所示,把整数溢出造成被测程序安全故障的溢出整数标识为危险整数。所述“定义-使用”模型包含有会造成整数溢出故障的整数定义语句表和整数使用语句表。所述整数溢出检查点的整数若被上述“定义-使用”模型中的整数定义语句或整数使用语句所引用,则该整数标识为溢出整数,所述溢出整数若存在被整数危险使用语句表中的整数危险使用语句所引用,该整数溢出造成被测程序安全故障,则该溢出整数被标识为危险整数。
所述“定义-使用”模型包括可以造成整数溢出故障的整数定义语句表和整数使用语句表。构成整数定义语句表和整数使用语句表的整数定义语句和整数使用语句主要的类型,如表1所示:
表1
其中,整数定义语句表包括以下三种定义:
输入定义,通过包含输入终端输入或文件输入的外部输入改变内存储空间中整数变量的存储单元的存储值。这是在整数被引用中造成整数溢出的主要原因。根据输入方式的不同,外部输入又可以分为文件输入的整数、用户通过输入终。
赋值定义,通过赋值操作改变内存储空间中整数变量的存储单元的存储值;这种定义方式在程序设计中是一种常用的方式。
其它定义,除了以上两种能够改变整数变量存储单元值的方式外,还有其它一些方法,如,通过环境变量改变内存储空间中整数变量的存储单元的存储值。
根据整数变量被使用的用途,所述整数使用语句表包括以下几类:
谓词使用,谓词判断语句中引用到整数变量;这时当判断语句的左右两边的整数变量发生溢出时,判断语句则有可能发生改变,这时对程序后续的控制流会产生影响。
计算使用,计算语句中引用到整数变量;通常会对计算中引用的整数变量事先进行范围检查,但是计算结果通常容易发生整数溢出。
输出使用,被测程序输出为整数变量;这时当发生整数溢出时,则可能会输出非法数据。
定位使用,被测程序中的数组、指针索引引用整数变量定位数据在存储空间的位置;当该类整数变量发生溢出时,则会造成定位错误,进而造成后续的错误引用。
迭代使用,被测程序的迭代次数或者循环次数的计数器引用整数变量。
其它使用:例如程序中函数的参数引用也会涉及到整数变量。
“定义-使用”模型显示并不是每种整数使用都是危险的,即使所引用内存空间中的整数变量发生溢出,也并不是所有的使用都会造成安全故障。基于此,引入整数危险使用语句表,整数危险使用语句表由整数危险使用语句构成,整数危险使用语句表示对于内存空间中的整数变量发生溢出可能会造成安全故障。如表2所示,给出了构成整数危险使用语句表的主要的整数危险使用语句的类型。当被测程序中需要检测的整数变量出现表2中所述的整数危险使用语句所使用时,则把整数危险使用语句中的整数标识为危险整数,对于危险整数需要进一步确认其整数溢出是否会导致整数溢出故障的发生。
表2
第三步,采用蜕变测试方法检测危险整数是否会发生整数溢出故障。在被测程序引用所述危险整数的程序源代码语句被执行前采用蜕变测试方法检测所述危险整数是否会发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。
前述的第一步、第二步属于程序的静态测试,通过“定义-使用”模型可以减少需要验证的整数数量,但静态测试固有的问题是存在着一定数量的误报;另一方面,在被测程序运行过程中,若发生整数溢出时,并不能及时检测出溢出故障,这样就有可能导致进一步的安全事故。为了克服上述问题,在本发明中引入了蜕变测试法来对被测程序中已标识的危险整数进行进一步的检测,此种对被测程序的测试为动态测试。根据被测程序及需要做进一步测试的危险整数,构造蜕变关系集,如下所示,给出了两个用于检测危险整数是否发生溢出故障的蜕变关系:
其中x1和x2分别表示被测程序的危险整数的两次输入测试用例,P(x1)和P(x2)分别表示被测程序P相应的输出。当被测程序输入的测试用例满足蜕变关系的输入关系r时,被测程序P的输出就应该满足蜕变关系的输出关系rf。[P]表示被测程序P的程序函数。MR1表示:假设被测程序P正确实现其程序函数[P],则如果被测程序的两次输入的测试用例满足蜕变关系的输入关系r,则相应的输出应该蜕变关系的输出关系rf;如果相应的输出不满足蜕变关系的输出关系rf,则采用蜕变法测试的所述危险整数一定发生整数溢出。根据第二步的“定义-使用”模型可知,该整数被后续的整数使用语句引用,会发生整数溢出故障。
第一步、第二步静态测试的所标识的危险整数为x,由图2的整数变量的“定义-使用”模型可知,当整数变量被定义后,会存在多次使用,这时蜕变测试在被测程序源代码中插入的位置就直接关系着测试结果。如图3所示,给出了蜕变测试在“定义-使用”模型中的应用插入位置,即在哪个整数使用语句前进行危险整数的蜕变测试。由图3可见,蜕变测试可以采用程序插装方法插入在整数危险使用语句之前,在被测程序运行过程中一旦发生整数溢出,并且传播到危险使用语句之前,就可以通过蜕变测试动态检测到是否正在发生溢出。如果蜕变关系不满足,如图3中实线所示,这时就可以确定程序发生整数溢出故障。
为了详细、清晰说明本发明的方法的实施过程,使本领域的技术人员能更好地理解、实现本发明的上述技术方案,下面通过一个具体的程序实例进行说明。
实施例
如图1所示,给出了基于蜕变测试的整数溢出故障检测方法的流程图。为了详细、清晰说明本发明的实施过程,本例以程序OpenSSH3.3程序中的一段代码为例作为被测程序进行相关说明。该被测程序是SSH协议的免费开源实现,可以用来远程控制,或者在计算机之间传送文件。如果该被测程序发生整数溢出故障,则极有可能导致不安全的访问,因此在采用静态测试工具程序对被测程序源代码进行静态检测的基础上,需要在被测程序运行过程中进一步做动态检测其是否会发生整数溢出故障。
本例中的被测程序源代码段如下:
下面就针对被测程序的上述源代码段中的整数是否会发生整数溢出并造成安全故障的检测采用本发明的方法进行逐步说明。
第一步:采用现有技术已有的静态测试工具程序,如Flawfinder,也可以是Cqual,对上述被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点。上述被测程序源代码中被标识为整数溢出检查点的有nresp、response两个整数。
第二步,上述两个整数溢出检查点的整数中若存在“定义-使用”模型中的整数定义语句和整数使用语句所引用的整数,将该整数标识为溢出整数,所述溢出整数被整数危险使用语句表中的整数危险使用语句所引用,溢出整数的溢出造成被测程序安全故障,将该溢出整数标识为危险整数,此第二步骤具体包括以下两个子步骤。
首先,构造所述“定义-使用”模型,用于标识整数溢出检查点,确定“定义-使用”模型包含的整数定义语句和整数使用语句。根据表1给出的整数溢出相关的“定义-使用”模型中的整数定义语句和整数使用语句,可以得到被测代码段中的两个整数nresp和response的溢出检查点对应的定义语句和使用语句,如下表3所示。由于本例只选择其中的一段代码为例对本发明方法的实施过程进行描述,所以在该示例代码段中的变量response没有被使用。
表3
其次,由于危险整数的判定与整数危险使用相关,因此需要在表3中检查是否存在整数危险使用。根据表2中给出的整数危险使用语句类型,分析表3中给出的两个整数变量nresp和response是否存在整数危险使用,如表4的整数危险使用语句表所示。由表4可见,被测代码段存在的危险使用语句为“xmalloc(nresp*sizeof(char*))”。
表4
显然,该危险使用语句所引用的整数变量有两个:nresp和sizeof(char*)。其中sizeof(char*)通常为常量,因此nresp为危险整数。
再次,在引用所述危险整数的程度源代码语句被执行前,采用蜕变测试方法检测所述危险整数是否会发生整数溢出故障。所述蜕变测试,包括针对所述危险整数构造的用于检测整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。
为了确认表4中的整数危险使用在被测程序运行过程中是否会发生整数溢出故障。在被测代码段中的整数危险使用语句执行前,对其所引用的危险整数nresp进行蜕变测试,构建蜕变测试的蜕变关系MR1,如下面的代码所示,展示了对其中一个危险整数nresp进行蜕变测试。其它危险整数进行蜕变测试的蜕变关系构造方法同上,不再详细描述于此。
由上述蜕变测试代码可知,由于蜕变关系的输入需要多次输入,因此需要事先定义目标整数变量的前一个输入“previous_nresp=packet_get_int();”。然后再根据图3所示整数危险使用模型,在整数危险使用语句“response=xmalloc(nresp*sizeof(char*));”之前插入蜕变测试的蜕变关系。这样在被测程序运行过程中,就可以实时监测被测程序中危险整数的输入值(即测试用例)对应的被测程序的输出是否满足蜕变关系的输出关系rf,如果满足输出关系rf则被测程序继续执行,否则断定危险整数的两次定义值中至少存在一个值存在溢出,并且这种溢出会导致后续的安全故障。这样就可以在被测程序运行过程中及时准确的发现整数溢出故障。
本发明的一种基于蜕变关系的整数溢出故障检测方法,对于被测试程序在执行中发生整数溢出故障的测试与定位提供了一种简单有效的手段。首先,采用现有技术中已有的静态测试工具程序对被测程序源代码进行静态检测,初步确定被测程序源代码中可能会发生的整数溢出的整数变量,并将其标识为整数溢出检查点;然后,基于包含造成整数溢出故障相关的整数定义语句表和整数使用语句表的“定义-使用”模型来确定上述整数溢出检查点,并将整数定义语句和整数使用语句所引用的整数标识为溢出整数,溢出整数若存在整数危险使用语句表中表述的整数危险使用语句,则将其标识为危险整数;最后,在被测程序源代码引用所述危险整数的语句被执行前,采用蜕变测试法检测所述危险整数是否会发生整数溢出故障,在危险整数发生危险使用之前,确定程序当前运行是否会发生整数溢出故障。通过本发明的方法,即利用了静态测试工具程序可以自动化执行的优点以及其漏报率低的优势,又发挥了蜕变测试测试结果误报率极低的长处。两种方法的结合,弥补了单一的静态测试或者动态测试的不足,为整数溢出故障的检测提供了精确、有效的方法。和现有技术相比,本发明具有如下技术进步性。
整数溢出故障的检测精确、有效,通过静态测试和动态测试相结合,弥补了单一的静态测试或者动态测试的不足;静态测试工具程序可以自动检测被测程序源代码中可能会发生整数溢出的整数的程序源代码语句,其漏报率低;蜕变测试测确认可能发生整数溢出的整数的程序源代码语句中的整数是否会产生溢出故障,其误报率极低,使得本发明的整数溢出故障的检测精确、有效。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,本发明要求保护范围由所附的权利要求书、说明书及其等效物界定。

Claims (4)

1.一种基于蜕变关系的整数溢出故障检测方法,其特征在于,包括以下步骤:
步骤1采用静态测试工具对被测程序源代码进行静态检测,对被测程序源代码中引用的可能会发生整数溢出的整数的程序源代码语句标识为整数溢出检查点;
步骤2所述整数溢出检查点的整数若存在被“定义-使用”模型中的整数定义语句或整数使用语句所引用,则将其标识为溢出整数,所述“定义-使用”模型包含造成整数溢出故障的整数定义语句表和整数使用语句表;被整数危险使用语句表中的整数危险使用语句所引用的由于整数溢出造成被测程序安全故障的所述溢出整数标识为危险整数;
步骤3在引用所述危险整数的语句被执行前采用蜕变测试方法检测所述危险整数是否发生整数溢出故障;所述蜕变测试方法包括针对所述危险整数构造的用于检测危险整数溢出故障的蜕变关系集,对危险整数构造的满足蜕变关系集中的蜕变关系的输入关系r的测试用例,测试用例所对应的被测程序的输出若不满足蜕变关系的输出关系rf,则所述危险整数在后续使用语句的引用中发生整数溢出故障。
2.根据权利要求1所述的一种基于蜕变关系的整数溢出故障检测方法,其特征在于,
所述步骤2中的整数定义语句表包括:
输入定义,通过包含输入终端输入或文件输入的外部输入改变内存储空间中整数变量的存储单元的存储值;
赋值定义,通过赋值操作改变内存储空间中整数变量的存储单元的存储值;
其它定义,通过环境变量改变内存储空间中整数变量的存储单元的存储值;
所述步骤2中的整数使用语句表包括:
谓词使用,谓词判断语句中引用到整数变量;
计算使用,计算语句中引用到整数变量;
输出使用,被测程序输出为整数变量;
定位使用,被测程序中的数组、指针索引引用整数变量定位数据在存储空间的位置;
迭代使用,被测程序的迭代次数或者循环次数的计数器引用整数变量。
3.根据权利要求1所述的一种基于蜕变关系的整数溢出故障检测方法,其特征在于,所述步骤2中的整数危险使用语句表包括:
输出使用,程序输出为整数变量的整数数值;
定位使用,程序中的数组、指针索引、内存空间地址引用整数变量定位数据在存储空间的位置;
迭代使用,程序引用整数变量控制迭代次数或者循环次数。
4.根据权利要求1所述的一种基于蜕变关系的整数溢出故障检测方法,其特征在于,所述步骤3中的蜕变关系集包括两个用于检测危险整数溢出故障的蜕变关系MR1和MR2
MR 1 : { ( r , r f ) | ( r ( x 1 , x 2 ) = ( x 2 > x 1 ) ) → P ( x ) = [ P ] ( x ) ( r f ( P ( x 1 ) , P ( x 2 ) ) = ( P ( x 2 ) > P ( x 1 ) ) ) }
MR 2 : { ( r , r f ) | ( r ( x 1 , x 2 ) = ( x 2 < x 1 ) ) &RightArrow; P ( x ) = [ P ] ( x ) ( r f ( P ( x 1 ) , P ( x 2 ) ) = ( P ( x 2 ) < P ( x 1 ) ) ) }
其中x1和x2表示被测程序的危险整数的满足蜕变关系MR的输入关系r的两个测试用例,被测程序的输出若不满足蜕变关系MR的输出关系rf,则测试用例x1和x2所对应的被测程序的危险整数在被测程序的执行中会从内存储空间的存储单元中发生整数溢出,其被整数危险使用语句表中的整数危险使用语句在后续的引用中会发生整数溢出故障。
CN201510039364.5A 2015-01-26 2015-01-26 一种基于蜕变关系的整数溢出故障检测方法 Active CN104572470B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510039364.5A CN104572470B (zh) 2015-01-26 2015-01-26 一种基于蜕变关系的整数溢出故障检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510039364.5A CN104572470B (zh) 2015-01-26 2015-01-26 一种基于蜕变关系的整数溢出故障检测方法

Publications (2)

Publication Number Publication Date
CN104572470A true CN104572470A (zh) 2015-04-29
CN104572470B CN104572470B (zh) 2017-10-03

Family

ID=53088602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510039364.5A Active CN104572470B (zh) 2015-01-26 2015-01-26 一种基于蜕变关系的整数溢出故障检测方法

Country Status (1)

Country Link
CN (1) CN104572470B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918904A (zh) * 2019-03-07 2019-06-21 阿莫斯(北京)科技有限公司 一种以太坊数据处理方法、监测装置和存储介质
CN110096439A (zh) * 2019-04-26 2019-08-06 河海大学 一种面向solidity语言的测试用例生成方法
CN111124723A (zh) * 2019-11-04 2020-05-08 北京轩宇信息技术有限公司 基于干扰变量的中断驱动型程序整数溢出模型检测方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHANWEI HUI等: "Metamorphic Testing Integer Overflow Faults of Mission Critical Program: A Case Study", 《MATHEMATICAL PROBLEMS IN ENGINEERING》 *
姚奕: "面向整数错误检测的蜕变测试方法研究", 《计算机工程与科学》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918904A (zh) * 2019-03-07 2019-06-21 阿莫斯(北京)科技有限公司 一种以太坊数据处理方法、监测装置和存储介质
CN109918904B (zh) * 2019-03-07 2021-08-31 阿莫斯(北京)科技有限公司 一种以太坊数据处理方法、监测装置和存储介质
CN110096439A (zh) * 2019-04-26 2019-08-06 河海大学 一种面向solidity语言的测试用例生成方法
CN110096439B (zh) * 2019-04-26 2020-07-14 河海大学 一种面向solidity语言的测试用例生成方法
CN111124723A (zh) * 2019-11-04 2020-05-08 北京轩宇信息技术有限公司 基于干扰变量的中断驱动型程序整数溢出模型检测方法
CN111124723B (zh) * 2019-11-04 2023-04-14 北京轩宇信息技术有限公司 基于干扰变量的中断驱动型程序整数溢出模型检测方法

Also Published As

Publication number Publication date
CN104572470B (zh) 2017-10-03

Similar Documents

Publication Publication Date Title
Eisenberg A threshold based approach to technical debt
Bansal A Comparative study of software testing techniques
CN103530228A (zh) 一种基于模型的软件测试方法
CN112052172B (zh) 第三方通道的快速测试方法、装置和电子设备
CN103902451A (zh) 一种智能电能表软件品质评价方法
CN104572470A (zh) 一种基于蜕变关系的整数溢出故障检测方法
CN106444708A (zh) 基于历史工况数据的软件算法实时可靠性测试平台及方法
CN110059010B (zh) 基于动态符号执行与模糊测试的缓冲区溢出检测方法
US20070180411A1 (en) Method and apparatus for comparing semiconductor-related technical systems characterized by statistical data
Bishop et al. Combining testing and proof to gain high assurance in software: a case study
US9529042B2 (en) Device for and method of estimating error point in logic diagram
Wohlin et al. Reliability certification of software components
CN105577432A (zh) 一种基于关联分析的网络丢包概率预测方法
CN104268724A (zh) 一种业务流程测试方法及装置
CN110888809B (zh) 一种测试任务的风险预测方法及装置
Burnard et al. Verifying and validating automatically generated code
US10394688B2 (en) Method for detecting computer module testability problems
CN104461870A (zh) 记录测试结果的方法及装置
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
Heimdahl et al. NIMBUS: A tool for specification centered development
Chen et al. Application of Orthogonal Defect Classification for Software Reliability Analysis
Cardoso et al. Extending Attack-Fault Trees with Runtime Verification
CN110688298A (zh) 一种基于事件驱动的核电厂人机交互系统自动化测试装置
El-Kharashy et al. A novel assertions-based code coverage automatic cad tool
CN114253248B (zh) 自动测试验证核电站dcs控制系统的系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant