软件测试与可靠性评估

软件测试与可靠性评估

论文摘要

软件测试是保证和提高软件质量的重要工作,软件可靠性是评价软件质量的重要指标。本文首先综述了软件测试方法、软件测试工具及软件可靠性评估模型。为提高软件测试的效果,减少软件测试的盲目性,本文对导致程序出错的部分原因进行了分析,在此基础上建立了软件故障模型,针对建立的故障模型的特点,讨论了故障检测方法及故障检测规则,并在开放源码的编译器orc上实现了部分软件故障的检测;软件可靠性的预测和估计是软件工程所关注的内容之一,要对软件可靠性进行评价,需要根据软件测试的结果,根据测试过程中所得到的测试数据对其进行评价,本文对利用贝叶斯方法进行软件可靠性估计的方法进行了讨论。 本文的创新点和主要贡献在于以下几个方面: 一、软件故障模型的创建。在大量工程软件测试数据的基础上,提出了有工程背景的多种故障模型,包括动态内存故障模型,变量的定值与引用故障模型等。其中动态内存故障模型对可能导致系统老化、系统死机的各种情况进行了分析,为故障的检测、故障的排除提供了依据。同时,用模型指导软件测试工作,可以有效的降低软件测试的盲目性,提高软件测试的可信性。 二、提出了面向故障检测的静态数据流分析方法。静态数据流分析的优点在于通过对程序进行静态分析,可以对程序中的多路径上的数据流状态进行模拟,克服了一次动态运行只能覆盖一条程序路径的缺点,有效的提高数据流分析的效率。通过对以基本块为最小划分单元的程序控制结构中到达各基本块的各种变量的定值信息的计算,可以获得到达程序中每个节点的数据流状态。由于程序结构的复杂性使得到达程序中某一点的路径是不唯一的,这种不唯一性造成了到达某一基本块的定值信息只在程序的某些路径上存在,由此我们提出了将到达某一节点的定值信息划分为MUST和MAY两个类别,从而提高了数据流分析的准确性。 三、基于贝叶斯方法的软件可靠性评估方法。该方法以贝叶斯统计理论为依据,在对随机测试过程分析的基础上建立了基于输入域的测试过程的形式化描述,在此基础上确定了测试分布的总体信息;按照贝叶斯理论,要对软件可靠性进行估计,需要定义软件可靠性的先验分布,该先验分布可以利用贝叶斯假设或共轭原理进行定义。分析发现,在软件顺序测试过程中,采用这两种策略所得到的先验分布是一致的,这从另一种角度印证了先验分布选取的正确性。根据贝叶斯定理,利用先验分布和总体分布,可以得到待估计变量的后验分布,然后根据测试数据可以对可靠性进行估计。

论文目录

  • 声明
  • 论文版权使用授权书
  • 摘要
  • Abstarct
  • 第一章 绪论
  • 1.1 问题的提出
  • 1.2 本领域的发展历史及研究现状
  • 1.2.1 软件测试的发展与现状
  • 1.2.2 软件可靠性研究的发展及现状
  • 1.3 本文的主要工作
  • 1.3.1 软件故障模型的研究
  • 1.3.2 软件故障检测中数据流分析方法的研究
  • 1.3.3 针对程序本身的特点,对影响故障检测效果的各种因素进行分析
  • 1.3.4 软件可靠性评估方法的研究
  • 1.4 本文的组织方式
  • 第二章 软件测试与可靠性概述
  • 2.1 软件测试
  • 2.1.1 什么是软件测试
  • 2.1.2 软件测试方法
  • 2.1.3 软件测试自动化技术
  • 2.2 软件可靠性
  • 2.2.1 基本概念
  • 2.2.1.1 软件可靠性
  • 2.2.1.2 软件失效机理
  • 2.2.2 软件可靠性评估模型
  • 2.2.2.1 影响软件可靠性的原因分析
  • 2.2.2.2 传统可靠性模型
  • 2.2.2.3 可靠性模型的假设及其局限性
  • 2.3 本章小结
  • 第三章 软件故障模型
  • 3.1 动态内存故障分析
  • 3.2 描述动态内存故障的有限自动机
  • 3.2.1 有限自动机中状态集合的定义
  • 3.2.2 有限自动机中输入集合的确定
  • 3.2.3 有限自动机中初始状态和终结状态的定义
  • 3.2.4 有限自动机中状态转换关系的确定
  • 3.2.5 动态内存故障
  • 3.3 变量的定值与引用故障模型
  • 3.3.1 变量的定值与引用操作分析
  • 3.3.2 变量的定值与引用故障
  • 3.4 本章小结
  • 第四章 面向故障的软件测试
  • 4.1 面向故障检测的静态数据流分析
  • 4.2 数据流分析的基础
  • 4.2.1 到达一定值数据流分析
  • 4.2.2 活跃变量数据流分析
  • 4.3 数据流分析的方法
  • 4.3.1 到达一定值数据流分析方法
  • 4.3.2 到达一定值数据流分析算法的复杂性分析
  • 4.3.3 活跃变量数据流分析方法
  • 4.4 面向动态内存管理故障检测的到达定值数据流分析
  • 4.4.1 基本块类型的划分及各类基本块中GEN[B]和KILL[B]集合的计算
  • 4.4.2 过程间的数据流分析
  • 4.4.3 集合间的关系
  • 4.4.4 基于PCG的过程间数据数据流分析
  • 4.4.5 算法的时间复杂性
  • 4.5 故障诊断规则
  • UD链和MAYUD链'>4.5.1 UD链、MUSTUD链和MAYUD链
  • DU链和MAYDU链'>4.5.2 DU链、MUSTDU链和MAYDU链
  • 4.5.3 软件错误检测规则
  • 4.5.3.1 变量未定值引用故障的检测
  • 4.5.3.2 变量的无用定值故障的检测
  • 4.5.3.3 动态内存未分配引用故障的检测
  • 4.5.3.4 动态内存泄漏故障的检测
  • 4.6 实例分析
  • 4.6.1 用数据流分析计算到达各基本块的定值信息
  • 4.6.2 故障检测的应用
  • 4.7 本章小结
  • TEST'>第五章 软件故障静态检测软件CTEST
  • 5.1 基于编译的软件故障检测基础
  • 5.2 基于编译的软件故障检测工具软件的开发
  • 5.3 基于编译的软件故障检测的特色
  • 5.4 测试实例及实验数据分析
  • 5.4.1 测试实例
  • 5.4.2 测试结果分析
  • 5.5 本章小结
  • 第六章 影响故障检测效果的因素分析
  • 6.1 重复代码
  • 6.1.1 代码重复的几种表现形式
  • 6.1.1.1 完全重复
  • 6.1.1.2 部分代码的修改
  • 6.1.1.3 通过插入/删除部分语句实现部分代码的重复
  • 6.1.2 重复代码检测
  • 6 1.2.1 与执行无关的信息的处理
  • 6.1.2.2 代码行的标准化
  • 6.1.2.3 程序语句的比较
  • 6 1.2.4 完全重复代码段的检测
  • 6.1.2.5 代码段与集合之间的映射
  • 6.1.2.6 最长重复代码段的确定
  • 6.2 别名关系及别名分析
  • 6.2.1 别名关系的表示
  • 6.2.1.1 别名对和指向表示法
  • 6.2.1.2 扩展的指向表示
  • 6.2.1.3 指针指向的内存空间的表示
  • 6.2.2 流敏感的过程内的别名关系静态分析
  • 6.2.2.1 一组假设及缩写
  • 6.2.2.2 别名分析基础
  • A[N]集合'>6.2.2.3 GENA[N]集合
  • A[N〕集合'>6.2.2.4 KILLA[N〕集合
  • 6.2.3 别名分析数据流方程
  • REACHINA[N]集合'>6.2.3.1 MUSREACHINA[N]集合
  • REACHINA[N]集合'>6.2.3.2 MAYREACHINA[N]集合
  • REACHOUTA[N]'>6.2.3.3 MUSTREACHOUTA[N]
  • REACHOUTA[IN]'>6.2.3.4 MAYREACHOUTA[IN]
  • 6.2.4 指向关系分析
  • 6.2.4.1 算法分析
  • 6.2.4.2 算法收敛性证明
  • 6.2.4.3 算法的时间复杂性
  • 6.3 无用代码及其检测
  • 6.3.1 无用代码的几种形式
  • 6.3.2 无用代码检测的几种方法
  • 6.3.3 到达一定值数据流分析过程中的常数传播
  • 6.3.4 无用代码的检测
  • 6.3.4.1 无效程序变量、函数参数的检测
  • 6.3.4.2 无用赋值的检测
  • 6.3.4.3 无效分支的检测
  • 6.4 本章小结
  • 第七章 基于贝叶斯方法的可靠性评估
  • 7.1 贝叶斯统计推断理论
  • 7.2 贝叶斯统计推断理论在软件可靠性评估中的应用
  • 7.3 基于贝叶斯统计推断的可靠性评估方法
  • 7.3.1 随机测试过程的形式化表示
  • 7.3.1.1 软件的数学描述
  • 7.3.1.2 随机测试过程的形式化表示
  • 7.3.2 用贝叶斯方法进行程序正确性估计
  • 7.3.2.1 基于贝叶斯假设的先验分布的密度函数
  • 7.3.2.2 基于共轭原理的先验分布的确定
  • 7.3.2.3 基于最大信息熵的R的先验分布中参数的确定
  • 7.3.2.4 基于贝叶斯方法的随机变量 R的后验分布
  • 7.3.2.5 基于后验分布的正确性区间的可信度
  • 7.3.2.6 基于可信度的程序正确性区间的确定
  • 7.3.3 基于运行剖面的可靠性估计
  • 7.3.3.1 基于运行剖面的集合的划分
  • 7.3.3.2 利用程序在子集上的正确性进行可靠性评估
  • 7.3.3.3 基于软件可信性的可靠性估计
  • 7.4 本章小结
  • 第八章 结束语
  • 8.1 本文的主要工作与创新
  • 8.2 今后的工作
  • 参考文献
  • 致谢
  • 作者简历
  • 相关论文文献

    标签:;  ;  ;  ;  ;  

    软件测试与可靠性评估
    下载Doc文档

    猜你喜欢