第1章 软件质量概论 1
1.1 概述 1
1.2 软件生命周期概述 2
1.2.1 软件生命周期 2
1.2.2 软件开发过程模型 3
1.3 软件缺陷 12
1.3.1 软件缺陷的定义 12
1.3.2 软件缺陷的来源 14
1.3.3 软件缺陷的属性 16
1.4 软件质量 19
1.4.1 软件质量的定义 19
1.4.2 影响软件质量的主要因素 21
1.5 软件质量模型 23
1.5.1 McCall质量模型 23
1.5.2 Boehm质量模型 24
1.5.3 ISO9126质量模型 25
1.6 软件质量需求 26
1.7 本章小结 28
第2章 软件生命周期质量度量 29
2.1 概述 29
2.1.1 度量的原则 30
2.1.2 软件开发生命周期的度量活动 30
2.1.3 软件度量的实施过程 32
2.2 需求分析模型的度量 32
2.2.1 基于功能的度量 33
2.2.2 规约质量的度量 34
2.2.3 需求稳定性的度量 35
2.3 设计模型的度量 35
2.3.1 体系结构设计度量 36
2.3.2 构件级设计度量 38
2.3.3 界面设计度量 41
2.4 源代码度量 42
2.4.1 Halstead度量法 42
2.4.2 McCabe度量法 43
2.5 对测试的度量 45
2.5.1 测试的度量 45
2.5.2 测试过程的度量 45
2.6 对维护的度量 45
2.6.1 软件维护度量 48
2.6.2 维护过程的度量 50
2.7 本章小结 51
第3章 软件生命周期质量管理 52
3.1 概述 52
3.2 需求分析阶段 54
3.3 概要设计阶段 58
3.4 详细设计阶段 60
3.5 代码开发阶段 62
3.6 集成测试阶段 65
3.7 确认测试阶段 68
3.8 系统联试阶段 71
3.9 本章小结 72
第4章 软件质量保证 73
4.1 概述 73
4.1.1 软件质量保证概念 73
4.1.2 质量保证的目标 74
4.2 质量保证内容 74
4.3 质量保证过程 76
4.4 质量保证任务 77
4.5 质量保证中的软件配置管理 78
4.5.1 软件配置管理的基本概念 79
4.5.2 软件配置管理实施的关注点 81
4.5.3 软件配置管理过程 83
4.5.4 软件配置管理计划的编写 85
4.6 质量保证中的评审和检查 87
4.6.1 评审和检查的作用与目标 87
4.6.2 检查 88
4.6.3 评审 90
4.6.4 软件生命周期内的评审实施 94
4.6.5 评审问题清单 98
4.7 本章小结 100
第5章 软件测试 101
5.1 软件测试概述 101
5.1.1 软件测试的定义 101
5.1.2 软件测试的原则 102
5.1.3 软件测试的对象 104
5.1.4 软件测试过程模型 105
5.2 软件测试的作用 112
5.2.1 软件测试的目的—确保质量 112
5.2.2 软件测试与质量保证的关系 114
5.2.3 软件测试在软件开发过程中的质量保证工作 115
5.3 白盒测试技术 116
5.3.1 概述 116
5.3.2 基本技术 117
5.3.2.1 词法分析与语法分析 117
5.3.2.2 静态错误分析 118
5.3.2.3 程序插桩技术 119
5.3.3 静态白盒测试 124
5.3.3.1 代码检查法 124
5.3.3.2 静态结构分析法 137
5.3.3.3 静态质量度量法 140
5.3.4 动态白盒测试 145
5.3.4.1 逻辑覆盖法 145
5.3.4.2 基本路径测试法 150
5.4 黑盒测试技术 155
5.4.1 概述 155
5.4.1.1 黑盒测试的特点 156
5.4.1.2 黑盒测试的应用 157
5.4.2 黑盒测试用例设计 157
5.4.2.1 等价类划分法 158
5.4.2.2 边界值分析法 160
5.4.2.3 场景法 161
5.4.2.4 因果图法 164
5.4.2.5 正交试验法 166
5.4.2.6 判定表法 171
5.4.2.7 其他方法 174
5.4.3 编写黑盒测试用例 174
5.4.3.1 有效的测试用例 175
5.4.3.2 编写原则 177
5.4.3.3 测试用例构成 179
5.4.3.4 编写策略 180
5.5 本章小结 181
第6章 软件生命周期测试实施 182
6.1 概述 182
6.2 需求阶段的测试实施 185
6.2.1 概述 185
6.2.1.1 分析测试因素 185
6.2.1.2 执行需求的走读 188
6.2.1.3 执行需求跟踪 191
6.2.1.4 确保需求是可测试的 191
6.2.2 需求说明书的评测 192
6.2.2.1 需求说明书的编写原则 192
6.2.2.2 需求说明书的框架 193
6.2.2.3 需求说明书的评测内容 193
6.2.3 需求建模测试 195
6.2.3.1 统一建模语言 196
6.2.3.2 Use Case测试 197
6.2.3.3 MSC测试 199
6.2.3.4 建模分析工具介绍 201
6.2.4 基于原型的测试 203
6.2.4.1 原型的引入 204
6.2.4.2 原型在软件过程的地位 205
6.2.4.3 原型法的价值 206
6.2.4.4 原型的测试方法 207
6.2.5 小结 207
6.3 设计阶段的测试实施 208
6.3.1 概述 208
6.3.2 有效评分过程 208
6.3.3 设计的测试因素 210
6.3.4 设计评审 212
6.3.4.1 设计评审过程 212
6.3.4.2 检视设计 214
6.3.5 设计说明书的评测 214
6.3.5.1 设计说明书的框架 214
6.3.5.2 概要设计说明书评测的内容 215
6.3.5.3 详细设计说明书评测 218
6.3.6 SDL设计的测试 219
6.3.6.1 SDL介绍 219
6.3.6.2 SDL系统测试 226
6.3.7 硬件选型测试 233
6.3.7.1 TPC—C基准测试 235
6.3.7.2 TPC—E基准测试 238
6.3.7.3 TPC—H基准测试 246
6.3.7.4 TPC组织公布的测试报告读解 250
6.4 单元测试与软件质量 252
6.4.1 概述 252
6.4.2 测试的内容 254
6.4.3 单元测试过程 256
6.4.4 单元测试的数据要求 257
6.4.5 单元测试的测试技术 258
6.4.6 输入、输出 259
6.4.7 设计单元测试用例 259
6.4.7.1 测试用例设计步骤 260
6.4.7.2 用例设计的一般原则 261
6.4.8 单元测试实践 261
6.4.9 小结 262
6.5 集成测试与软件质量 263
6.5.1 集成测试的实施过程 263
6.5.2 常用集成测试方法 265
6.5.3 集成测试分析 270
6.5.4 小结 275
6.6 确认测试与软件质量 275
6.6.1 确认测试的关注点 275
6.6.2 确认测试的指导原则 276
6.6.3 确认测试的主要内容 276
6.6.4 确认测试的实施过程 277
6.6.5 小结 290
6.7 系统测试与软件质量 291
6.7.1 系统测试的内容 291
6.7.2 系统测试步骤 292
6.7.3 系统测试的方法与技术 293
6.7.3.1 遵循的方法与技术 293
6.7.3.2 系统测试过程 300
6.7.4 系统测试人员 301
6.7.5 小结 301
6.8 验收测试与软件质量 302
6.8.1 用户验收测试 303
6.8.1.1 用户验收测试的方法 303
6.8.1.2 用户验收测试的技术 303
6.8.1.3 输入、输出 305
6.8.2 操作验收测试 305
6.8.2.1 操作验收测试的方法 306
6.8.2.2 操作验收测试的数据要求 306
6.8.2.3 操作验收测试的技术 306
6.8.2.4 输入、输出 307
6.8.3 小结 307
6.9 本章小结 308
第7章 典型测试实例 309
7.1 功能测试实例 309
7.1.1 “xxx接处警”系统简介 309
7.1.2 测试需求分析 309
7.1.3 用例设计方法分析 313
7.2 性能测试实例 318
7.2.1 办公自动化系统的案例分析 318
7.2.2 工作流引擎的案例分析 322
7.2.3 数据库层应用测试 324
7.2.3.1 性能问题来源 324
7.2.3.2 性能优化 326
7.2.3.3 性能调优步骤 326
7.2.3.4 工具和实用程序 328
7.3 可靠性测试实例 329
7.3.1 操作系统可靠性对比测试 329
7.3.1.1 测评内容 329
7.3.1.2 测评模型 329
7.3.1.3 测评策略 334
7.3.2 某信息系统的可靠性测试 335
7.3.2.1 系统逻辑部署图 335
7.3.2.2 测试场景描述 336
7.3.2.3 测试结果 337
7.4 单元测试实例 339
7.4.1 静态测试 339
7.4.2 覆盖率测试 346
7.5 本章小结 358
第8章 前沿测试技术 359
8.1 敏捷测试技术 359
8.1.1 敏捷方法的特征 359
8.1.2 敏捷方法的质量 360
8.1.3 敏捷测试的引入 361
8.1.4 敏捷测试用例设计 362
8.1.5 敏捷测试的弱点 364
8.2 测试驱动开发 365
8.2.1 TDD的优势 365
8.2.2 TDD的原理 366
8.2.3 TDD的过程 367
8.2.4 TDD的原则 368
8.2.5 TDD测试技术 369
8.2.6 TDD测试案例 370
8.3 本章小结 371
第9章 常用测试工具 372
9.1 功能测试工具 372
9.2 性能测试工具(系统强度测试工具) 375
9.3 白盒、嵌入式测试工具 378
9.4 软件开发工具 383
9.5 其他 384
9.6 本章小结 387
附录A 测试文档模板 388
附录B 软件测试中的常见术语中英文对照 407
参考文献 418