第1章 软件质量 1
1.1 软件质量的概念 1
1.2 软件质量模型 2
1.2.1 McCall质量模型 2
1.2.2 Boehm质量模型 4
1.2.3 ISO/IEC 9126质量模型 5
1.2.4 Perry模型 6
本章小结 7
本章习题 7
第2章 软件质量保证概要 8
2.1 软件质量保证 8
2.1.1 软件质量保证定义 9
2.1.2 软件质量保证内容 9
2.1.3 软件质量保证要素 10
2.1.4 软件质量保证计划 10
2.1.5 软件质量保证素质 11
2.1.6 软件质量保证的组织结构 11
2.1.7 软件质量保证的岗位职责 12
2.2 软件质量控制 12
2.2.1 软件质量控制的基本概念 12
2.2.2 软件质量控制的基本方法 14
2.3 软件质量保证目标和任务 15
2.3.1 软件质量保证的目标 15
2.3.2 软件质量保证的任务 17
2.4 软件质量保证活动 19
2.5 全面软件质量管理 20
2.5.1 全面软件质量管理定义 20
2.5.2 全面软件质量管理四个要素 21
2.5.3 全面软件质量管理三个原则 21
2.5.4 全面软件质量管理方法 22
2.5.5 全面软件质量控制模型 25
2.5.6 全面软件质量控制技术 27
2.6 软件质量管理体系结构 30
2.6.1 CMM/CMMI 31
2.6.2 ISO 9000 34
本章小结 35
本章习题 35
第3章 软件质量保证过程 36
3.1 计划阶段 36
3.2 需求分析阶段 38
3.3 设计阶段 40
3.4 编码阶段 41
3.5 测试阶段 45
3.6 系统交付和安装阶段 47
本章小结 48
本章习题 48
第4章 软件测试基础 49
4.1 软件测试的概念 49
4.1.1 软件缺陷 49
4.1.2 验证和确认 53
4.1.3 软件测试的定义 54
4.1.4 软件测试的目的 55
4.1.5 测试用例 56
4.2 软件测试的分类 57
4.2.1 按技术分类 57
4.2.2 按测试方式分类 57
4.2.3 按测试阶段分类 58
4.2.4 按测试内容分类 59
4.3 软件测试的误区 60
4.4 软件测试的原则 61
本章小结 62
本章习题 62
第5章 软件测试过程 63
5.1 常见测试过程模型 63
5.1.1 V模型 63
5.1.2 W模型 64
5.1.3 H模型 65
5.1.4 X模型 65
5.1.5 前置模型 66
5.1.6 测试模型总结 69
5.2 基本测试过程 70
5.2.1 测试计划和控制 71
5.2.2 测试分析和设计 75
5.2.3 测试实现和执行 75
5.2.4 测试评估和报告 77
本章小结 77
本章习题 78
第6章 静态测试 79
6.1 静态测试概述 79
6.1.1 为什么要进行静态测试 80
6.1.2 静态测试的重要性 81
6.2 评审 82
6.2.1 评审成功的因素及基本术语 83
6.2.2 评审的分类 83
6.2.3 非正式评审 84
6.2.4 正式评审及其基本过程 85
6.3 技术评审 86
6.3.1 技术评审的目的和内容 86
6.3.2 技术评审团队 86
6.3.3 技术评审会议 87
6.4 审查 87
6.4.1 审查的目的和内容 87
6.4.2 审查团队 88
6.4.3 审查的前提条件 88
6.4.4 审查会议过程 89
6.4.5 审查输出 91
6.4.6 数据收集 92
6.4.7 审查的注意事项 92
6.5 代码审查 93
6.5.1 代码审查的测试内容及组成 93
6.5.2 代码审查的步骤 93
6.5.3 代码审查单 93
6.5.4 阅读的方法 94
6.6 走查 95
6.6.1 走查的目的和内容 95
6.6.2 走查团队 95
6.6.3 走查会议 96
6.6.4 走查与审查 96
6.7 静态分析 97
6.7.1 数据流分析 97
6.7.2 控制流分析 99
本章小结 103
本章习题 104
第7章 动态测试——测试用例设计技术 105
7.1 白盒测试用例设计技术 105
7.1.1 逻辑覆盖 106
7.1.2 逻辑覆盖准则 112
7.1.3 路径测试 114
7.1.4 其他白盒测试技术 120
7.1.5 白盒测试技术讨论 122
7.2 黑盒测试用例设计技术 123
7.2.1 等价类划分 124
7.2.2 边界值分析 132
7.2.3 决策表 135
7.2.4 因果图 139
7.2.5 状态转换测试 142
7.2.6 其他黑盒测试技术 144
7.2.7 黑盒测试技术讨论 145
本章小结 146
本章习题 146
第8章 各级别的测试 149
8.1 单元测试 149
8.1.1 单元测试的概念 149
8.1.2 单元测试的目的 150
8.1.3 单元测试的内容 150
8.1.4 单元测试的原则 152
8.1.5 单元测试的策略 153
8.1.6 单元测试停止的条件 153
8.2 集成测试 154
8.2.1 集成测试的概念 154
8.2.2 集成测试的必要性 154
8.2.3 集成测试的内容 155
8.2.4 集成测试的原则 155
8.2.5 集成测试策略 156
8.2.6 集成测试的停止条件 159
8.2.7 集成测试与单元测试的区别 160
8.3 确认测试 160
8.4 系统测试 160
8.4.1 系统测试的定义 160
8.4.2 系统测试的类型 161
8.4.3 系统测试的停止条件 163
8.4.4 系统测试与单元测试、集成测试的区别 163
8.5 验收测试 163
8.5.1 验收测试的概念 163
8.5.2 Alpha测试 164
8.5.3 Beta测试 164
8.6 回归测试 165
8.6.1 回归测试前提 165
8.6.2 回归测试基本过程 166
8.6.3 回归测试用例的选择 167
8.6.4 回归测试与一般测试的比较 167
本章小结 168
本章习题 168
第9章 面向对象的软件测试 169
9.1 面向对象测试基础 169
9.1.1 面向对象测试层次 169
9.1.2 面向对象测试顺序 170
9.1.3 面向对象测试用例 170
9.2 面向对象测试模型 170
9.2.1 面向对象分析的测试 171
9.2.2 面向对象设计的测试 173
9.2.3 面向对象编程的测试 174
9.3 面向对象的单元测试 175
9.3.1 单元的定义 175
9.3.2 以方法为单元 177
9.3.3 以类为单元 178
9.3.4 面向对象单元测试的特殊性 179
9.4 面向对象的集成测试 180
9.4.1 面向对象集成测试基础 180
9.4.2 基于UML集成测试参考模型 182
9.5 面向对象的系统测试 183
本章小结 184
本章习题 184
第10章 软件缺陷管理和测试评估 185
10.1 软件缺陷概述 185
10.1.1 软件缺陷的类型 185
10.1.2 软件缺陷的等级及优先级 186
10.1.3 软件缺陷生命周期 187
10.2 软件缺陷相关信息 188
10.2.1 完整软件缺陷信息 188
10.2.2 软件缺陷记录 190
10.3 软件缺陷跟踪和分析 191
10.3.1 软件缺陷的处理 192
10.3.2 软件缺陷的分析 192
10.3.3 软件缺陷的跟踪 194
10.4 软件测试评估 195
10.4.1 软件测试评估概述 195
10.4.2 软件测试评估分类 196
本章小结 197
本章习题 197
第11章 软件测试自动化 198
11.1 自动化测试的定义 198
11.1.1 概念 198
11.1.2 自动化测试的优点 198
11.1.3 自动化测试的局限性 200
11.1.4 自动化测试的适用范围 200
11.2 自动化测试原理 201
11.2.1 代码分析 201
11.2.2 录制回放技术 202
11.2.3 脚本技术 202
11.2.4 虚拟用户技术 204
11.3 软件测试工具 204
11.3.1 软件测试工具类型 204
11.3.2 单元测试工具实例——JUnit 206
11.3.3 性能测试工具实例——LoadRunner 215
11.3.4 功能测试工具实例——QTP 225
本章小结 234
本章习题 234
附录A 软件测试相关文档模板 235
附录A.1 代码审查单 238
附录A.2 代码走查报告 240
附录A.3 软件测试计划模板 241
附录A.4 软件测试用例模板 244
附录A.5 软件缺陷模板 245
附录A.6 测试报告模板 246
参考文献 249