首页 基于整型区间集的数组越界静态自动测试方法研究

基于整型区间集的数组越界静态自动测试方法研究

举报
开通vip

基于整型区间集的数组越界静态自动测试方法研究基于整型区间集的数组越界静态自动测试方法研究 基于整型区间集的数组越界静态自动测试 方法研究 第27卷第12期 2006年12月 小型微型计算机系统 M1N卜一M1CROSYSTEMS Vo1.27No.12 Dec.2006 基于整型区间集的数组越界静态自动测试方法研究 高传平,谈利群,宫云战.,张威. (北方交通大学计算所,北京100029) (装甲兵工程学院信息工程系,北京100072) E—mail:cpgzgy@yahoo.tom.cn 摘要:数组越界是软件中普遍存在的一种故障类...

基于整型区间集的数组越界静态自动测试方法研究
基于整型区间集的数组越界静态自动测试方法研究 基于整型区间集的数组越界静态自动测试 方法研究 第27卷第12期 2006年12月 小型微型计算机系统 M1N卜一M1CROSYSTEMS Vo1.27No.12 Dec.2006 基于整型区间集的数组越界静态自动测试方法研究 高传平,谈利群,宫云战.,张威. (北方交通大学计算所,北京100029) (装甲兵工程学院信息工程系,北京100072) E—mail:cpgzgy@yahoo.tom.cn 摘要:数组越界是软件中普遍存在的一种故障类型,并对软件安全造成了潜在的威胁.传统的故障检测使用程序插装的方 法,并相应的以编译优化技术来排除掉多余的数组边界检查.这种检测方法不仅降低了程序运行效率,增加了开销,而且往往不 能对故障进行彻底的测试,容易造成漏报.本文在对程序进行静态分析的基础上,通过引入区间概念,建立了整型区间集和数组 区问集,进而给出了数组越界的故障模型,模型的建立对软件故障进行了 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 .本文随后给出了故障检测算法,最后给出了实 验.结果表明这种方法比以往的测试方法具有更强的故障检测能力. 关键词:软件测试;整型区间集;静态分析;数组越界;语法树 中图分类号:TP302.8文献标识码:A文章编号:1000—1220(2006)12—2222—06 ResearchonStaticandAuto--TestingMethodforArrayBoundsBasedonIntegerRangeAg-— gregation GAOChuan—ping,TANLi—qun,GONGYun—zhan,ZHANGWei (Comput~gTechnologyLnstitute,NorthernTranortationLlniversity,BPijing100029,China) (DepartmentofInformationEngineering,AcademyofArmoredForceEngineering,Beijing100072,C hina) Abstract:Asakindoffaultsinprograms,theissueofoutofboundofarrays(OOB)threatenssoftwaresecur itypotentially. Conventionalfaulttestingusesthemethodofcodeinsertion,andeliminatestheredundantarrayboundch eckingwithoptimiza— tiontechniqueofcompilingtime.Thismethodnotonlyreducestheefficiencythatprogramsrun,butalsoi ncreasesthespend— ing.Furthermore,itcannottesttheprogramsthoroughlyandresultstomisssomefaultseasily.Onthebasis ofstaticanalysis ofprograms,thispaperintroducesthecorcoptofrangeandsetsupintegerandarrayrangecongregation.T henthepaperpre— sentsamodelofOOBfaults.Thismodelcanstandardizesthesoftwarefaults.Thepaperpresentsafaulttes tingalgorithmand givesexperimentresults.Experimentresultshowsthatthismethodhasstrongerandbetterfaulttestingab ilitythantheexist— ingmethods. Keywords:softwaretesting;integerrangecongregation;staticanalysis;outofboundofarrays;syntaxtre e 1引言 数组是C,C++等程序设计语言常见的一种数据类型, 它是若干同类变量的聚合,数组的特定元素通过下标(index) 进行访问.程序在运行中如果数组变量的下标超过了定义时 的大小,就可能导致程序出现异常,从而降低系统运行的可靠 性,这种错误通称为数组越界0OB(OutofBoundof Arrays).数组越界作为一种故障类型,在软件中普遍存在,并 对软件安全造成了影响.数组越界带来的后果主要有两种:一 是对数组的访问超越了边界,使程序运行结果错误,甚至导致 程序出现异常;二是对数组以外的区域进行操作,有可能引入 恶意代码,对软件安全造成了威胁. 目前对数组越界普遍采用的检测方法是进行程序插装, 即在程序中数组使用的地方加入逻辑断言或其它类型的语 句,以达到检测的目的.1977年,Suzuki与IshibataL1实现了 一 个软件测试系统,这个系统可以检测数组越界故障.其方法 是在每一个数组元素使用的地方加入逻辑断言,然后通过定 理证明技术验证数组越界故障的存在.这种测试方法应用起 来非常费时,并且只能适用于小的程序,因为对数组的每一次 使用都要相应的进行证明,因此这也增加了实现的难度.同时 由于断言的加入,降低了程序的执行效率.DavidLarocheIIe 等也运用程序插装技术实现了对c语言的静态测试,他们的 测试方法借助于静态测试工具LCIint予以实现.该方法将 一 种特殊定义的语义注释添加到程序源代码和 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 库中.为 了对数组边界进行检查,他们在数组声明或动态内存分配的 地方插入了相应的注释,指明数组下标的取值范围以及可使 用的内存区域,通过添加注释对变量的边界和范围进行了约 束,然后通过采用静态分析技术对程序进行了测试,并在可能 收稿日期:2005—09—12基金项目;总装备部十五预研基金项目(41315050107)资助.作者简介:高传平,男,1977年生,博士,研究方向为 软件测试及软件可靠性;谈利群,男,1957年生,高级工程师,研究方向为软件测试;宫云战,男,1961年生,博士,教授,博士生导师,研究方向为 容错计算技术和集成电路测试等}张威,男,1968年生,博士,副教授,研究方向为软件工程,软件测试等. 12期高传平等:基于整型区间集的数组越界静态自动测试方法研究2223 出现错误的地方给出了警告. 程序插装部分实现了对数组越界故障的测试,但是相应 的降低了程序运行效率,增加了开销,因此关于这方面的优化 技术也相继被提出.如:V.Markstein[,Asuru[,R.GuD— ta,Kolte_6等等,他们给出了多种数组越界故障检查的优 化技术.R.Gupta在他的文章[5]里提出了使用数据流分析技 术来优化数组越界检查,通过建立程序的最小控制流图 MCFG(MinimalControlFlowGraph),实现了边界故障检查 的优化.Kolte_6]与Wol[e给出了一个编译时优化算法,用于 减少由于数组下标检查而额外增加的程序运行时间.他们的 技术依赖于检查实现图(checkimplicationgraph),其中节点 为使用规范形式表述的范围检查,边表示两个节点之间的一 种暗示关系.通过在程序中加入五种类型的检查语句,实现了 数组越界的故障检查,并实现了Fortran编译器Nascent. 文献[73给出了一个按要求排除数组越界故障检查的算 法,这种算法建立在一种称为静态单赋值SSA(StaticSingle— Assignment)图的基础上,通过在SSA图上增加一些新边,完 成了对图的简单遍历.文章中指出这种方法能检测到Java程 序中存在的45的动态边界故障. 上述文献使用不同的研究方法实现了对数组越界故障的 测试,然而由于方法的局限性和故障本身的特殊性,使用以上 方法不可能对故障进行彻底的测试,往往存在漏报这种情况. 为了解决这一问题,本文在对故障进行分析的基础上,给出了 数组越界的故障模型,并在此基础上进行了测试方法的研究. 2故障定义 定义1.数组变量的状态可以表示为一个五元组: 73state<,73alue,type,uselen,alloc—len> 其中: ?73:vE(程序中所有变量的集合),表示变量名; ?73alue:变量值; ?type:type?丁(程序中所有类型的集合),表示变量对 应的类型; ?use—len:数组下标的值,表示数组变量使用时的长度, 反映数组下标的变化; ?alloc—len:数组定义时的长度; 由于数组越界是下标的越界,因此可以通过比较use—len 和alloc—len的大小来判断是否有越界故障发生.为了能有效 的描述问题,给出定义在以上变量的一些操作函数: access():对变量进行读,写,修改等操作; useLe(一):一一”5P—len,一?一(数组变量集合),得 到目前正在使用的数组变量下标大小; allocLen(一):一一n0f—len,返回数组变量定义时的 大小,即数组初始长度; 有了上面的定义,下面给出数组越界的形式化定义: 定义2.在程序P中任意一条语句s,?5丁(语句集)处, 如果存在数组变量一,Nx~数组变量一的操作access(一), 数组下标的大小不能超过定义时的长度范围,否则就会发生 数组越界错误F.可形式化描述为 VSi?5丁,?Aaccess(一)A(useLen(一)<0 VuseLen(一)?allocLen(一))=F”(1) 3区间分析 , 3.1区间概念 本文提出的软件测试是在静态分析的基础上进行的,由 于程序往往存在分支和循环等情况,有些值只有在程序动态 运行时才能确定下来,因此为了能反映变量的变化情况,本文 引入了区间概念.Harrison[明最早将区间的概念应用到对变 量的分析中,Wagner[则将区间的概念应用到缓冲区溢出的 故障检测中. 定义3.整型变量的值可以表示为一个区间r一上(表 示空区间),或者r一[,n],?n,这里z称为区间r的下 界,n称为区间r的上界. 定义4.对于任意两个区间r一a,6],rz—c,(f],如果 n?f且6?d,则称r1r2. 有了以上的概念,下面给出一个定理. 定理1.定义两个操作符min,max,分别表示区间尺的 最小值和最大值,即下界和上界.对于任意一个集合5,定义 集合的闭区间为:R:[rain(5),max(5)],则区间尺是为集 合5构成的最小闭区间,即对于包含集合5中的元素的任意 闭区间尺(5),都有尺尺(5). 证明略. 定理2.区间集合尺和集合包含关系组成一个序偶< 尺,>,如果给集合尺增加两个元素,上,T,其中上一丁, 一 [一..,+..],N<R,>构成一个格. 证明略. 由于本文讨论的问题主要涉及整形变量,因此本文的讨 论仅限于整形区间,令z表示整形数值集合,IR表示扩展的 整形区间集合,且IR—zU{一..,+..),如果整形变量在定义 时没有进行初始化操作,则默认区间为[一..,+o.].为了能有 效地追踪整型变量的变化情况,在这里定义一个映射函数 range:一,],其中73是一个整形变量.通过对程序进行 静态分析,完成对变量的区间分析. 3.2区间分析 定义5.给定任意两个区间r一a,6],rz—c,d],定义 区间上的+,一,*,/基本代数运算如下: r1+r2一[n+f,6+(f] r1-r2一a—d,b-f] r1*r2一[rain(n*f,*d,b*f,b*).max(n*f,口*d,b *f,b*(f)] r1/r2一 f[min(a/c,a/d.b/c.b/d),max(a/c,aid,b/c,b/d)]c?d<O <[min(a/c,a/d,b/c,b/d),max(a/c,a/d,b/c,b/d)]o<f?(f 一 ..,+..]f?o?d 在多分支路径的交汇点,整型变量的区间为各分支结束 2224小型微型计算机系统2006焦 点处变量区间的并集. 定义6.定义区间的U操作如下.给定两个区间r 6],r2一[c,],则: r1U上一上Ur1一r1 rU-V—TUr一T 定义1O.定义整型变量的区间映射集合(简称整型区间 ,集)IS一{<,r>l?V…rEIR},表示整型变量对应的区 间值集合. 譬如:<n,I-5,5]>表示变量n的值为5,<i,1-5,7]>表 r1Ur2—1-rain(n,C),max(6,d)] 本文为每一个整形变量定义了一个区间,由于变量在语 法中被看为表达式,另外在有些情况下也需要计算表达式的 值,因此应该相应的为表达式定义一个区间,这个区间反映表 达式的值. 定义7.定义表达式的区间,区间映射关系为range:ex- 户r—R,即表达式区间R—range(expr),其中ezpr表示表达 式.表达式的区间同样满足上述定义的所有区间运算性质. 在c/c++程序中的区间; exprRange(expr):计算表达式ezpr的区间,常数,变量 都可以看作表达式. getlndexExpr(v):得到数组变量目前的下标表达式. mergeRange(.r1,.r2,.r3,…,.rl,…,.r):区l司 融合,表示在程序分支交汇点处变量的区间,其中表示 变量在程序分支点处的区间,该函数返回分支交汇处变 量的区间,结果是各分支区间的并集. add(,S):将元素e添加到集合S中. changeStatus(P,e):将变量对应的状态由e改变为e, 主要指变量对应区间的变化. 1ookupVar,S):在集合S中查找变量,如果存在变量 ,则函数返回变量,否则返回?ULL. updateSet(S):更新集合S,完成对S的添加,更改操作, 返回值为修改后的集合S. isEmbody(r,r):区间r是否包含区间r,即是否rr, 如果包含则返回true,否则返回. statementType(s):判断语句的类型,返回值为语句类型,5 为表达式语句,语句类型包括:变量声明语句(DeclStmt),赋 值语句(AssignStmt)等等,语句类型可以声明为一个枚举变 量. exprType(e):判断表达式类型,可以为判断表达式(Test— Expr),二元表达式(BinaryExpr),索引表达式(IndexExpr) 等等. 下面给出整型区间集的构造规则,用integer统一表示整 数类型. 定义12.定义两个变量-rJ,,反映变量在语句使 用前后的区间变化. 定义13.整型区间集S的产生规则如下: 1.?IS; 2.V?ST,如果statementType(si)=一DeclStmt.且s 形如:integer;则add(<,--oo,+?]>,IS); 3.V5?ST,如果statementType(si)=一DeclStmt,且Si 形如:integer—P;则: (1)若P为常数C,则add(<,[c,c]>,IS); (2)若P为变量,如果lookupVar(e,IS)!一NULL,则 r一getRange(1ookupVar(P,IS)),add(<,r一>,IS),否 则add(<,[一oo,+o.]>,IS); (3)若e为表达式,则r一exprRange(P),add(<, >,IS); 4.Vs?ST,如果statementType(s)一一AssignStmt,且 形如:—e;为整型变量,则: 12期高传平等:基于整型区间集的数组越界静态自动测试方法研究2225 (1)若P为常数c,如果lookupVar(v,IS)!一NULL. 则changeStatus(<,tin>,<,C,c]>); (2)若P为变量,如果lookupVar(e,IS)!=NULL,则 r~=getRange(1ookupVar(e,IS)),changeStatus(<,r>, <,r?>); (3)若P为表达式,则r~.=exprRange(e),changeSta— tus(<,rI>.<,r础>); 5.V?ST,如果statementType(si)一=AssignStmt,且 s.形如:oe(o表示算术运算符,可以为+一,一一,*一或者 /=),则将该表达式转换为一e(如+一e可以表示为= +e,e一+e).转换后的变量的区间‰按照以上规则4 的第3条小规则进行处理,且changeStatus(<,>,<, >); 6.Vs.?S丁,如果e是5的部分表达式,exprType(P)一 = BinaryExpr,且e形如:++,,,++,一,则变量的 区间r按照定义8进行计算,changeStatus(<,‰>,<, r?>); 7.Vs?S丁,如果e是s的部分表达式,且exprType(P) 一一 TestEzpr,则变量的区间r按照定义9进行计算, changeStatus(<,r>,<,r?>); 8.Vs?S丁,如果s是条分支语句的交汇点,变量 在分支点i结束后的区间为.一,则在到达交汇点语句s时, r一mergeRange(.r1,.r2,.r3,…,.n.…,.),则 changeStatus(<,r>,<,tin>),r为到达语句之前的变 量区间;语句S结束后的变量区间rout按照以上规则产生. 定义13给出了整型区间集的8条构造规则,其中1,7 给出了变量区间集的构造,第8条规则处理多分支语句的情 况.虽然这8条规则还不足以处理程序中出现的各种情况,规 则还不够完善,但是在实际应用中却起到了很好的效果,发挥 了很好的作用. 5故障模型 定义l4.令表示数组变量集合,?表示非负整数集 合,定义一个二元组集合ADEF,集合表示为ADEF—一× ?一{<,>l?,?N),反映在程序中表示为每一个 数组变量映射一个长度,即数组定义时的长度,这个长度是一 个定量. 定义15.令,R表示整型区间集合,NV?v,?N,r ?IR,为每一个数组变量映射一个区间,则数组与映射区间 组成的序偶集合(简称为数组区间集)定义为: AS一(ADEFU)×IR一{<,,r>l<,>? ADEFU,r?IR). 如果<,>一,则<,r>表示整型区间r,简记为 r. 定义16.数组区间集AS的产生规则如下: 1.?AS; 2.Vs?S丁,如果statementType(5)=一DeclStmt,且si 形如:丁[?];(丁表示数组类型,是数组变量,?表示数组 长度)或其它类型的数组变量声明,声明时数组长度为?,则 add(<,N,[O,O]>,AS); 3.Vs,?ST,?,如果access().且e=getlndex— Expr(v),则: (1)若e为常数c,如果lookupVar(v,AS)!一?uLL, 则changeStatus(~v,N,tin>,<,N,c,c]>); (2)若e为变量,如果lookupVar(e,IS)!一LL,则 rout=getRange(1ookupVar(P,IS)),且changeStatus(<,N, r>,<,N,‰>); (3)若e为表达式,则r=exprRange(e),changeSta— tus(<,N,r>,<,N,r?>); 下面在数组区间集的基础上给出数组越界的故障模型. 定义2) 定义2的公式1通过比较use—len和alloc—len的大小来 判断是否存在数组越界故障,而定义17的公式2将use—len 表示为区间,通过进行区间包含判断来完成故障的检测. 图1通过一个例子,给出整型区间集和数组区间集的构 造过程,并给出了数组越界的故障检测. IS=;AS=; Stl:chars,str[5]; IS一;AS={<str,5.[O,O]>)(依据规则AS2); St2:inti一0; IS一{<i,[O,O]>)(依据规则IS3)IAS一{<str,5.[O,O] >); St3:intj一1; IS={<i,[O,O]>,<j,[1,1]>)(依据规则IS3);一{< str,5’[O,O]>); St4:scanf(c”,&s); IS一{<i,[O,O]>,<j,[1,1]>);AS一{<str,5,[O,O] >); St5:if(s一一\n){i一3;) IS一{<i.[3,3]>,<j,[1,1]>)(依据规则IS4);AS一 {<str,5,[O,O]>); St6:elsei一4; IS一{<i.[4,4]>,<j,[1,1]>)(依据规则IS4);AS一 {<str,5.[O,O]>); St7:str[i+j]一!; IS一{<i,[3,4]>,<j,[1,1]>)(依据规则IS8); AS={<str,5,[4,5]>)(依据规则AS3);F(对于数 组str,按照定义17) 图1故障模型应用的一个例子 图1中黑体字表示程序语句,语句上下方的文字反映了 区间集和AS的变化情况以及相应的故障检测过程.其中 依据是定义13和16的构造规则,如IS2表示依据为定义13 的第2条规则,AS3表示依据为定义16的第3条规则.由例 子可以看出在程序第7行语句中由于[4,5][O,4],故依据数 2226小型微型计算机系统2006钲 组越界的故障模型(定义17),可以判断此处存在故障. 6算法实现 本文的算法实现建立在程序的语法树和对应的控制流图 基础上,通过遍历程序的控制流图,实现故障检测.故障检测 实现过程为: 6.1构造程序的语法树 分析器读入源程序,经过预处理,词法分析,语法分析和 语义分析,产生与程序对应的语法树.语法树是程序的一种树 形表示,程序的相关信息都可以反映在语法树上. 6.2产生控制流图 控制流图反映了程序的控制结构,从语法树构造程序的 控制流图.程序的控制流图与语法树是相对应的,控制流图的 每一个节点对应语法树上的语句节点,从控制流图可以访问 语法树,同样的从语法树的语句节点也可以很方便的访问到 控制流图的相应节点. 6.3故障检测 执行程序的控制流图,并访问对应的语法树节点,通过遍 历节点及其子节点进行整型区间集和数组区间集的构建与更 新,并完成故障的检测. 故障检测算法如下: voidscanArray(){ //执行程序的控制流图 cfg-node—getFirstCNode(fct-body); //得到控制流图的第一个节点 while(node!=NULL) { tree—node=getTreeN0de(cfg—node); //得到与控制流图节点相对应的语法树节点 tree-node一>traverse(pre--action,aft--action); //访问语法树节点 if(isArrayExist(tree—node){ //存在数组使用 checkArray(tree—node);) //检查是否存在数组越界 node=scceed(cfg—node); //访问控制流图的下一节点 } voidCtreeNode::traverse(pre--action,aft-action){ ??遍历语法椭 if(!visited()){ preVisit(pre-action);) //执行节点访问前动作 if(!sDnsVisited()){//遍历子节点 deaIBack();//处理回溯 visitSons()://访问子节点 for(sons(1ist);list;++list){ list一>traverse(pre--action,aft_action);) //递归调用子节点 aftVisit(aftnaction);//节点访问后动作 ) voidcheckArray(CtreeNode*tree-node) { array--name—tree-node一>getArrayVar(); //得到数组变量 index=tree—node一>getIndexExpr(); //得到数组下标 range—getRange(index); //得到下标目前长度use—len temp--name=lookup(array-table,array--name); //在AS中查找变量 temp--name一>setRange(range); //重新设置数组变量区间,更新AS len=temp--name->dimension(): //得到数组变量定义的长度alloc-len if(isEmbody(range.1en)=一0) //判断是否越界 printError(tree—node,ARRAY—ERROR); //故障输出 ) 图2数组越界故障检测算法 故障检测算法在对语法树进行遍历时,采取了递归调用 的方法,并在遍历语法树的过程中完成整型区间集与数组区 间集的构造. 7实验 将以上提出的方法运用到实践中,进行了软件测试工具 OOBFTS的开发,并对一些软件进行了测试. 工程应用1: 首先对某军用软件进行了测试,被测软件大小为3. 41M,在一台P42.4G,内存256M的机器上进行分析,花费了 2分35秒的时间,测试结果检查出19个IP点,为了评估系统 的实用性,我们人工检查了系统检测出的故障,并最终确认发 现了8个故障.测试结果为: 表3一个软件的测试结果 其中精确度表示经人工复查后确认的故障数目占IP总 数的百分比,即:精确度=Defeets/IPs. 此后陆续对一些军用和民用软件进行了测试,测试结果 表明:与其它软件测试工具相比,OOBFTS需要较短的分析 时间.加上预处理花费的时间,一般的对一个十兆左右的软件 进行测试仅需要半个小时左右,与很多功能测试软件的动辄 几个小时甚至几天相比,大大缩短了测试周期. 工程应用2: Reasoning公司是美国一家知名的软件测试公司,其业 务主要是对软件进行静态测试.为了对比同类测试工具的性 表4不同工具的测试结果对比 能,我们对一个8万行左右的软件源程序进行了测试,并和 Reasoning公司的IQA测试工具的检测结果进行了对比,得 出对比结果如表4. 12期高传平等:基于整型区间集的数组越界静态自动测试方法研究2227 从上面的测试结果对比可以看出,我们的测试工具比 IQA发现了更多的检测点,并且经过人工验证后发现的错误 也要比IQA的多,因此部分解决了故障的漏报问题,同时相 比之下精确度也基本相当,因此从测试结果的角度讲,我们的 测试工具具有更强的故障检测能力. 8结束语 本文在对程序进行静态分析的基础上,通过引入区间的 概念,解决了由于多分支路径的存在导致变量值无法确定的 情况.在此基础上建立了整型区间集和数组区间集,并进而提 出了数组越界的故障模型,模型的建立为软件测试工作的展 开提供了理论依据.本文随后给出了故障检测的算法实现,并 给出了实验结果分析,结果表明依据本文提出的方法开发的 测试工具具有更强的故障检测能力,这也进一步说明本文建 立故障模型的方法是可取的,建立的故障模型是正确的.课题 研究下一步的工作是继续完善数组越界的故障模型,并进一 步提高软件测试的自动化水平. References: [1]SuzukiN,IshihataK.Implementationofanarrayboundcheck— er[C].In:ACMSymposiumPrinciplesofProgrammingLan— guages,1977;132—143. [2]LarochelleD,EvansD.Staticallydetectinglikelybufferover— flowvulnerabilities[J].In:ACMSIGPLAN—SIGACTConfer— enceonthePrinciplesofProgrammingLanguages(POPL), January2002.177—190. [3]MarksteinV,CokeJ.MarksteinP.Optimizationofrange checking[C].AcmSigplanSymposiumonCompilerConstruc— tton,June1982:114—119. [4]AsuruJM.Optimizationofarraysubscriptrangechecks[J]. ACMLettersonProgrammingLanguagesandSystems,1992,1 (2):1O9—118. [5]GuptaR.Afreshlookatoptimizingarrayboundchecking[C]. ProceedingsoftheACMSIGPLAN90ConferenceonProgram— ruingLanguageDesignandImplementation,NewYork.1990, (2O一22):272—282. [6]KolteP,WolfeM.Eliminationofredundantarraysubscript rangechecks[c].In:ACMSiglanNoticves—InternationalCon— ferenceonProgrammingLanguageDesignandImplementation, LaJolla,CA,USA,June1995:270—278. [7]BodikR,GuptaR,SarkarV.ABCD:eliminatingarraybounds checksondemand[c].In:ACMSigplanConferenceOilPro- grammingLanguageDesignandImplementation,Vancouver, Canada,June2000:321—333. [8]HarrisonWH.Compileranalysisofthevaluerangesforvari— ables[J].IEEETransactionsonSoftwareEngineering,1977,3 (3):243—250. [9]WagnerD,FosterJ,BrewerE.Afirststeptowardsautomated detectionofbufferoverrunvulnerabilities[c].In:Symposium onNetworkandDistributedSystemsSecurity,2000:3-17. [1O]HaoRui—bing,WuJian—ping,ChansonST.TUGEN;atoolfor automatictestsuitegeneration[J].JournalofSoftware,1994, 5(5):26—38. 附中文参考文献: [1O]郝瑞兵,吴建平,s.T.Chanson.测试集自动生成工具TUGEN 的设计与实现[J].软件学报,1994,5(5):26—38.
本文档为【基于整型区间集的数组越界静态自动测试方法研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:51KB
软件:Word
页数:0
分类:
上传时间:2018-03-24
浏览量:12