第1章 基本概念和预备知识 1
1.1 质量革命 1
1.2 软件质量 4
1.3 软件测试的作用 4
1.4 验证和确认 5
1.5 失败、错误、故障和缺陷 6
1.6 软件可靠性的概念 7
1.7 测试的目标 7
1.8 什么是测试用例 7
1.9 期望结果 8
1.10完备测试的概念 9
1.11测试的核心问题 9
1.12测试活动 9
1.13测试阶段 11
1.14测试用例选择的信息来源 12
1.15白盒测试与黑盒测试 13
1.16测试计划和设计 14
1.17监测并度量测试执行 15
1.18测试工具和自动化 16
1.19测试团队的组织和管理 17
1.20本书概述 18
参考文献 19
习题 21
第2章 程序测试理论 22
2.1 测试理论中的基本概念 22
2.2 Goodenough和Gerhart理论 22
2.2.1 基本概念 23
2.2.2 测试理论 24
2.2.3 程序错误 24
2.2.4 可靠性条件 25
2.2.5 理论的缺点 26
2.3 Weyuker和Ostrand理论 26
2.4 Gourlay理论 27
2.4.1 几个定义 28
2.4.2 测试方法的能力 29
2.5 测试的足够性 30
2.6 测试的局限性 31
2.7 总结 32
文献综述 33
参考文献 33
习题 34
第3章 单元测试 35
3.1 单元测试的概念 35
3.2 静态单元测试 36
3.3 缺陷预防 41
3.4 动态单元测试 42
3.5 变异测试 44
3.6 调试 46
3.7 极限编程中的单元测试 48
3.8 JUnit:单元测试框架 49
3.9 单元测试工具 52
3.10总结 55
文献综述 55
参考文献 57
习题 59
第4章 控制流测试 60
4.1 基本概念 60
4.2 控制流测试概述 60
4.3 控制流图 61
4.4 控制流图中的路径 64
4.5 路径选择标准 65
4.5.1 全路径覆盖原则 66
4.5.2 语句覆盖原则 66
4.5.3 分支覆盖原则 67
4.5.4 谓词覆盖原则 68
4.6 生成测试输入 69
4.7 选择测试数据的示例 73
4.8 包含无效路径 74
4.9 总结 74
文献综述 75
参考文献 75
习题 76
第5章 数据流测试 78
5.1 一般概念 78
5.2 数据流异常 78
5.3 动态数据流测试概述 80
5.4 数据流图 81
5.5 数据流术语 83
5.6 数据流测试标准 84
5.7 数据流测试选择标准的比较 86
5.8 可行路径和测试选择标准 87
5.9 测试技术的比较 89
5.10总结 90
文献综述 90
参考文献 92
习题 93
第6章 域测试 95
6.1 域错误 95
6.2 域错误测试 97
6.3 域的源 97
6.4 域错误的类型 99
6.5 ON点和OFF点 100
6.6 测试选择标准 102
6.7 总结 106
文献综述 107
参考文献 108
习题 108
第7章 系统集成测试 110
7.1 集成测试的概念 110
7.2 接口的不同类型和接口错误 111
7.3 系统集成测试的粒度 113
7.4 系统集成技术 113
7.4.1 增量法 114
7.4.2 自顶向下 116
7.4.3 自底向上 118
7.4.4 三明治方式和大爆炸方式 119
7.5 软件和硬件的集成 120
7.5.1 硬件设计验证测试 120
7.5.2 硬件/软件兼容性矩阵 122
7.6 系统集成的测试计划 124
7.7 现成组件集成 126
7.7.1 现成组件的测试 127
7.7.2 内置测试 128
7.8 总结 128
文献综述 129
参考文献 129
习题 130
第8章 系统测试分类 131
8.1 系统测试分类法 131
8.2 基础测试 132
8.2.1 启动测试 132
8.2.2 升级/降级测试 132
8.2.3 发光二极管测试 132
8.2.4 诊断程序测试 133
8.2.5 命令行界面测试 133
8.3 功能性测试 133
8.3.1 通信系统测试 134
8.3.2 模块测试 134
8.3.3 记录和跟踪测试 134
8.3.4 元素管理系统(EMS)测试 135
8.3.5 管理信息基础测试 137
8.3.6 图形用户界面测试 137
8.3.7 安全性测试 137
8.3.8 特征测试 138
8.4 健壮性测试 138
8.4.1 边界值测试 139
8.4.2 电力循环测试 140
8.4.3 在线插入和删除测试 140
8.4.4 高可用性测试 140
8.4.5 降级节点测试 140
8.5 互操作性测试 141
8.6 性能测试 141
8.7 可扩展性测试 142
8.8 压力测试 143
8.9 负载和稳定性测试 144
8.10可靠性测试 145
8.11回归测试 145
8.12文档测试 146
8.13规章测试 146
8.14总结 147
文献综述 148
参考文献 149
习题 149
第9章 功能测试 151
9.1 Howden的功能测试的概念 151
9.1.1 变量的不同类型 152
9.1.2 测试向量 156
9.1.3 在上下文中测试一个函数 157
9.2 应用功能测试的复杂度 157
9.3 成对测试 159
9.3.1 正交矩阵 159
9.3.2 参数顺序算法 162
9.4 等价类划分 164
9.5 边界值分析 167
9.6 判定表 167
9.7 随机测试 170
9.8 错误猜测 173
9.9 范畴划分 173
9.10总结 175
文献综述 176
参考文献 177
习题 178
第10章 从有限状态机模型生成测试 180
10.1 面向状态的模型 180
10.2 控制和观察点 182
10.3 有限状态机 183
10.4 从一个FSM中产生测试 185
10.5 迁移遍历方法 185
10.6 带有状态验证的测试 188
10.7 唯一输入-输出序列 189
10.8 区分序列 192
10.9 表征序列 195
10.10测试架构 197
10.10.1 本地架构 198
10.10.2 分布式架构 199
10.10.3 协调架构 199
10.10.4 远程架构 200
10.11测试和测试控制标记法第3版(TTCN-3) 200
10.11.1 模块 200
10.11.2 数据声明 201
10.11.3 端口及组件 202
10.11.4 测试用例裁定 203
10.11.5 测试用例 203
10.12扩展的有限状态机 205
10.13从EFSM模型中生成测试用例 209
10.14为系统测试增加的覆盖标准 213
10.15总结 215
文献综述 215
参考文献 216
习题 217
第11章 系统测试设计 219
11.1 测试设计要点 219
11.2 需求识别 220
11.3 可测需求的特征 225
11.4 测试目标识别 227
11.5 示例 228
11.6 建立测试设计流程模型 235
11.7 建立测试结果模型 236
11.8 测试设计准备度量 238
11.9 测试用例设计有效性 238
11.10总结 239
文献综述 239
参考文献 240
习题 241
第12章 系统测试计划与自动化 242
12.1 系统测试计划的结构 242
12.2 导言与特征描述 243
12.3 假设前提 243
12.4 测试方法 243
12.5 测试套件结构 243
12.6 测试环境 244
12.7 测试执行策略 245
12.7.1 多周期系统测试策略 246
12.7.2 测试周期特性 247
12.7.3 首次测试周期的准备 249
12.7.4 最终测试周期的测试用例选择 251
12.7.5 测试用例优先级排序 252
12.7.6 三个测试周期的细节 253
12.8 测试工作量评估 256
12.8.1 测试用例数量 257
12.8.2 创建测试用例工作量 261
12.8.3 测试用例执行工作量 261
12.9 安排进度与测试里程碑 262
12.10系统测试自动化 266
12.11评价和选择自动化测试工具 266
12.12自动化测试选择指南 268
12.13自动化测试用例的特性 269
12.14自动化测试用例的结构 270
12.15测试自动化的基础设施 271
12.16总结 272
文献综述 273
参考文献 275
习题 276
第13章 系统测试的执行 277
13.1 基本观点 277
13.2 缺陷建模 277
13.3 系统测试开始前的准备工作 282
13.4 跟踪系统测试的度量指标 285
13.4.1 监测测试用例执行的度量指标 285
13.4.2 测试执行度量指标的示例 286
13.4.3 监测缺陷报告的度量指标 288
13.4.4 缺陷报告度量指标示例 289
13.5 正交缺陷分类 292
13.6 缺陷原因分析 294
13.7 beta测试 296
13.8 首次客户运送(FCS) 297
13.9 系统测试报告 298
13.10产品支持 299
13.11测量测试的有效性 300
13.12总结 302
文献综述 303
参考文献 303
习题 304
第14章 验收测试 306
14.1 验收测试的类型 306
14.2 验收标准 307
14.3 验收标准的选择 313
14.4 验收测试计划 313
14.5 验收测试的执行 314
14.6 验收测试报告 315
14.7 极限编程中的验收测试 316
14.8 总结 317
文献综述 317
参考文献 318
习题 318
第15章 软件可靠性 320
15.1 什么是可靠性 320
15.1.1 缺陷和故障 321
15.1.2 时间 321
15.1.3 故障之间的时间间隔 322
15.1.4 在周期性时间间隔中的故障计数 322
15.1.5 故障密度 323
15.2 软件可靠性的定义 324
15.2.1 软件可靠性的第一个定义 324
15.2.2 软件可靠性的第二个定义 325
15.2.3 比较软件可靠性的定义 325
15.3 影响软件可靠性的因素 325
15.4 软件可靠性的应用 326
15.4.1 比较软件工程技术 326
15.4.2 衡量系统测试的进度 326
15.4.3 控制运行中的系统 327
15.4.4 深入洞察软件开发过程 327
15.5 操作概要 327
15.5.1 操作 327
15.5.2 操作概要的表示 327
15.6 可靠性模型 329
15.7 总结 333
文献综述 334
参考文献 335
习题 335
第16章 测试团队的组织结构 337
16.1 测试团队 337
16.1.1 集成测试组 337
16.1.2 系统测试组 337
16.2 软件质量保证组 338
16.3 系统测试团队的组织结构 339
16.4 有效的测试工程师人员编制 340
16.5 招聘测试工程师 342
16.5.1 职位需求 342
16.5.2 职位概要 342
16.5.3 浏览简历 343
16.5.4 协调面试团队 343
16.5.5 面试 344
16.5.6 决策 347
16.6 保留测试工程师 347
16.6.1 职业前景 347
16.6.2 培训 347
16.6.3 奖励制度 348
16.7 团队建设 348
16.7.1 期望 348
16.7.2 一致性 348
16.7.3 信息共享 349
16.7.4 标准化 349
16.7.5 测试环境 349
16.7.6 酬谢 349
16.8 总结 349
文献综述 350
参考文献 350
习题 351
第17章 软件质量 352
17.1 软件质量的5个观点 352
17.2 McCall的质量因子和标准 354
17.2.1 质量因子 354
17.2.2 质量标准 357
17.2.3 质量因子和质量标准之间的关系 358
17.2.4 质量度量 359
17.3 ISO 9126质量特性 359
17.4 ISO 9000:2000软件质量标准 361
17.4.1 ISO 9000:2000基本法则 362
17.4.2 ISO 9001:2000需求 363
17.5 总结 366
文献综述 367
参考文献 368
习题 368
第18章 成熟度模型 369
18.1 软件过程中的基本概念 369
18.2 能力成熟度模型 370
18.2.1 CMM架构 371
18.2.2 5个成熟度级别和核心过程领域 371
18.2.3 核心实践的公共特性 373
18.2.4 CMM应用 374
18.2.5 能力成熟度集成(CMMI) 374
18.3 测试过程改进 375
18.4 测试成熟度模型 383
18.5 总结 389
文献综述 390
参考文献 390
习题 391
术语表 392