第一部分 软件测试能力和资格的评估
第1章 评估软件测试的能力和人员资格 3
1.1 软件测试涉及的人员 3
1.2 软件测试的多种角色 4
1.2.1 制造 4
1.2.2 创作车间 4
1.2.3 专业化过程 4
1.3 什么是缺陷 5
1.3.1 缺陷与故障 5
1.3.2 过程问题与缺陷率 5
1.4 软件测试的商业前景 6
1.5 现有的测试过程和测试人员的状况如何 6
1.5.1 评估现有测试过程的质量 7
1.5.2 评估测试人员的素质 11
1.6 小结 14
第二部分 搭建软件测试环境
第2章 制定软件测试策略 23
2.1 计算机系统的策略风险 23
2.2 经济学测试 24
2.3 常见的计算机问题 25
2.3.1 软件问题 25
2.3.2 数据问题 26
2.4 系统开发生命周期的经济学测试 26
2.5 测试是一个组织问题 26
2.6 建立测试原则 28
2.7 测试的结构化方法 29
2.7.1 需求 31
2.7.2 设计 31
2.7.3 编程(创建/构建) 31
2.7.4 测试过程 31
2.7.5 安装 32
2.7.6 维护 32
2.8 测试策略 32
2.8.1 测试因素 32
2.8.2 制定测试策略 35
2.8.3 创建测试策略样例 36
2.9 测试方法论 37
2.10 软件测试的状况 38
2.11 小结 39
第3章 建立软件测试方法论 41
3.1 需要测试什么 41
3.2 为什么缺陷难以发现 41
3.3 减少测试费用 42
3.4 什么是验证和确认 44
3.5 功能和结构测试 45
3.5.1 为什么使用两种测试方法 46
3.5.2 使用验证和确认技术进行的结构和功能测试 46
3.6 工作流程的概念 46
3.7 开发测试方法论中要考虑的8个问题 48
3.7.1 获取和研究测试策略 48
3.7.2 确定开发项目的类型 49
3.7.3 确定软件系统的类型 49
3.7.4 确定项目的范围 50
3.7.5 确定战术风险 50
3.7.6 确定何时进行测试 51
3.7.7 建立系统测试计划 52
3.7.8 建立单元测试计划 52
3.8 测试战术检查单 54
3.9 小结 54
第4章 确定软件测试技术 65
4.1 应用程序适应性的概念 65
4.2 测试技术/工具的选择过程 65
4.2.1 结构测试与功能测试 66
4.2.2 动态测试与静态测试 67
4.2.3 人工测试与自动测试 68
4.3 测试技术/工具的选择 68
4.4 结构化系统测试技术 68
4.4.1 压力测试技术 69
4.4.2 执行测试技术 70
4.4.3 恢复测试技术 71
4.4.4 操作测试技术 72
4.4.5 一致性测试技术 73
4.4.6 安全性测试技术 74
4.5 功能性系统测试技术 75
4.5.1 需求测试技术 75
4.5.2 回归测试技术 76
4.5.3 错误处理测试技术 77
4.5.4 人工支持测试技术 78
4.5.5 系统间测试技术 79
4.5.6 控制测试技术 80
4.5.7 平行测试技术 81
4.6 单元测试技术 81
4.7 功能测试和分析 82
4.8 功能测试 82
4.8.1 独立于规格说明技术的测试 82
4.8.2 基于规格说明技术的测试 83
4.8.3 结构测试和分析 84
4.8.4 面向错误的测试和分析 85
4.8.5 单元测试和分析的管理 87
4.9 测试因素/测试技术矩阵 88
4.10 小结 88
第5章 软件测试工具的选择和安装 90
5.1 测试工具—测试的“锤子” 90
5.2 测试工具的选择和使用 94
5.2.1 第1步, 将工具及其用途进行匹配 95
5.2.2 第2步, 选择适合于软件生命周期各阶段的工具 95
5.2.3 第3步, 选择与测试人员的技能水平相符的测试工具 95
5.2.4 第4步, 选择可支付的工具 99
5.2.5 如果完成第4步后所有的工具都被排除了, 那该如何做 101
5.3 指定测试工具管理者 101
5.3.1 第1步, 选择工具管理者 102
5.3.2 第2步, 为工具管理者分配任务 102
5.3.3 第3步, 限定工具管理者的任期 103
5.4 小结 104
第三部分 11步软件测试过程
第6章 11步软件测试过程概述 109
6.1 计算机测试的费用 109
6.1.1 确定消除缺陷的费用 110
6.1.2 降低测试的费用 111
6.2 生命周期测试 111
6.2.1 定义过程 112
6.2.2 使用V-测试概念 113
6.2.3 组建软件开发项目组 113
6.2.4 组建软件开发测试小组 113
6.3 软件开发过程中的验证和确认 115
6.4 11步软件测试过程 115
6.5 工作流程所需的技能 117
6.6 小结 118
第7章 第1步, 评估项目管理开发的估算和状态 120
7.1 概述 120
7.2 目标 120
7.3 涉及的问题 120
7.4 工作流程 122
7.5 输入 122
7.6 执行过程 122
7.6.1 任务1:测试软件估算的有效性 122
7.6.2 任务2:测试软件系统的状态 131
7.7 检查过程 139
7.8 输出 139
7.9 原则 139
7.10 小结 139
第8章 第2步, 制定测试计划 143
8.1 概述 143
8.2 目标 143
8.3 涉及的问题 144
8.4 工作流程 145
8.5 输入 146
8.6 执行过程 146
8.6.1 任务1:组建测试小组 146
8.6.2 任务2:了解项目风险 148
8.6.3 任务3:制定测试计划 154
8.6.4 任务4:审查测试计划 160
8.7 检查过程 167
8.8 输出 167
8.9 原则 167
8.10 小结 168
第9章 第3步, 需求阶段测试 183
9.1 概述 183
9.2 目标 184
9.3 涉及的问题 185
9.4 工作流程 185
9.5 输入 185
9.6 执行过程 186
9.6.1 任务1:准备风险矩阵 186
9.6.2 任务2:进行需求阶段的测试因素分析 192
9.6.3 任务3:执行需求走查 194
9.7 检查过程 196
9.8 输出 196
9.9 原则 196
9.10 小结 196
第10章 第4步, 设计阶段测试 206
10.1 概述 206
10.2 目标 206
10.3 涉及的问题 206
10.4 工作流程 208
10.5 输入 208
10.6 执行过程 209
10.6.1 任务1:给成功因素评分 209
10.6.2 任务2:分析测试因素 211
10.6.3 任务3:进行设计评审 213
10.6.4 任务4:审查设计的可交付性 214
10.7 检查过程 214
10.8 输出 215
10.9 原则 215
10.10 小结 215
第11章 第5步, 编程阶段测试 238
11.1 概述 238
11.2 目标 239
11.3 涉及的问题 239
11.4 工作流程 239
11.5 输入 240
11.6 执行过程 241
11.6.1 任务1:对程序进行桌面调试 241
11.6.2 任务2:分析编程阶段测试因素 242
11.6.3 任务3:执行同行评审 244
11.7 检查过程 246
11.8 输出 246
11.9 原则 246
11.10 小结 246
第12章 第6步, 执行测试并记录结果 257
12.1 概述 257
12.2 目标 257
12.3 涉及的问题 257
12.4 工作流程 259
12.5 输入 259
12.6 执行过程 260
12.6.1 任务1:构造测试数据 260
12.6.2 任务2:执行测试 274
12.6.3 任务3:记录测试结果 276
12.7 检查过程 278
12.8 输出 278
12.9 原则 278
12.10 小结 279
第13章 第7步, 验收测试 291
13.1 概述 291
13.2 目标 291
13.3 涉及的问题 294
13.4 工作流程 294
13.5 输入 294
13.6 执行过程 295
13.6.1 任务1:定义验收标准 295
13.6.2 任务2:制定验收计划 297
13.6.3 任务3:执行验收计划(进行验收测试和评审) 298
13.6.4 任务4:得出验收结果 302
13.7 检查过程 305
13.8 输出 305
13.9 原则 305
13.10 小结 305
第14章 第8步, 报告测试结果 309
14.1 概述 309
14.2 目标 310
14.3 涉及的问题 311
14.4 工作流程 311
14.5 输入 312
14.5.1 测试计划和项目计划 312
14.5.2 预期的处理结果 312
14.5.3 测试中收集的数据 312
14.5.4 存储测试过程中收集的数据 313
14.6 执行过程 313
14.6.1 任务1:报告软件状态 314
14.6.2 任务2:报告中间测试结果 319
14.6.3 独立项目构件测试结果 326
14.6.4 任务3:报告最终测试结果 327
14.7 检查过程 328
14.8 输出 329
14.9 原则 329
14.10 小结 329
第15章 第9步, 测试软件安装 333
15.1 概述 333
15.2 目标 333
15.3 涉及的问题 334
15.4 工作流程 335
15.5 输入 336
15.6 执行过程 336
15.6.1 任务1a:新系统的安装测试 336
15.6.2 任务1b:测试软件的变更版本 338
15.6.3 任务2:监控产品 341
15.6.4 任务3:文档化问题 342
15.7 检查过程 342
15.8 输出 342
15.9 原则 342
15.10 小结 343
第16章 第10步, 测试软件变更 352
16.1 概述 352
16.2 目标 352
16.3 涉及的问题 353
16.4 工作流程 354
16.5 输入 355
16.6 执行过程 355
16.6.1 任务1:制定/更新测试计划 355
16.6.2 任务2:开发/更新测试数据 356
16.6.3 任务3:测试变更控制过程 358
16.6.4 任务4:执行测试 359
16.6.5 任务5:开发/更新培训材料 360
16.7 检查过程 362
16.8 输出 362
16.8.1 是否可接受自动化应用系统 362
16.8.2 是否可接受人工部分 363
16.9 原则 364
16.9.1 进行测试调整 364
16.9.2 进行培训调整 364
16.9.3 软件变更反馈 364
16.10 小结 365
第17章 第11步, 评价测试的有效性 378
17.1 概述 378
17.2 目标 378
17.3 涉及的问题 378
17.4 工作流程 379
17.5 输入 381
17.6 执行过程 381
17.6.1 任务1:确定评估目标 381
17.6.2 任务2:确定度量内容 382
17.6.3 任务3:指定度量责任 382
17.6.4 任务4:选择评估方法 382
17.6.5 任务5:确定所需事实 383
17.6.6 任务6:收集评估数据 383
17.6.7 任务7:评估测试有效性 383
17.7 检查过程 386
17.8 输出 386
17.9 原则 387
17.10 小结 387
第四部分 专用系统和应用的测试
第18章 测试客户/服务器系统 391
18.1 概述 391
18.2 目标 391
18.3 涉及的问题 391
18.4 工作流程 392
18.5 输入 392
18.6 执行过程 392
18.6.1 任务1:评估准备情况 392
18.6.2 任务2:评估关键组成部分 399
18.6.3 任务3:测试系统 399
18.7 检查过程 399
18.8 输出 399
18.9 原则 400
18.10 小结 400
第19章 测试快速应用开发系统 406
19.1 概述 406
19.2 目标 406
19.3 涉及的问题 406
19.3.1 迭代过程中的测试信息 407
19.3.2 测试组件信息 407
19.3.3 测试性能信息 407
19.3.4 记录测试信息 407
19.4 工作流程 407
19.5 输入 408
19.6 执行过程 408
19.6.1 测试迭代的快速开发 408
19.6.2 螺旋测试 409
19.6.3 任务1:测试计划的迭代 410
19.6.4 任务2:测试中间计划的迭代 411
19.6.5 任务3:测试最终计划的迭代 412
19.7 检查过程 412
19.8 输出 412
19.9 原则 412
19.10 小结 413
第20章 测试系统文档的恰当性 418
20.1 概述 418
20.2 目标 418
20.3 涉及的问题 418
20.4 工作流程 419
20.5 输入 420
20.6 执行过程 421
20.6.1 任务1:度量项目文档需求 421
20.6.2 任务2:确定必须生成的文档 422
20.6.3 任务3:确定单独文档的完整性 425
20.6.4 任务4:确定项目文档是否符合实际 426
20.7 检查过程 427
20.8 输出 427
20.9 原则 427
20.10 小结 428
第21章 测试基于Web的系统 431
21.1 概述 431
21.1.1 客户/服务器体系结构 431
21.1.2 基于Web的体系结构 431
21.2 目标 432
21.3 涉及的问题 432
21.4 工作流程 433
21.5 输入 433
21.6 执行过程 434
21.6.1 任务1:选择基于Web的风险加入到测试计划中 434
21.6.2 任务2:选择基于Web的测试 437
21.6.3 任务3:选择基于Web系统的测试工具 439
21.6.4 任务4:执行Web系统的测试 439
21.7 检查过程 440
21.8 输出 440
21.9 原则 440
21.10 小结 440
第22章 测试成品软件 443
22.1 概述 443
22.2 目标 443
22.3 涉及的问题 443
22.4 工作流程 444
22.5 输入 444
22.6 执行过程 444
22.6.1 任务1:测试业务适应性 445
22.6.2 任务2:测试操作适应性 447
22.6.3 任务3:测试人员适应性 451
22.6.4 任务4:确认软件处理的验收测试 451
22.7 检查过程 453
22.8 输出 453
22.9 原则 453
22.10 小结 454
第23章 多平台环境的测试 460
23.1 概述 460
23.2 目标 460
23.3 涉及的问题 460
23.4 工作流程 460
23.5 输入 461
23.6 执行过程 462
23.6.1 任务1:定义平台配置涉及的问题 462
23.6.2 任务2:列出所需平台配置 463
23.6.3 任务3:评估测试实验室配置 463
23.6.4 任务4:列出平台影响的软件组件 463
23.6.5 任务5:列出接口平台的影响 465
23.6.6 任务6:执行测试 465
23.7 检查过程 465
23.8 输出 465
23.9 原则 466
23.10 小结 466
第24章 安全性测试 471
24.1 概述 471
24.2 目标 471
24.3 涉及的问题 471
24.4 工作流程 471
24.5 输入 472
24.6 执行过程 473
24.6.1 任务1:明确潜在的安全隐患 473
24.6.2 任务2:明确潜在的入侵点 473
24.6.3 任务3:创建入侵矩阵 476
24.6.4 任务4:明确高风险入侵点 477
24.6.5 任务5:执行安全性测试 478
24.7 检查过程 478
24.8 输出 479
24.9 原则 479
24.10 小结 479
第25章 测试数据仓库 482
25.1 概述 482
25.2 目标 482
25.3 涉及的问题 482
25.4 工作流程 483
25.5 输入 483
25.6 执行过程 484
25.6.1 任务1:度量数据仓库的问题数量 484
25.6.2 任务2:明确要测试的数据仓库活动过程 484
25.6.3 任务3:测试数据仓库活动过程的充分性 488
25.7 检查过程 491
25.8 输出 491
25.9 原则 491
25.10 小结 491
第五部分 创建测试文档
第26章 创建测试文档 505
26.1 使用 505
26.2 类型 506
26.3 责任 506
26.4 存储 506
26.5 测试计划文档 506
26.5.1 第一部分:一般信息 507
26.5.2 第二部分:计划 507
26.5.3 第三部分:规格说明和评价 508
26.5.4 第四部分:测试说明 508
26.6 测试分析报告文档 511
26.6.1 第一部分:一般信息 511
26.6.2 第二部分:测试结果和结论 511
26.6.3 第三部分:软件功能结论 511
26.6.4 第四部分:分析小结 512
26.7 小结 513