目录 2
第1部分 软件测试的原理 2
第1章 软件及其开发过程 2
1.1 软件的含义 2
1.2 软件开发过程的特性 3
1.2.1 软件开发的基本过程 4
1.2.2 软件开发过程模型 5
1.2.3 UML代表着软件建模的发展趋势 11
1.3 软件测试的重要性 13
1.3.1 软件所带来的悲剧 14
1.3.2 其他一些例子 15
1.3.3 测试是软件开发重要环节之一 17
小结 18
思考题 19
第2章 软件测试的基本概念和方法 20
2.1 软件质量就是客户的满意度 20
2.1.1 质量的概念 20
2.1.2 软件质量的内涵 21
2.2 软件缺陷(bug)是什么 24
2.2.1 软件缺陷的定义和种类 25
2.2.2 软件缺陷的产生 26
2.2.3 软件缺陷的构成 27
2.2.4 修复软件缺陷的代价 28
2.3 软件测试的基本方法 29
2.3.1 软件测试的原则 29
2.3.2 白盒测试和黑盒测试 31
2.3.3 静态的和动态的方法 32
2.3.4 验证和确认(Verification Validation) 33
2.3.5 ALAC测试 34
2.3.7 软件测试的误区 35
2.3.6 自动化测试和随机测试 35
2.4 软件测试的分类和阶段 37
2.4.1 测试的分类 37
2.4.2 测试的阶段 39
2.5 软件测试的工作范畴 43
2.5.1 测试计划制定 43
2.5.2 设计测试用例 46
2.5.3 执行测试 46
2.5.4 测试结果分析和质量报告 47
小结 48
思考题 49
3.1 软件质量保证 50
3.1.1 SQA概述 50
3.1.2 SQA活动 50
第3章 质量保证与测试策略 50
3.1.3 SQA与软件测试的关系 53
3.2 测试策略 53
3.2.1 测试策略的概念 53
3.2.2 影响测试策略的因素 54
3.2.3 测试策略的确定 55
3.3.1 制定有效的测试计划 56
3.3 测试计划 56
3.3.2 通用测试计划模板 58
3.4 软件质量的可靠性评估 60
3.4.1 软件可靠性评估概述 60
3.4.2 软件可靠性模型 61
3.4.3 可靠性评估过程 62
小结 63
思考题 63
4.1 软件质量标准 64
4.1.1 ISO质量体系标准简介 64
第4章 软件测试依据和规范 64
4.1.2 ISO/GB软件质量体系标准 65
4.1.3 ISO9000-3介绍 67
4.2 软件测试规范 70
4.2.1 概述 70
4.2.2 软件测试规范 70
4.3 CMM思想和结构体系 75
4.3.1 CMM的历史 75
4.3.2 CMM的五个等级及关键过程域 75
4.3.3 CMM与ISO9001思想及结构体系的关系 79
4.4 建立软件测试管理和评判体系 80
小结 82
思考题 83
第2部分 软件测试的技术 86
第5章 单元测试 86
5.1 什么是单元测试 86
5.1.1 单元测试的定义 86
5.1.2 为何要进行单元测试 86
5.2 单元测试的目标和任务 87
5.2.1 单元测试的目标 87
5.2.2 单元测试任务 88
5.3.1 编码的标准和规范 90
5.3 静态测试技术的运用 90
5.3.2 走查 93
5.3.3 审查 94
5.3.4 评审 97
5.4 动态测试技术的运用 97
5.4.1 白盒测试方法 98
5.4.2 黑盒测试方法 98
5.5 调试与评估 100
5.6 单元测试的过程与文档管理 101
5.7 单元测试的常用工具简介 103
小结 104
思考题 104
第6章 集成测试和系统测试 105
6.1 系统集成的模式与方法 105
6.1.1 集成测试前的准备 105
6.1.2 集成测试的模式 106
6.1.3 自顶向下和自底向上集成方法 107
6.1.4 大棒与三明治集成方法 109
6.1.5 持续集成 110
6.2.1 功能测试的目的和内容 111
6.2 功能测试 111
6.2.2 功能测试的方法 112
6.3 系统测试 115
6.3.1 系统测试的内容 116
6.3.2 回归测试 117
6.4 压力测试、容量测试和性能测试 119
6.4.1 压力测试 119
6.4.2 容量测试 120
6.4.3 性能测试 121
6.5 安全性、可靠性和容错性测试 122
6.5.1 安全性测试 123
6.5.2 可靠性测试 124
6.5.3 容错性测试 125
小结 127
思考题 128
第7章 验收测试 129
7.1 验收测试的过程和主要内容 129
7.2 产品规格说明书的验证 130
7.2.1 产品规格说明书的审核 130
7.2.2 产品说明书的验证 131
7.3 用户界面和可用性测试 131
7.4 兼容性测试 134
7.5 可安装性和可恢复性测试 135
7.6 文档测试 137
7.6.1 文档的种类 138
7.6.2 文档测试的重要性 139
7.6.3 怎样进行文档测试 139
7.7 验收测试报告和用户验收测试 140
小结 140
思考题 141
8.1 面向对象软件的特点 142
第8章 面向对象软件的测试 142
8.2 面向对象测试的层次与数据流 146
8.2.1 类与子类的测试 146
8.2.2 分层与增量 147
8.2.3 面向对象层次结构测试重点 147
8.3 面向对象的单元测试 149
8.3.1 面向对象软件测试与传统软件的不同 149
8.3.2 类测试 149
8.4 面向对象的集成测试 153
8.4.1 对象交互 153
8.4.2 面向对象集成测试的常用方法 154
8.4.3 分布式对象测试 155
小结 156
思考题 157
第9章 基于应用服务器的测试 158
9.1 应用服务器的分类和特征 158
9.1.1 应用服务器的分类 158
9.1.2 C/S和B/S结构描述 159
9.1.3 三层和多层结构 159
9.2 基于Web服务器应用的测试 161
9.2.1 常用的Web元素功能测试 161
9.2.2 Web安全性测试 163
9.3.1 数据库服务器性能测试 164
9.2.3 Web负载测试 164
9.3 基于数据库应用服务器的测试 164
9.3.2 数据库并发控制测试 166
9.4 基于J2EE平台的测试 168
9.4.1 J2EE概述 168
9.4.2 基于J2EE应用的单元测试技术 171
9.4.3 实用对象的单元测试 175
9.4.4 事务对象的单元测试 177
9.4.5 Servlet的单元测试 179
9.5 其他应用服务器应用的测试 181
9.4.6 JSP单元测试 181
9.4.7 数据库访问层的单元测试 181
小结 182
第10章 软件本地化测试 183
10.1 什么是软件本地化 183
10.1.1 软件本地化与国际化 184
10.1.2 软件本地化与翻译 184
10.1.3 软件本地化基本步骤 185
10.1.4 软件本地化测试 186
10.2 软件本地化的翻译问题 187
10.3.2 数据格式 189
10.3 软件本地化测试的技术问题 189
10.3.1 字符集问题 189
10.3.3 页面显示和布局 194
10.3.4 配置和兼容性问题 196
10.4 本地化测试的重点 197
10.4.1 翻译所产生的问题 197
10.4.2 功能的实现 198
10.4.3 对本地化测试人员的要求 199
小结 199
思考题 200
第11章 软件测试自动化 201
11.1 测试自动化的内涵 201
11.1.1 软件测试自动化的意义 201
11.1.2 自动化测试的引入和应用 203
11.1.3 测试自动化的基本结构 204
11.1.4 测试自动化的原理和方法 205
11.1.5 测试自动化普遍存在的问题 207
11.2 测试工具的分类和选择 209
11.2.1 测试工具的分类 209
11.2.2 测试工具的选择 210
11.3 测试工具的主流产品介绍 214
11.3.1 面向开发的单元测试工具 214
11.3.2 负载和性能测试工具 216
11.3.3 GUI功能测试工具 217
11.3.4 基于Web应用的测试工具 217
11.3.5 软件测试管理和其他工具 219
11.4 IBM-Rational产品的整体解决方案 221
11.4.1 Rational测试产品结构 221
11.4.2 Rational全套测试解决方案的特点 222
11.5.1 MI产品结构 224
11.5 Mercury Interactive产品的整体解决方案 224
11.5.2 MI3个重量级产品的介绍 225
11.6 Compuware产品的整体解决方案 228
11.6.1 Compuware产品结构 228
11.6.2 Compuware分阶段解决方案 229
小结 232
思考题 233
12.1 测试团队的地位和责任 236
12.1.1 软件测试团队的任务 236
第12章 组织和管理测试团队 236
第3部分 软件测试的实践 236
12.1.2 测试团队的规模 238
12.2 测试团队的构成 239
12.2.1 测试团队的基本构成 239
12.2.2 测试人员的责任 240
12.2.3 测试团队的组织模型 244
12.3 如何从零开始 245
12.3.1 建立测试团队的正确观念 245
12.3.2 测试人员的招聘 247
12.3.3 测试新人的培训 253
12.4.1 树立良好的测试团队意识 254
12.4 测试团队的管理和发展 254
12.4.2 测试团队的激励方法 256
12.4.3 从PSP到TSP 258
12.4.4 知识共享和在岗培训 260
12.5 优秀软件测试工程师的必备素质 262
小结 264
思考题 265
第13章 测试环境的建立 266
13.1 测试环境的重要性 266
13.2.1 产品的使用环境对测试环境的影响 267
13.2 测试环境的各要素 267
13.2.2 主测试环境与辅测试环境 268
13.2.3 测试环境的五要素 268
13.3 建立测试实验室 270
13.3.1 建立测试实验室的必要性 271
13.3.2 选择和规划实验室 272
13.3.3 集成和配置测试设备 273
13.4 测试环境的维护和管理 274
小结 275
思考题 275
14.1.1 测试用例的重要性 276
14.1 测试用例设计概述 276
第14章 软件测试用例的设计 276
14.1.2 测试用例设计书写标准 277
14.1.3 测试用例设计考虑因素 279
14.1.4 测试用例设计的基本原则 282
14.2 白盒测试用例设计方法 283
14.2.1 逻辑覆盖法 283
14.2.2 基本路径测试法 288
14.3.1 等价类划分法 289
14.3 黑盒测试用例设计方法 289
14.3.2 边界值分析法 291
14.3.3 因果图法 293
14.3.4 错误推测法 293
14.3.5 功能图法 294
14.4 测试用例的组织和跟踪 296
14.4.1 组织测试用例 296
14.4.2 跟踪测试用例 299
14.4.3 维护测试用例 301
小结 303
思考题 303
14.4.4 测试用例的覆盖率 303
第15章 报告所发现的软件缺陷 304
15.1 软件缺陷的描述 304
15.1.1 软件缺陷的基本描述 304
15.1.2 软件缺陷属性 305
15.2 软件缺陷相关的信息 308
15.2.1 软件缺陷的图片、记录信息 308
15.2.2 分离和再现软件缺陷 309
15.3 软件缺陷的处理和跟踪 311
15.3.1 软件缺陷生命周期 312
15.3.2 软件缺陷处理技巧 313
15.3.3 软件缺陷跟踪系统 313
15.3.4 缺陷跟踪的方法和图表 317
小结 319
思考题 319
第16章 软件测试和质量分析报告 321
16.1 软件产品的质量度量 321
16.1.1 软件度量的内容和分类 322
16.1.2 软件度量的分工和过程 324
16.1.3 软件质量模型 325
16.1.5 质量度量的统计方法 327
16.1.4 软件质量的度量 327
16.2 评估系统测试的覆盖程度 329
16.2.1 对软件需求的估算 330
16.2.2 基于需求的测试覆盖评估 330
16.2.3 基于代码的测试覆盖评估 331
16.3 软件缺陷分析方法 331
16.3.1 缺陷分布报告 332
16.3.2 缺陷趋势报告 333
16.4 基于缺陷分析的产品质量评估 334
16.4.1 经典的种子公式 335
16.4.2 基于缺陷清除率的估算方法 336
16.4.3 软件产品性能评估 337
16.4.4 借助工具的方法 337
16.5 测试报告的模板、实例 337
小结 340
思考题 341
第17章 软件测试项目管理 342
17.1 软件测试项目管理的概述 342
17.1.1 软件项目管理的共性 343
17.1.2 软件测试项目管理的特点 345
17.2 软件测试项目的组织 346
17.3 软件测试项目的过程管理 349
17.3.1 测试计划阶段 350
17.3.2 软件测试设计和开发 353
17.3.3 测试执行阶段 355
17.4 软件测试项目的资源管理 358
17.5 测试项目的进度管理 360
17.5.1 测试项目的里程碑和关键路径 360
17.5.2 测试项目进度的特性及外在关系 362
17.5.3 测试项目进度的管理方法和工具 364
17.6 测试项目的风险管理 368
17.7 测试项目的质量和配置管理 370
17.8 软件测试文档的管理 371
小结 373
思考题 374
附录A 软件测试的英文术语及中文解释 375
附录B 质量管理体系——要求(国家标准GB/T 19001-2000,Idt ISO9001∶2000) 391
附录C 信息技术——软件包质量要求和测试(国家标准GB/T 17544—1998,Idt ISO/IEC 12119∶1994) 402
附录D 测试计划模板 413
附录E C++Inspection Checklist 425
附录F Java Code Inspection Checklist 428
参考文献 431