第一篇 软件质量 3
第1章 软件质量概述 3
1.1 软件开发过程 3
1.1.1 计算机软件 3
1.1.2 软件开发过程 5
1.1.3 软件开发过程模型 7
1.2 软件质量 10
1.2.1 软件质量概述 10
1.2.2 软件质量保证 13
1.2.3 软件质量模型 17
1.3 软件缺陷 21
1.3.1 软件缺陷简介 21
1.3.2 软件缺陷产生的原因 21
1.3.3 软件缺陷的严重性和优先级 23
1.3.4 软件缺陷构成 26
1.3.5 软件缺陷的预防和修复 28
1.4 思考题 30
第2章 软件质量度量和配置管理 31
2.1 软件质量度量 31
2.1.1 软件质量度量概述 31
2.1.2 软件质量度量过程中常见的问题 35
2.2 软件配置管理 36
2.2.1 软件配置管理的概述 36
2.2.2 配置管理的主要内容 38
2.3 思考题 42
第3章 软件质量标准 43
3.1 软件质量标准概述 43
3.1.1 国际标准 43
3.1.2 国家标准 44
3.1.3 行业标准 45
3.1.4 企业标准 45
3.1.5 项目规范 45
3.2 CMM 46
3.2.1 CMM的含义 46
3.2.2 CMM的五个级别 47
3.2.3 国内软件企业参与实施CMM 48
3.3 CMMI 49
3.3.1 CMMI的含义 49
3.3.2 CMMI的基本内容 50
3.3.3 CMM与CMMI的区别 51
3.4 ISO 9000软件质量标准 52
3.4.1 ISO 9000的主要内容 52
3.4.2 ISO 9000和CMM/CMMI的关系 53
3.5 其他质量标准 53
3.5.1 IEEE质量标准 53
3.5.2 SPICE 54
3.5.3 ISO/IEC 54
3.6 思考题 55
第4章 软件全面质量管理 56
4.1 软件全面质量管理概述 56
4.1.1 质量管理和全面质量管理 56
4.1.2 软件全面质量管理的含义 58
4.2 软件全面质量管理的步骤和评审 59
4.2.1 软件全面质量管理的步骤 59
4.2.2 软件全面质量管理中的评审 60
4.3 软件全面质量管理中的团队和质量控制 60
4.3.1 软件全面质量管理中的团队 60
4.3.2 软件全面质量管理中的质量控制 61
4.4 思考题 62
第5章 软件评审 63
5.1 软件评审概述 63
5.2 软件评审的主要内容 64
5.2.1 软件评审的目标 64
5.2.2 软件评审的过程 64
5.2.3 软件评审的原则 64
5.2.4 软件评审的特点 65
5.3 软件评审的阶段 65
5.3.1 需求评审 65
5.3.2 概要设计评审 68
5.3.3 详细设计评审 68
5.3.4 数据库设计评审 68
5.3.5 测试评审 68
5.4 避免进入评审误区 69
5.5 软件评审中的角色和职能 70
5.6 思考题 71
第二篇 软件测试 75
第6章 软件测试基础 75
6.1 软件测试的必要性 75
6.2 软件测试概述 80
6.2.1 软件测试模型 81
6.2.2 软件测试用例 83
6.2.3 软件测试技术方法 86
6.2.4 软件测试的复杂性与经济性 87
6.3 软件测试过程 88
6.3.1 单元测试 89
6.3.2 集成测试 89
6.3.3 确认测试 90
6.3.4 系统测试 90
6.3.5 验收测试 91
6.4 软件测试的原则与误区 91
6.4.1 软件测试的原则 91
6.4.2 软件测试的误区 93
6.5 软件测试的发展 96
6.5.1 软件测试的发展历程 96
6.5.2 我国软件测试的发展历程 97
6.5.3 软件测试外包 99
6.6 软件测试工作 99
6.6.1 软件测试工程师 100
6.6.2 软件测试工作特点 101
6.7 思考题 104
第7章 白盒测试 105
7.1 白盒测试概述 105
7.1.1 白盒测试的含义 105
7.1.2 静态测试和动态测试 106
7.1.3 软件测试与软件调试的区别 107
7.2 逻辑驱动覆盖测试 107
7.3 其他几种白盒测试 114
7.3.1 程序插装测试 114
7.3.2 程序变异测试 115
7.3.3 循环语句测试 115
7.4 代码检查 117
7.4.1 桌前检查和代码走查 117
7.4.2 代码评审和同行评审 118
7.4.3 基于缺陷模式测试 119
7.5 思考题 127
第8章 黑盒测试 129
8.1 黑盒测试概述 129
8.1.1 黑盒测试的含义 129
8.1.2 白盒测试和黑盒测试的比较 130
8.2 等价类划分法 132
8.2.1 等价类的含义 133
8.2.2 划分等价类的方法 133
8.2.3 设计测试用例 133
8.2.4 等价类划分法测试实例 134
8.3 边界值分析法 138
8.3.1 选择边界值测试的原则 139
8.3.2 几种边界值分析法 139
8.3.3 边界值分析法应用实例 142
8.4 因果图法 144
8.4.1 什么是因果图法 144
8.4.2 因果图法应用实例 146
8.5 判断表法 148
8.5.1 什么是判断表 148
8.5.2 判断表法应用实例 149
8.6 正交实验设计法 152
8.6.1 什么是正交实验设计法 153
8.6.2 正交实验法设计测试用例 154
8.6.3 正交实验设计法应用实例 155
8.7 其他黑盒测试方法 160
8.7.1 故障猜测法 160
8.7.2 状态图法 161
8.7.3 随机数据法 161
8.8 黑盒测试方法的比较与选择 162
8.9 思考题 163
第9章 集成测试 165
9.1 集成测试概述 165
9.1.1 集成测试的必要性 165
9.1.2 集成测试的含义 166
9.1.3 单元测试、集成测试和系统测试间的区别 167
9.1.4 集成测试与开发的关系 168
9.1.5 集成测试的层次与原则 168
9.2 集成测试的方法 168
9.2.1 集成测试的辅助模块 169
9.2.2 非渐增式集成 169
9.2.3 渐增式集成 170
9.2.4 三明治集成 172
9.2.5 其他集成测试方法 173
9.3 集成测试用例设计 175
9.4 集成测试过程 176
9.5 思考题 178
第10章 系统测试 179
10.1 性能测试 181
10.1.1 性能测试的含义 181
10.1.2 如何进行性能测试 182
10.1.3 性能测试的三个阶段和测试用例 184
10.2 压力测试 185
10.2.1 压力测试的含义 186
10.2.2 压力测试的特点 186
10.2.3 压力测试与性能测试的联系与区别 186
10.2.4 压力测试方法 187
10.2.5 压力测试执行 188
10.3 容量测试 189
10.3.1 容量测试的含义 189
10.3.2 容量测试方法 190
10.3.3 容量测试的步骤 191
10.3.4 不同情况的容量测试 191
10.4 健壮性测试 192
10.4.1 健壮性测试的含义 192
10.4.2 健壮性测试方法 193
10.4.3 设计健壮性测试的策略 193
10.5 安全性测试 194
10.5.1 安全性测试的含义 194
10.5.2 测试系统安全性要考虑的问题 195
10.5.3 安全性测试的手段和层次 196
10.5.4 安全性测试方法 196
10.5.5 安全性测试标准 199
10.6 可靠性测试 200
10.6.1 可靠性测试的概念 200
10.6.2 可靠性测试方式 200
10.6.3 可靠性测试数学模型 201
10.7 兼容性测试 202
10.7.1 兼容性测试概述 203
10.7.2 兼容性测试分类 203
10.8 可用性测试 205
10.8.1 可用性测试概述 205
10.8.2 可用性测试方法 207
10.8.3 可用性测试的必备要素 208
10.8.4 可用性测试的注意事项 210
10.9 安装测试 211
10.9.1 安装测试的含义 211
10.9.2 安装测试的三个主要方面 211
10.9.3 安装和卸载程序测试内容 212
10.10 容错性测试 213
10.10.1 容错性测试的含义 213
10.10.2 容错性测试 214
10.11 配置测试 214
10.11.1 配置测试的含义 215
10.11.2 配置测试方法 215
10.12 冒烟测试 215
10.12.1 冒烟测试概述 216
10.12.2 冒烟测试的应用和内容 216
10.13 GUI软件测试 217
10.13.1 GUI软件测试概述 217
10.13.2 GUI软件测试方法 218
10.13.3 GUI常见的要素 222
10.13.4 GUI基本测试内容 225
10.13.5 GUI测试常见错误 226
10.14 文档测试 227
10.14.1 文档测试的含义 227
10.14.2 文档性测试方法 230
10.15 网站测试 231
10.16 恢复测试 236
10.16.1 恢复测试的含义 236
10.16.2 恢复测试的主要内容和步骤 237
10.16.3 恢复测试中要注意的地方 238
10.17 协议测试 239
10.17.1 一致性测试 239
10.17.2 互操作性测试 240
10.18 验收测试 240
10.18.1 验收测试概述 240
10.18.2 α测试和β测试 241
10.18.3 验收测试的过程和主要内容 243
10.19 思考题 245
第11章 软件测试自动化 246
11.1 软件测试自动化的基础 246
11.1.1 软件测试自动化的概念 246
11.1.2 软件测试自动化的特点 248
11.2 软件测试自动化的实施 249
11.3 软件测试自动化工具的选择与比较 252
11.3.1 常用软件测试自动化工具 252
11.3.2 白盒测试工具 258
11.3.3 黑盒测试工具 259
11.3.4 测试管理工具 260
11.3.5 软件测试自动化中的问题、对策和工具的选择 260
11.4 LoadRunner 261
11.5 WinRunner 264
11.6 AutoRunner 267
11.7 思考题 270
第12章 软件测试管理 271
12.1 软件测试的组织 271
12.2 软件测试的人员组织 273
12.3 软件测试文件管理 274
12.4 软件测试管理的原则 275
12.5 测试管理体系 277
12.6 软件测试风险的控制 279
12.7 常用的测试管理工具 281
12.8 思考题 282
附录A 术语中英文对照 283
参考文献 299