前言
第1章 软件缺陷与缺陷模式
1.1 软件缺陷的概念
1.2 软件缺陷的来源
1.3 软件缺陷的严重性和优先级
1.4 软件缺陷的发现、排除及效率
1.5 软件缺陷数据库
1.6 软件缺陷管理
1.7 软件缺陷预测
1.7.1 撒播模型
1.7.2 基于软件规模和复杂性的测量模型
1.7.3 基于白盒测试的覆盖率进行预测
1.7.4 基于软件研制的质量控制过程进行预测
1.7.5 基于测试时错误发生的时刻进行预测
1.8 软件缺陷预防
1.8.1 了解缺陷
1.8.2 缺陷查找技术
1.9 软件缺陷的对数正态分布
1.10 软件代码缺陷模式
1.11 C缺陷
1.12 基于缺陷模式的软件测试的意义
第2章 故障模式
2.1 Java故障模式
2.1.1 空指针使用
2.1.2 数组越界
2.1.3 资源泄漏
2.1.4 非法计算
2.1.5 死循环
2.1.6 并发
2.2 C/C++故障模式
2.2.1 内存泄漏
2.2.2 数组越界
2.2.3 使用未初始化变量
2.2.4 空指针使用
2.2.5 非法计算
2.2.6 死循环
2.2.7 悬挂指针
第3章 安全漏洞模式
3.1 Java安全漏洞模式
3.1.1 未验证的输入
3.1.2 滥用API
3.1.3 安全特性
3.1.4 竞争条件
3.1.5 不合理的异常处理
3.1.6 低质量代码
3.1.7 封装不当
3.2 C/C++安全漏洞模式
3.2.1 缓冲区溢出
3.2.2 被污染的数据
3.2.3 竞争条件
3.2.4 风险操作
第4章 疑问及规则模式
4.1 疑问模式
4.1.1 性能相关
4.1.2 冗余代码
4.1.3 不良代码
4.2 规则模式
4.2.1 声明定义类
4.2.2 版面书写类
4.2.3 分支控制类
4.2.4 指针使用类
4.2.5 跳转控制类
4.2.6 运算处理类
4.2.7 过程调用类
4.2.8 语句使用类
4.2.9 调用返回类
4.2.10 循环控制类
4.2.11 类型转换类
4.2.12 初始化类
4.2.13 比较判断类
4.2.14 名称、符号与变量使用类
第5章 基于缺陷模式的测试技术
5.1 基于缺陷模式的测试技术概述
5.1.1 发展概况
5.1.2 基于缺陷模式的软件测试指标分析
5.2 缺陷测试系统
5.2.1 缺陷测试系统的结构
5.2.2 缺陷测试系统的特点
5.3 缺陷测试系统的缺陷模式描述
5.4 缺陷测试系统的缺陷模式检测
5.4.1 抽象语法树分析
5.4.2 控制流分析
5.4.3 符号表构建
5.4.4 数据流分析
5.5 使用缺陷测试系统进行缺陷检测
第6章 区间运算技术
6.1 经典的区间代数
6.1.1 区间和区间运算
6.1.2 区间向量和区间函数
6.2 扩展的区间运算
6.2.1 数值型区间集代数
6.2.2 非数值型区间代数
6.2.3 条件表达式中的区间计算
6.2.4 基于区间运算的变量值范围分析
6.3 变量的相关性分析
6.3.1 变量间关联关系分类
6.3.2 符号分析
6.4 区间运算在程序分析中的应用
6.4.1 检测矛盾节点
6.4.2 检测不可达路径
6.4.3 提高缺陷检测效率
第7章 路径敏感分析技术
7.1 数据流分析
7.1.1 控制流图
7.1.2 数据流分析概述
7.1.3 四种典型的数据流问题
7.2 数据流分析的理论基础
7.2.1 格理论
7.2.2 不动点理论
7.2.3 数据流分析的最大和最小不动点解
7.2.4 数据流解的含义
7.3 基于数据流的缺陷检测
7.3.1 缺陷模式状态机实例
7.3.2 基于传统数据流的缺陷检测
7.4 路径敏感的缺陷检测技术
7.4.1 静态缺陷检测中的误报
7.4.2 路径信息抽象
7.4.3 路径敏感的缺陷检测算法
第8章 函数间分析技术
8.1 问题描述
8.1.1 函数约束对测试的影响
8.1.2 函数副作用对测试的影响
8.1.3 当前研究状况
8.2 函数约束信息
8.2.1 约束信息描述
8.2.2 约束信息在静态测试中的应用
8.2.3 实验环境及结果
8.3 函数后置信息
8.3.1 后置信息描述
8.3.2 生成算法
8.3.3 应用实例
8.3.4 实验结果
参考文献