第Ⅰ部分 软件测试能力与资格的评估 3
第1章 评估软件测试的能力、人员资格与用户满意度 3
1.1 成为世界级软件测试公司的三步式过程 3
1.2 步骤1:定义世界级软件测试模型 4
1.3 步骤2:为您的公司开发基线 7
1.3.1 评估1:评估测试环境 7
1.3.2 评估2:评估您的现有测试过程的能力 11
1.3.3 评估3:评估测试人员的资格 11
1.4 步骤3:制定改进计划 13
1.5 小结 15
第Ⅱ部分 构建软件测试环境 25
第2章 创建支持软件测试的环境 25
2.1 最小化风险 25
2.1.1 软件质量的风险承受能力 25
2.1.2 与实现规范有关的风险 26
2.1.3 与不符合客户需求有关的风险 27
2.1.4 开发软件测试人员的角色 30
2.2 编写软件测试的政策 31
2.2.1 测试政策的标准 31
2.2.2 制定测试政策的方法 32
2.3 测试的经济学 33
2.4 测试——公司的问题 35
2.5 软件测试的管理支持 35
2.6 构建软件测试的结构化方法 36
2.6.1 需求 38
2.6.2 设计 38
2.6.3 编程 38
2.6.4 测试 38
2.6.5 安装 39
2.6.6 维护 39
2.7 制定测试策略 39
2.7.1 使用工作表2-1 41
2.7.2 使用工作表2-2 41
2.8 小结 42
第3章 创建软件测试过程 45
3.1 软件测试指导原则 45
3.1.1 指导原则1:测试应该降低软件开发风险 46
3.1.2 指导原则2:应该有效地进行测试 46
3.1.3 指导原则3:测试应该能揭示缺陷 46
3.1.4 指导原则4:应该使用业务逻辑进行测试 47
3.1.5 指导原则5:在整个开发生命周期中都应该进行测试 48
3.1.6 指导原则6:应该要测试结构和功能 49
3.2 工作台的概念 51
3.3 定制软件测试过程 53
3.3.1 确定测试策略的目标 53
3.3.2 确定开发项目的类型 54
3.3.3 确定软件系统的类型 54
3.3.4 确定项目范围 55
3.3.5 标识软件风险 55
3.3.6 确定应该何时进行测试 57
3.3.7 定义系统测试计划的标准 57
3.3.8 定义单元测试计划的标准 59
3.3.9 将测试策略转换成测试战略 60
3.4 过程预备检查表 62
3.5 小结 62
第4章 选择和安装软件测试工具 75
4.1 将工具结合到测试人员的作业过程中 75
4.2 可用于测试软件的工具 76
4.3 选择和使用测试工具 78
4.3.1 匹配工具和它的使用 79
4.3.2 选择适合于其生命周期阶段的工具 79
4.3.3 匹配工具和测试人员的技能水平 81
4.3.4 选择可负担的工具 84
4.4 培训测试人员使用工具 85
4.5 任命工具经理 85
4.5.1 创建工具经理职位的先决条件 86
4.5.2 选择工具经理 87
4.5.3 分配工具经理任务 87
4.5.4 限制工具经理的任期 88
4.6 小结 88
第5章 培养软件测试人员的能力 92
5.1 CBOK的定义 92
5.2 负责培养软件测试人员能力的人员 93
5.3 如何将个人能力用于工作绩效中 93
5.4 制定培训课程 95
5.5 小结 96
第Ⅲ部分 七步测试过程 111
第6章 软件测试过程综述 111
6.1 分步过程的优点 111
6.2 计算机测试的成本 112
6.2.1 对改正缺陷的成本进行限定 112
6.2.2 降低测试成本 113
6.3 七步软件测试过程 113
6.3.1 七步过程的目的 115
6.3.2 定制七步过程 116
6.3.3 管理七步过程 117
6.3.4 在七步过程中使用测试人员工作台 118
6.4 工作台技能 118
6.5 小结 119
第7章 第1步:软件测试的组织 120
7.1 目标 120
7.2 工作台 120
7.3 输入 121
7.4 实施规程 121
7.4.1 任务1:任命测试经理 122
7.4.2 任务2:指明测试的范围 122
7.4.3 任务3:组建测试小组 122
7.4.4 任务4:验证开发文档 125
7.4.5 任务5:测试估算和项目状态汇报过程的验证 132
7.5 检查规程 145
7.6 输出结果 145
7.7 小结 146
第8章 第2步:测试计划的开发 151
8.1 概述 151
8.2 目标 151
8.3 关注问题 152
8.4 工作台 152
8.5 输入 153
8.6 实施规程 153
8.6.1 任务1:勾勒软件项目的蓝图 154
8.6.2 任务2:了解项目的风险 156
8.6.3 任务3:选择测试技术 161
8.6.4 任务4:计划的单元测试与分析 171
8.6.5 任务5:构建测试计划 178
8.6.6 任务6:检视测试计划 186
8.7 检查规程 191
8.8 输出 191
8.9 指导原则 192
8.10 小结 192
第9章 第3步:验证测试 208
9.1 概述 208
9.2 目标 210
9.3 关注方面 210
9.4 工作台 211
9.5 输入 211
9.5.1 需求阶段 211
9.5.2 设计阶段 212
9.5.3 编程阶段 212
9.6 实施规程 213
9.6.1 任务1:需求阶段的测试 213
9.6.2 任务2:设计阶段的测试 225
9.6.3 任务3:编程阶段的测试 230
9.7 检查规程 236
9.8 输出 236
9.9 指导原则 237
9.10 小结 237
第10章 第4步:确认测试 297
10.1 概述 297
10.2 目标 297
10.3 关注方面 298
10.4 工作台 298
10.5 输入 299
10.6 实施规程 299
10.6.1 任务1:建立测试数据 299
10.6.2 任务2:执行测试 311
10.6.3 任务3:记录测试结果 313
10.7 检查规程 315
10.8 输出 315
10.9 指导原则 315
10.10 小结 316
第11章 第5步:分析和报告测试结果 331
11.1 概述 331
11.2 关注方面 332
11.3 工作台 332
11.4 输入 332
11.4.1 测试计划和项目计划 333
11.4.2 预期的处理结果 333
11.4.3 测试期间收集的数据 333
11.4.4 存储测试期间收集的数据 334
11.5 实现规程 334
11.5.1 任务1:报告软件状态 334
11.5.2 任务2:报告中间测试结果 340
11.5.3 任务3:报告最终的测试结果 347
11.6 检查规程 349
11.7 输出 349
11.8 指导原则 349
11.9 小结 350
第12章 第6步:验收和操作测试 354
12.1 概述 354
12.2 目标 355
12.3 关注方面 355
12.4 工作台 356
12.5 输入规程 357
12.5.1 任务1:验收测试 358
12.5.2 任务2:操作前测试 366
12.5.3 任务3:操作后测试 370
12.6 检查规程 376
12.7 输出 376
12.7.1 应用程序中的自动化部分是否可接受? 377
12.7.2 应用程序自动化部分测试失败通知 377
12.7.3 手动部分是否可接受? 377
12.7.4 培训失败通知单 378
12.8 指导原则 378
12.9 小结 379
第13章 实现后分析 405
13.1 概述 405
13.2 关注方面 405
13.3 工作台 406
13.4 输入 407
13.5 实施规程 407
13.5.1 任务1:建立评估目标 407
13.5.2 任务2:标识度量的内容 407
13.5.3 任务3:分配度量职责 408
13.5.4 任务4:选择评价的方法 408
13.5.5 任务5:标识所需的事实 408
13.5.6 任务6:收集评价数据 409
13.5.7 任务7:评估测试的有效性 409
13.6 检查规程 412
13.7 输出 412
13.8 指导原则 412
13.9 小结 412
第Ⅳ部分 集成专门的测试职责 417
第14章 软件开发方法 417
14.1 需要的测试数量 417
14.1.1 软件开发方法 417
14.1.2 定义需求 422
14.1.3 方法成熟度 424
14.1.4 所需能力 426
14.1.5 职员经验 427
14.1.6 配置管理控制 428
14.1.7 配置标识 430
14.1.8 配置控制 431
14.2 测量软件开发过程的影响 431
14.3 小结 432
第15章 测试客户端/服务器系统 435
15.1 概述 435
15.2 关注方面 436
15.3 工作台 437
15.4 输入 437
15.5 实施规程 437
15.5.1 任务1:评估准备程度 437
15.5.2 任务2:评估关键组件 443
15.5.3 任务3:评估客户端需求 444
15.6 检查过程 445
15.7 输出 445
15.8 指导原则 445
15.9 小结 445
第16章 测试快速应用开发系统 451
16.1 概述 451
16.2 目标 451
16.3 关注方面 452
16.3.1 测试迭代 452
16.3.2 测试组件 452
16.3.3 测试性能 452
16.3.4 记录测试信息 452
16.4 工作台 453
16.5 输入 453
16.6 实施规程 454
16.6.1 迭代RAD内的测试 454
16.6.2 螺旋测试 455
16.6.3 任务1:确定RAD的适合度 455
16.6.4 任务2:测试计划迭代 456
16.6.5 任务3:测试后续计划迭代 457
16.6.6 任务4:测试最终计划迭代 458
16.7 检查规程 458
16.8 输出 458
16.9 指导原则 458
16.10 小结 459
第17章 测试内部控制 465
17.1 概述 465
17.2 内部控制系统 466
17.2.1 控制目标 466
17.2.2 预防性控制系统 467
17.2.3 检测性控制系统 470
17.2.4 纠正性控制系统 472
17.2.5 成本/收益分析 473
17.3 评估内部控制 473
17.3.1 任务1:了解正在测试的系统 474
17.3.2 任务2:确定风险 474
17.3.3 任务3:审查应用程序控制 474
17.3.4 任务4:测试应用程序控制 475
17.3.5 任务5:文档控制的优势和劣势 481
17.4 质量控制检查表 482
17.5 小结 482
第18章 测试COTS和外包软件 486
18.1 概述 486
18.2 COTS软件的优势、劣势和风险 487
18.2.1 COTS与外包软件 487
18.2.2 COTS优势 487
18.2.3 COTS劣势 488
18.2.4 实施风险 488
18.2.5 测试COTS软件 489
18.2.6 测试外包软件 490
18.3 目标 490
18.4 关注方面 491
18.5 工作台 491
18.6 输入 492
18.7 实施规程 492
18.7.1 任务1:测试是否满足业务需求 492
18.7.2 任务2:测试是否满足运行需求 494
18.7.3 任务3:测试是否满足用户需求 498
18.7.4 任务4:验收——测试软件过程 498
18.7.5 修改外包软件的测试过程 500
18.8 检查规程 500
18.9 输出 501
18.10 指导原则 501
18.11 小结 501
第19章 多平台环境下的测试 506
19.1 概述 506
19.2 目标 506
19.3 关注方面 506
19.4 多平台环境下的测试背景 507
19.5 工作台 507
19.6 输入 508
19.7 实施规程 508
19.7.1 任务1:定义平台配置涉及的问题 509
19.7.2 任务2:列出所需平台配置 510
19.7.3 任务3:评估试验室配置 510
19.7.4 任务4:列出受平台影响的结构组件 510
19.7.5 任务5:列出受平台影响的接口 512
19.7.6 任务6:执行测试 512
19.8 检查规程 512
19.9 输出 512
19.10 指导原则 513
19.11 小结 513
第20章 测试软件系统安全性 517
20.1 概述 517
20.2 目标 517
20.3 关注方面 518
20.4 工作台 518
20.5 输入 519
20.6 漏洞出现的位置 519
20.7 实施规程 521
20.7.1 任务1:建立安全基线 521
20.7.2 任务2:构建渗透点矩阵 529
20.7.3 任务3:分析安全测试结果 535
20.8 评估安全措施是否充分 536
20.9 检查过程 537
20.10 输出 537
20.11 指导原则 537
20.12 小结 537
第21章 测试数据仓库 539
21.1 概述 539
21.2 关注方面 539
21.3 工作台 540
21.4 输入 541
21.5 实施规程 541
21.5.1 任务1:度量数据仓库问题的严重性 541
21.5.2 任务2:标识要测试的数据仓库活动过程 542
21.5.3 任务3:测试数据仓库活动过程的充分性 545
21.6 检查规程 550
21.7 输出 550
21.8 指导原则 550
21.9 小结 550
第22章 测试基于Web的系统 558
22.1 概述 558
22.2 关注方面 559
22.3 工作台 559
22.4 输入 560
22.5 实施规程 560
22.5.1 任务1:选中应纳入测试计划的基于Web的风险 560
22.5.2 任务2:选择基于Web的测试 564
22.5.3 任务3:选择基于Web的测试工具 565
22.5.4 任务4:测试基于Web的系统 565
22.6 检查规程 566
22.7 输出 566
22.8 指导原则 566
22.9 小结 566
第Ⅴ部分 将敏捷性融入到测试过程中 573
第23章 使用敏捷方法改善软件测试 573
23.1 敏捷的重要性 573
23.2 构建敏捷测试过程 574
23.3 制约敏捷的因素 574
23.4 改善的必要性 575
23.5 压缩时间 576
23.5.1 难题 577
23.5.2 解决方案 577
23.5.3 度量准备工作 578
23.5.4 由7个步骤组成的过程 579
23.6 小结 579
第24章 将敏捷性融入到测试过程中 581
24.1 步骤1:度量软件过程的可变性 581
24.1.1 时间轴 581
24.1.2 过程步骤 582
24.1.3 改进购物列表 588
24.1.4 质量控制检查表 588
24.1.5 结论 589
24.2 步骤2:最大化最佳实践 589
24.2.1 测试人员的敏捷性 589
24.2.2 改进购物列表 599
24.2.3 质量控制检查表 600
24.2.4 结论 600
24.3 步骤3:建筑优势,削弱劣势 600
24.3.1 有效测试过程 600
24.3.2 劣质测试过程 602
24.3.3 改进购物列表 602
24.3.4 质量控制检查表 603
24.3.5 结论 603
24.4 步骤4:标识和打破前进壁垒 603
24.4.1 利益相关者的观点 603
24.4.2 棘手问题和热点问题 605
24.4.3 人员能力壁垒 605
24.4.4 管理/组织壁垒 606
24.4.5 确定壁垒/障碍的根本原因 607
24.4.6 解决壁垒/障碍的根源 607
24.4.7 质量控制检查表 608
24.4.8 结论 609
24.5 步骤5:标识和解决文化及交流壁垒 609
24.5.1 管理文化 609
24.5.2 文化壁垒 615
24.5.3 开放和有效的沟通 616
24.5.4 质量控制检查表 619
24.5.5 结论 619
24.6 步骤6:确定可实现的改进 619
24.6.1 什么是可实现? 619
24.6.2 确定可通过时间压缩实现的思路 620
24.6.3 排列可实现思路的优先级 622
24.6.4 记录方法 623
24.6.5 质量控制检查表 623
24.6.6 结论 623
24.7 步骤7:制定和执行实施计划 624
24.7.1 质量控制检查表 626
24.7.2 结论 626
24.8 小结 626