第1章 软件测试基础 1
1.1 简介 1
1.2 软件开发生命周期中的测试 1
1.2.1 软件开发生命周期模型 2
1.2.1.1 顺序模型 2
1.2.1.2 增量迭代模型 6
1.2.1.3 模型中的测试 11
1.2.2 软件测试级别 12
1.2.2.1 组件测试 13
1.2.2.2 集成测试 16
1.2.2.3 系统测试 21
1.2.2.4 验收测试 22
1.2.2.5 维护测试 23
1.3 特定系统 24
1.3.1 综合系统 24
1.3.2 安全关键系统 28
1.4 度量和测度 32
1.4.1 测度的意义和要求 34
1.4.1.1 测度的意义 34
1.4.1.2 测度的要求 38
1.4.2 基本过程 40
1.4.2.1 确立和维持测度承诺 42
1.4.2.2 计划测度过程 42
1.4.2.3 实施测度过程 45
1.4.2.4 评估测度 46
1.4.3 度量数据应用 47
1.4.3.1 案例分析:测试用例设计进度 47
1.4.3.2 案例分析:测试用例执行进度 48
1.4.3.3 案例分析:测试的充分性 49
1.4.3.4 案例分析:产品发布准则 51
1.5 道德规范 53
1.6 小结 53
第2章 测试过程 55
2.1 简介 55
2.2 测试过程模型 56
2.3 测试计划和控制 57
2.3.1 主要活动 57
2.3.2 测试计划 62
2.3.3 测试执行进度 62
2.3.4 阶段度量指标 63
2.4 测试分析和设计 64
2.4.1 主要活动 64
2.4.2 阶段度量指标 65
2.5 测试实现和执行 66
2.5.1 主要活动 66
2.5.2 测试实现 68
2.5.2.1 测试规程规格说明 68
2.5.2.2 测试环境搭建 68
2.5.2.3 测试执行准备 72
2.5.3 测试执行 74
2.5.3.1 入口准则 74
2.5.3.2 测试结果比较 75
2.5.3.3 测试日志 76
2.5.3.4 确认测试和回归测试 76
2.5.4 阶段度量指标 77
2.6 评估出口准则和报告 78
2.6.1 主要活动 78
2.6.2 评估出口准则 78
2.6.3 测试报告 80
2.6.4 阶段度量指标 80
2.7 测试结束活动 81
2.7.1 主要活动 81
2.7.2 数据收集和分析 82
2.7.3 经验总结报告 83
2.8 小结 85
第3章 测试管理 86
3.1 简介 86
3.2 测试管理文档 89
3.2.1 测试方针 90
3.2.2 测试策略 91
3.2.3 主测试计划 92
3.2.3.1 介绍 93
3.2.3.2 详细内容 95
3.2.3.3 其他 96
3.2.4 级别测试计划 101
3.2.4.1 测试项和不测试项 102
3.2.4.2 测试的质量属性 103
3.2.4.3 测试时间进度 105
3.2.4.4 测试准则定义 105
3.2.4.5 测试风险 108
3.2.4.6 测试文档输出 109
3.2.4.7 角色和职责 109
3.2.5 级别测试设计规格说明 110
3.2.6 级别测试用例规格说明 111
3.2.7 级别测试规程规格说明 112
3.2.8 级别测试日志 113
3.2.9 异常报告 114
3.2.10 级别测试报告 116
3.2.11 主测试报告 117
3.3 测试计划裁减 118
3.4 测试估算 119
3.4.1 影响因素 122
3.4.2 基于百分比的方法 125
3.4.3 基于专家团队的方法 125
3.4.4 基于类似项目的方法 127
3.4.5 基于工作分解结构的方法 127
3.5 测试计划制定 128
3.5.1 尽早制定测试计划 128
3.5.2 测试计划的迭代 131
3.6 测试过程监控 133
3.6.1 风险 135
3.6.2 测试 138
3.6.2.1 案例分析:测试用例设计进度 138
3.6.2.2 案例分析:测试用例执行进度 139
3.6.3 覆盖率 141
3.6.3.1 案例分析:基于需求的测试覆盖率 141
3.6.3.2 案例分析:基于平台的测试覆盖率 142
3.6.4 缺陷 143
3.6.4.1 案例分析:缺陷发现阶段分布 143
3.6.4.2 案例分析:缺陷所属模块分布 144
3.6.4.3 案例分析:发现缺陷的测试类型分布 145
3.6.5 信心 146
3.6.5.1 案例分析:测试发现缺陷状态变化 146
3.6.5.2 案例分析:测试用例通过率 147
3.7 测试商业价值 148
3.7.1 预防成本 149
3.7.2 检测成本 149
3.7.3 内部失效成本 150
3.7.4 外部失效成本 150
3.8 分布式测试、外包测试和内包测试 155
3.8.1 分布式测试 155
3.8.2 外包测试 156
3.8.3 内包测试 157
3.8.4 风险 158
3.9 基于风险的测试 161
3.9.1 什么是基于风险的测试 161
3.9.1.1 风险的定义 161
3.9.1.2 产品风险和项目风险 162
3.9.1.3 基于风险的测试策略 163
3.9.2 风险管理过程 168
3.9.2.1 风险识别 169
3.9.2.2 风险分析 175
3.9.2.3 风险应对 177
3.9.2.4 ISO/IEC 16805 182
3.9.3 风险管理实践 189
3.9.4 基于风险的测试方法 191
3.9.4.1 作用和优点 192
3.9.4.2 基于FMEA的测试 197
3.9.4.3 注意点和误区 206
3.10 失效模式和影响分析 207
3.10.1 什么是FMEA 208
3.10.2 应用领域 211
3.10.2.1 产品 212
3.10.2.2 过程 213
3.10.3 实现步骤 213
3.10.3.1 了解分析对象 215
3.10.3.2 识别失效模式 216
3.10.3.3 分析失效影响 217
3.10.3.4 确定严重程度 217
3.10.3.5 确定可能性 218
3.10.3.6 确定检测难度 218
3.10.3.7 分析潜在原因 219
3.10.3.8 计算风险优先级因子 219
3.10.3.9 确定处理优先级 219
3.10.3.10 采取应对措施 220
3.10.3.11 重新计算RPN 221
3.10.4 收益与成本 221
3.10.5 确定RPN 222
3.11 测试管理难题 223
3.11.1 探索性测试 223
3.11.1.1 什么是探索性测试 223
3.11.1.2 基于会话的测试管理 225
3.11.2 综合系统 226
3.11.3 安全关键系统 227
3.11.4 非功能性测试 228
3.12 小结 231
第4章 评审 233
4.1 简介 233
4.2 基本原则 236
4.3 选择合适的评审类型 238
4.3.1 审查 238
4.3.2 技术评审 240
4.3.3 走查 240
4.3.4 非正式评审 241
4.3.5 管理评审和审计 242
4.3.6 特殊工作产品的评审 243
4.3.7 正式评审的开展 244
4.4 有效的评审过程 244
4.4.1 计划阶段 245
4.4.2 预备会阶段 247
4.4.3 个人准备阶段 247
4.4.4 评审会议阶段 248
4.4.5 返工阶段 249
4.4.6 跟踪结果阶段 249
4.5 评审成功因素 250
4.6 小结 252
第5章 缺陷管理 253
5.1 简介 253
5.2 缺陷发现阶段 255
5.3 缺陷生命周期 255
5.3.1 识别 256
5.3.2 调查 257
5.3.3 改正 258
5.3.4 总结 259
5.3.5 案例 260
5.4 缺陷要素 264
5.5 缺陷度量 266
5.5.1 缺陷发现进度 266
5.5.2 缺陷修复进度 267
5.5.3 缺陷优先级 268
5.5.4 缺陷严重程度 270
5.6 缺陷沟通 271
5.7 小结 277
第6章 标准和测试过程改进 278
6.1 简介 278
6.2 相关标准 278
6.2.1 标准的来源和有效性 278
6.2.2 国际标准 280
6.2.2.1 ISO 280
6.2.2.2 IEEE 281
6.2.3 国家标准 282
6.2.4 特定领域标准 283
6.2.4.1 航空电子系统 284
6.2.4.2 航天工业 285
6.2.4.3 食品与药物管理局 285
6.2.5 其他标准 285
6.3 测试改进过程 285
6.3.1 改进的方法 286
6.3.2 改进的类型 286
6.4 测试过程优化 287
6.5 TMM 288
6.5.1 成熟度等级 288
6.5.2 内部结构 291
6.5.3 评估模型 293
6.6 TPI 295
6.6.1 模型结构 295
6.6.2 评估过程 300
6.7 CTP 301
6.7.1 模型结构 301
6.7.2 评估模型 305
6.8 STEP 306
6.8.1 组成 306
6.8.2 架构 307
6.8.3 活动时序 308
6.8.4 工作产品 309
6.8.5 角色和职责 309
6.9 CMMI 310
6.9.1 模型组成 310
6.9.1.1 表述方式 311
6.9.1.2 过程域 313
6.9.1.3 评估方法 314
6.9.2 验证和确认 314
6.10 小结 316
第7章 测试工具与自动化 318
7.1 简介 318
7.2 测试工具的概念 318
7.2.1 成本效益和风险 319
7.2.2 测试工具策略 322
7.2.3 测试工具集成 323
7.2.4 脚本和脚本语言 324
7.2.5 测试准则 328
7.2.6 测试工具部署 330
7.2.6.1 工具引入的成本效益 331
7.2.6.2 工具选择 332
7.2.6.3 工具引入 332
7.2.7 开源测试工具 333
7.2.8 测试工具开发 335
7.3 测试工具分类 337
7.3.1 测试管理工具 338
7.3.2 测试执行工具 339
7.3.3 调试工具 341
7.3.4 错误传播和注入工具 342
7.3.5 模拟器与仿真器 343
7.3.6 静态和动态分析工具 343
7.3.6.1 静态分析工具 343
7.3.6.2 动态分析工具 344
7.3.7 关键字驱动测试自动化 345
7.3.8 性能测试工具 345
7.3.9 Web测试工具 346
7.4 小结 347
第8章 个人技能和团队构成 349
8.1 简介 349
8.2 个人技能 349
8.2.1 角色和职责 350
8.2.2 软技能 353
8.2.3 个人技能评估 356
8.3 团队能力 359
8.3.1 团队角色分类 360
8.3.2 案例:测试团队分析 361
8.3.3 测试团队优化 364
8.4 测试团队独立性 366
8.4.1 测试组织结构 366
8.4.2 测试外包 369
8.5 激励 370
8.5.1 激励方式 371
8.5.2 量化管理 376
8.6 沟通 377
8.6.1 正确对待缺陷 378
8.6.2 开发和测试的合作 378
8.7 小结 379
参考文献 381
附录A IGMP需求列表 383
示例:未来作战系统 25
示例:企业级存储设备 28
示例:美国食品和药物管理局对软件开发活动的要求 30
示例:安全关键系统组件 31
示例:Practical Software and Systems Measurement 33
示例:测试过程监控:测试执行进度 34
示例:测试过程改进 35
示例:测试团队激励 37
示例:系统测试执行入口准则 75
示例:编写测试设计规格说明的测试任务 95
示例:智能宽带接入服务器iBAS R1.0主测试计划 97
示例:iBAS R1.0 IGMP系统测试计划中对测试项和不测试项定义 103
示例:iBAS R1.0 IGMP系统测试计划中定义的IGMP系统测试需要覆盖的质量属性 104
示例:iBAS R1.0 IGMP系统测试的进度甘特图(部分) 105
示例:iBAS R1.0 IGMP系统测试计划中定义的系统测试各种测试准则 107
示例:iBAS R1.0 IGMP系统测试风险列表(部分) 108
示例:iBAS R1.0 IGMP系统测试中需要输出的文档 109
示例:iBAS R1.0 IGMP系统测试中定义的角色和职责 110
示例:iBAS R1.0项目中对自动化测试的计划 130
示例:iBAS R1.0项目测试计划对于自动化测试内容的迭代 132
示例:内部失效成本 150
示例:应用质量成本分析测试的投资回报 153
示例:风险应对和管理在iBAS R1.0项目IGMP功能中的应用 165
示例:风险问卷调查法 170
示例:风险模板 171
示例:失效模式分析的模拟场景 172
示例:下面是IGMP测试过程中,由于在早期没有有效地管理和监控“采购IGMP测试仪表”风险,而对后续测试执行导致的后果 190
示例:探索性测试 224
示例:“IGMP系统需求规格说明”评审邀请信 246
示例:IGMP系统需求规格说明审查收集的数据 249
示例:iBAS R1.0中针对IGMP功能提交的一个缺陷报告 265
示例:缺陷发现进度度量 266
示例:缺陷修复进度度量 267
示例:缺陷优先级度量 268
示例:缺陷严重程度度量 270
示例:中华人民共和国标准法的部分描述 279
示例:中华人民共和国标准法部分内容 280
示例:中国标准分类 282
示例:DO-178B中的软件生命周期数据 284
示例:TMM集成级中监控测试过程的子目标 291
示例:部分测试监控过程的ATRs 292
示例:验证活动的方法 315
示例:确认活动的对象和方法 316
示例:iBAS R1.0项目的自动化测试用例挑选标准 321
示例:TOOL COMMAND LANGUAGE 325
示例:针对“创建文件”的检查点 327
示例:开源测试工具 333
示例:iBAS项目自动化测试工具开发 335
示例:测试管理工具 339
示例:性能测试工具 346
示例:Selenium 347
示例:有效授权 372
示例:有效沟通 373
示例:提供学习和培训的机会 374
示例:尊重和认可 375
示例:物质奖励 375