开始之前 1
第1章 绪论 1
1.1计算机系统中软件的可靠性问题 1
1.2软件测试与软件可靠性 4
1.3软件测试的发展历史、现状和展望 5
小结 8
习题 8
第2章 软件测试基础 10
2.1软件测试的基本概念 10
软件测试的目的 10
软件测试的定义 10
软件测试涉及的关键问题 12
软件测试与软件质量保证 13
2.2软件故障 13
故障的定义 14
软件故障的分类 14
软件故障的修复代价 16
2.3测试的复杂性与经济性 17
2.4测试的充分性问题 20
2.5测试原则 21
2.6停止测试的标准 25
五类常用的停止测试标准 25
第四类停止测试标准 26
小结 27
习题 28
第3章 软件测试策略 30
3.1软件开发过程及模型 30
软件开发过程 30
软件开发模型 31
3.2软件测试过程 33
单元测试 34
集成测试 35
确认测试 36
系统测试 36
验收测试 37
3.3软件测试与软件开发的关系 38
软件测试过程模型 39
软件测试生存周期 40
3.4黑盒测试与白盒测试 41
黑盒测试 41
白盒测试 42
黑盒测试与白盒测试的比较 43
灰盒测试 44
3.5静态测试与动态测试 45
3.6验证测试与确认测试 46
3.7回归测试和随机测试 47
回归测试 47
随机测试 48
3.8软件测试方法的分类及选择 48
软件测试方法的分类 48
软件测试方法的选择 49
3.9测试环境的搭建 49
小结 50
习题 51
第4章 黑盒测试 53
4.1 3个被测程序 53
三角形问题 53
NextDate函数 53
佣金问题 54
4.2等价类划分测试 54
等价类划分 55
常见的等价类划分测试形式 57
等价类划分测试举例 58
等价类划分测试的指导方针 62
4.3边界值分析 63
边界条件 63
次边界条件 64
边界值分析测试 65
稳健性测试 66
边界值分析举例 66
边界值分析的局限性 68
4.4决策表测试 69
决策表 69
决策表在黑盒测试中的应用 72
决策表测试的指导方针 76
4.5其他黑盒测试方法 77
因果图 77
特殊值测试 79
故障猜测法 79
4.6黑盒测试的效率 80
小结 82
习题 82
第5章 白盒测试 84
5.1程序控制流图 84
5.2逻辑覆盖测试 85
语句覆盖 85
判定覆盖 86
条件覆盖 87
判定/条件覆盖 88
路径覆盖 88
5.3路径分析与测试 89
程序路径表示 89
程序中线性独立路径数的计算 91
Z路径覆盖 92
独立路径测试及测试用例生成 93
5.4 数据流测试 94
数据流分析 94
定义和使用测试 96
5.5符号测试 102
5.6域测试策略 105
5.7程序变异 107
程序强变异 107
程序弱变异 109
5.8程序插装 110
小结 112
习题 112
第6章 软件测试技术 114
6.1单元测试 114
单元测试的任务 114
单元测试的环境 116
单元测试的策略 117
单元测试用例的设计 118
6.2集成测试 118
集成测试概述 119
集成测试与单元测试的区别 120
集成测试的策略 121
集成测试用例的设计 128
6.3系统测试 131
系统测试的任务 131
系统测试与单元测试的区别 131
系统测试与集成测试的区别 131
系统测试方法 132
系统测试用例的设计 143
小结 143
习题 144
第7章 验证测试和确认测试 146
7.1验证的基本方法 146
软件审查 146
走查 148
伙伴检查 148
建议 148
7.2验证活动 149
审查单 149
需求验证 150
功能设计验证 151
详细设计验证 151
代码验证 152
7.3通用代码审查单 152
7.4确认测试 155
确认测试的任务 155
确认测试策略 156
确认测试活动 157
累进测试和回归测试 160
测试执行 160
小结 161
习题 162
第8章 测试计划与测试文档 164
8.1软件测试计划 164
8.2软件测试文档 165
8.3主测试计划 166
8.4验证测试计划 167
制定验证测试计划 167
验证测试执行报告 168
8.5确认测试计划 168
制定确认测试计划 169
测试结构设计 170
详细测试设计 170
测试执行和事故报告 173
8.6测试评估 175
8.7用户手册 177
8.8 IEEE/ANSI测试文档概述 177
8.9软件生存周期各阶段的测试任务与可交付的文档 178
需求阶段 178
功能设计阶段 178
详细设计阶段 179
编码阶段 179
测试阶段 180
运行和维护阶段 180
小结 180
习题 181
第9章 面向对象的软件测试 183
9.1面向对象的概念 183
对象 183
消息 183
接口 184
类 184
继承 184
动态绑定 184
9.2面向对象软件测试与传统软件测试的区别 185
9.3面向对象的软件测试 186
9.4类测试 187
9.5面向对象的集成测试 192
小结 194
习题 194
第10章 软件测试实例分析 195
10.1一元二次方程求解程序测试分析 195
问题描述 195
程序实现 196
测试方法选择 197
测试用例设计 197
10.2考生录取程序测试分析 200
问题描述 201
程序实现 201
测试方法选择和测试用例设计 202
小结 205
习题 205
第11章 软件测试自动化和测试工具 207
11.1测试与测试自动化 207
11.2测试工具 207
白盒测试工具 207
黑盒测试工具 209
测试设计和开发工具 210
测试执行和评估工具 210
测试管理工具 211
测试工具的选择 211
11.3目前市场上主流的测试工具 212
MI公司的测试工具 213
IBM Rational公司的测试工具 214
Compuware公司的测试工具 215
其他测试工具 216
11.4测试自动化和测试工具的评价 218
测试自动化和测试工具的长处 218
测试自动化和测试工具存在的问题 219
11.5白盒测试工具——DevPartner 220
DevPartner简介 220
DevPartner的安装 222
静态代码审查模块Code Review 224
错误检测模块Error Detection 228
内存分析模块Memory Analysis 232
代码覆盖率分析模块Coverage Analysis 236
性能分析模块Performance Analysis 239
从命令行运行DevPartner 241
小结 242
习题 242
第12章 软件质量保证及测试职业指导 244
12.1软件质量保证 244
软件质量保证概述 244
软件测试管理方法 246
测试的组织方式 248
软件能力成熟度模型(CMM) 250
ISO 9000标准 251
12.2软件测试职业指导 252
软件测试职位 253
优秀软件测试工程师应具备的素质 253
软件测试信息资源 255
小结 257
附录A 软件工程和软件测试标准 259
A.1主要软件测试标准 259
A.2其他与软件测试有关的标准 259
A.3其他的软件工程标准 260
附录B 软件测试会议和期刊 262
B.1软件测试会议 262
B.2有关软件测试的期刊 263
参考文献 264
参考网站 267