首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 156 毫秒
1.
数组越界的故障模型及其检测方法研究   总被引:1,自引:0,他引:1  
数组越界是C程序中的常见故障,该类故障可能造成系统的崩溃。首先针对常见的数组越界故障进行了分析,提出了检测数组越界的判定准则,建立了故障模型。根据该故障模型,采用程序控制流图和路径条件,并结合静态分析思想,给出了可有效地检测出程序中存在的数组越界故障的方法。最后通过实例分析了该方法的应用过程。  相似文献   

2.
Java语言中数组越界故障的静态测试研究   总被引:1,自引:0,他引:1       下载免费PDF全文
面向具体故障的软件测试技术是当今一个研究热点。数组越界是Java程序设计中的常见故障,该类故障极易导致计算结果错误或系统崩溃。针对Java语言中常见数组越界故障进行了分析,并从面向具体故障的测试思想出发,建立了Java语言中数组越界的故障模型,结合静态测试的特点,给出了一种静态查找此类故障的方法。此方法已实现,并已应用于面向故障的软件测试系统中。  相似文献   

3.
张仕金  尚赵伟 《计算机应用》2013,33(11):3257-3261
针对开源软件Cppcheck误报率和漏报率过高,且不能检测出运行时程序缺陷等问题,基于Cppcheck程序,提出了抽象区间集算法,并将其应用于数组边界缺陷检测。在Cppcheck框架内,通过引入区间集概念,建立每个程序点变量和表达式的整型区间集和数组区间集,并由此定位出程序中的矛盾点,最终检测出程序缺陷。与Cppcheck相比较,所提算法的查准率提高18.5%,漏报率降低22.5%,误报率提高3.5%。实验结果表明,该方法能有效地检测出运行程序缺陷,并提高Cppcheck缺陷检测性能。  相似文献   

4.
缓存区溢出能引起非常严重的安全问题,对网络和分布式系统(如机群,网格,P2P系统等)构成严重威胁。数组越界在缓存区溢出中占据重要位置,如何检测数组越界错误是一个重要且极具意义的课题。针对该课题,给出一种对C语言数组越界进行运行时验证的方法。分析了数组越界的错误类型,根据这些类型分别研究了数组越界的运行时验证的思想;设计了基于程序插桩进行数组越界动态检测的算法,给出了该方法基于开源编译器Clang的具体实现;用实验证明了该方法是切实可行并且有效的。  相似文献   

5.
软件测试分为静态测试和动态测试,而数组越界是静态测试中最常见的问题之一,并且其带来的危害巨大,甚至导致软件系统崩溃。根据数组越界的现象及特点,详细描述了数组越界的定义和种类,给出了数组越界产生的条件及防范技巧,并对检测方法及工具进行比较分析,从而更好地实现软件测试。  相似文献   

6.
高凤娟  王豫 《软件学报》2020,31(10):2983-3003
随着移动计算、物联网、云计算、人工智能等领域的飞速发展,也涌现出了很多新的编程语言和编译器,但是C/C++语言依旧是最受欢迎的编程语言之一,而数组是C语言最重要的数据结构之一.当在程序中通过数组下标访问数组元素时,必须确保该下标在该数组的边界之内,否则就会导致数组越界.程序中的数组越界缺陷会使得程序在运行时导致系统崩溃,甚至使攻击者可以截取控制流以执行任意恶意代码.当前针对数组越界的静态检查方法无法达到高精度的分析,尤其是无法处理复杂约束和表达式,过多的误报额外增加了开发者的负担.因此,提出了一种基于污点分析的数组越界的静态检测方法.首先,提出流敏感、上下文敏感的按需指针分析方法,实现数组长度区间分析.然后,提出按需污点分析方法,实现数组下标和数组长度污染情况的计算.最后,定义数组越界缺陷判定规则,提出使用后向数据流分析方法,检测数组下标是否越界.在进行数组越界检测的过程中,为了处理程序中的复杂约束和表达式,在分析过程中将调用约束求解器来判断约束的可满足性.如果没有发现相应的语句,则报告数组越界缺陷警报.同时,实现了自动静态分析工具Carraybound,并通过实验展示了方法的有效性.  相似文献   

7.
数组越界的静态测试分析   总被引:4,自引:0,他引:4  
给出了一种静态分析方法,静态分析的主要优点就是在程序运行之前就可以对程序故障进行定位。文章首先针对数组越界错误类型进行了分析,介绍了软件测试的一些基本概念,给出了这类错误的静态分析方法,并给出了相应的算法,而后给出了测试系统设计和开发,最后给出了软件测试的实验结果和分析。  相似文献   

8.
针对C/C 程序中的非法计算,形式化定义了非法计算故障;建立了表达式区间运算模型、变量取值区间集产生模型和非法计算故障模型,并将其作为静态识别非法计算的基础;提出了非法计算自动测试算法.实验结果表明,文中方法具有较高的故障检测准确率和测试效率.  相似文献   

9.
Java 2数组容量扩充的通用方法   总被引:1,自引:2,他引:1  
在Java中,数组创建以后,不能进行越界访问。本文利用Java2提供的数组反射功能,建立了一个扩展数组容量的通用方法,希望能对大家在使用Java2的数组时有所帮助。  相似文献   

10.
本文介绍了数组越界问题的解决方法,并给出了相应的程序和出错时的处理方法。  相似文献   

11.
传统的软件错误定位技术通常利用测试覆盖信息计算程序语句发生错误的可疑度进行软件错误定位,但是这种定位技术没有充分考虑程序本身固有的依赖信息,缺乏语句筛选,从而使错误定位的精度受限.提出了一种基于层次切片谱的错误定位技术,以提高面向对象程序中的错误定位效率.这种技术首先分析程序不同粒度层次元素(包、类、方法以及语句)之间的依赖信息,对可能发生错误的元素进行筛选,缩小错误查找范围;在此基础上,建立了层次切片谱模型,并定义了一种可疑度度量方法;最后根据该可疑度结果从大到小的顺序进行错误定位.通过实验验证了基于层次切片谱的错误定位技术的有效性,且比基于程序谱的Tarantula 技术、Union 技术、Intersection 技术效率更高.  相似文献   

12.
在软件研制过程中,缺陷定位是一个重要的研究课题。但是,实际软件中的缺陷数量无法被预先判定,且已有的单缺陷定位方法不易使用,已有的多缺陷定位方法存在定位效率不高的问题。基于此,文中对多缺陷定位方法GAMFL进行了研究和改进,提出了基于频谱信息并结合碰集和遗传算法的缺陷定位方法GAHIT。该方法定义了定位基本块,并用其替代语句进行缺陷定位,缩小了搜索范围;在初始种群的构造过程中,提出了采用求解失败用例执行路径碰集的方法,优化了初始种群的生成,并给出了新的适应度函数的计算方法,提高了算法的整体执行效率;最后针对遗传算法的结果,给出了缺陷检查策略,提高了在最优种群中查找缺陷的准确性。实验结果表明,所提方法能够有效处理缺陷数量未知情况下的定位问题,在单缺陷和多缺陷程序中都有较好的定位效果。  相似文献   

13.
软件测试是排除软件故障,提高软件质量和可靠性的重要手段。基于故障模型的软件测试是软件编码阶段的主流测试方法之一。基于故障模型的代码静态测试技术具有测试效率高、对逻辑复杂故障测试效果好等特点。鉴于此,本文采取一种特殊的静态分析技术来实现对代码的测试。首先讨论传统软件测试方法的缺点和局限性,给出基于故障模型的静态测试方法的优越性;然后在分析过程中,综合应用抽象语法树和控制流图,提出一种基于故障模型的软件测试方法。依据该算法开发自动化测试工具,给出实验结果和对比分析,并指出下一步的研究方向。  相似文献   

14.
基于EAI和AOP的软件安全测试及应用研究   总被引:1,自引:0,他引:1  
提高软件安全测试方法的易操作性和可复用性在软件工程中具有重要的研究意义.研究了一种用于测试软件安全的基于EAI模型(Environment Application Interaction Model)的软件错误注入测试方法,提出了基于面向方面编程(AOP)实现软件错误注入的安全测试模型(AOEAI)及其实现方法.对应用软件进行了实际测试,实验结果表明,该方法不仅是有效的,而且具有易操作性和可复用性强的特点.  相似文献   

15.
故障注入技术在BIT软件测试中是一种有效的手段。针对电路板级BIT软件测试中遇到的问题,介绍了一种基于开源模拟器QEMU实现的处理器类故障模拟方法。采用该方法对多种处理器故障进行仿真建模,通过对QEMU的扩展开发,加入故障行为模拟模块和故障注入模块,以实现一个具有处理器类故障注入功能的系统级模拟器BitVaSim。首先分析处理器功能故障模式,提取故障的关键字值对,用XML Schema定义故障并用于故障建模;其次对QEMU代码进行二次开发以实现对处理器故障行为的模拟;然后通过配置故障注入接口实现模拟器运行时的故障模式匹配、故障按条件触发等功能;最后通过实验案例来观察模拟器的故障表现,评价这种基于模拟器的故障注入技术。实验过程和结果显示这种方法是有效可行的。  相似文献   

16.
提出了一种使用网络层错误注入技术的修改版本对基于SOAP的Web服务进行可靠性测试的方法.通过将有意义的错误注入SOAP消息来测试Web服务交换的可靠性.本文还在分析Web服务错误模型的基础上给出了测试模型和测试工具框架.  相似文献   

17.
Comparing the Effectiveness of Software Testing Strategies   总被引:1,自引:0,他引:1  
This study applies an experimentation methodology to compare three state-of-the-practice software testing techniques: a) code reading by stepwise abstraction, b) functional testing using equivalence partitioning and boundary value analysis, and c) structural testing using 100 percent statement coverage criteria. The study compares the strategies in three aspects of software testing: fault detection effectiveness, fault detection cost, and classes of faults detected. Thirty-two professional programmers and 42 advanced students applied the three techniques to four unit-sized programs in a fractional factorial experimental design. The major results of this study are the following. 1) With the professional programmers, code reading detected more software faults and had a higher fault detection rate than did functional or structural testing, while functional testing detected more faults than did structural testing, but functional and structural testing were not different in fault detection rate. 2) In one advanced student subject group, code reading and functional testing were not different in faults found, but were both superior to structural testing, while in the other advanced student subject group there was no difference among the techniques. 3) With the advanced student subjects, the three techniques were not different in fault detection rate. 4) Number of faults observed, fault detection rate, and total effort in detection depended on the type of software tested. 5) Code reading detected more interface faults than did the other methods. 6) Functional testing detected more control faults than did the other methods.  相似文献   

18.
需求规范错误是软件设计错误的一大类。该文提出了一个软件需求的形式化转换模型,用来将软件需求分析直接、自动地转换为形式化描述,为需求验证提供帮助,避免软件在需求规范上可能产生的错误。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司    京ICP备09084417号-23

京公网安备 11010802026262号