第1章 绪论 1
1.1 计算机系统中软件的可靠性问题 1
1.2 软件测试与软件可靠性 2
1.3 软件测试的发展历史、现状和展望 4
小结 7
第1章习题 7
第2章 软件测试的实质 8
2.1 软件测试的基本概念 8
2.1.1 软件测试的目的 8
2.1.2 软件测试涉及的关键问题 11
2.1.3 软件测试与软件质量保证 12
2.2 软件故障 12
2.2.1 故障定义 12
2.2.2 软件故障分类 13
2.2.3 软件故障的修复费用 14
2.3 测试的复杂性与经济性 15
2.4 测试的充分性问题 18
2.5 测试原则 19
2.6 停止测试的标准 23
2.6.1 五类常用的停止测试标准 23
2.6.2 第四类停止测试标准 25
小结 26
第2章习题 27
第3章 软件测试策略 28
3.1 软件开发模型 28
3.2 软件测试过程 31
3.2.1 单元测试 32
3.2.2 集成测试 35
3.2.3 确认测试 36
3.2.4 系统测试 37
3.2.5 验收测试 37
3.3 黑盒测试与白盒测试 38
3.3.1 黑盒测试 39
3.3.2 白盒测试 40
3.3.3 黑盒测试与白盒测试的比较 40
3.4 静态测试与动态测试 42
3.5 验证测试与确认测试 44
小结 45
第3章习题 45
第4章 黑盒测试 46
4.1 3个被测程序 46
4.1.1 三角形问题 46
4.1.2 NextDate函数 47
4.1.3 雇佣金问题 47
4.2 等价类划分测试 48
4.2.1 等价类划分 48
4.2.2 常见的等价类划分测试形式 50
4.2.3 等价类划分测试举例 51
4.2.4 等价类划分测试的指导方针 56
4.3 边界值分析 57
4.3.1 边界条件 57
4.3.2 次边界条件 58
4.3.3 边界值分析测试 59
4.3.4 健壮性测试 61
4.3.5 边界值分析举例 61
4.3.6 边界值分析的局限性 64
4.4 决策表测试 64
4.4.1 决策表 64
4.4.2 决策表在黑盒测试中的应用 68
4.4.3 决策表测试的指导方针 72
4.5 其他黑盒测试方法 72
4.5.1 因果图 72
4.5.2 特殊值测试 75
4.5.3 故障猜测法 75
4.6 黑盒测试效率 76
小结 78
第4章习题 78
第5章 白盒测试 80
5.1 程序控制流图 80
5.2 逻辑覆盖 82
5.3 路径分析 86
5.3.1 程序路径表示 86
5.3.2 程序中路径数的计算 88
5.3.3 Z路径覆盖 90
5.3.4 独立路径测试 90
5.4 数据流测试 91
5.4.1 数据流分析 91
5.4.2 定义/使用测试 93
5.5 符号测试 100
5.6 域测试策略 102
5.7 程序变异 105
5.7.1 程序强变异 105
5.7.2 程序弱变异 107
5.8 程序插装 108
小结 110
第5章习题 110
第6章 集成测试与系统测试 112
6.1 集成测试 112
6.1.1 增式集成测试与非增式集成测试 112
6.1.2 自顶向下集成测试与自底向上集成测试 114
6.2 系统测试 119
6.2.1 性能测试 120
6.2.2 强度测试 120
6.2.3 安全性测试 120
6.2.4 恢复测试 120
6.2.5 安装测试 121
6.2.6 可靠性测试 121
6.2.7 配置测试 121
6.2.8 可用性测试 122
6.2.9 兼容性测试 124
6.2.10 文档资料测试 126
6.2.11 网站测试 128
小结 130
第6章习题 131
第7章 验证测试和确认测试 132
7.1 验证的基本方法 132
7.1.1 软件审查 133
7.1.2 走查 134
7.1.3 伙伴检查 135
7.1.4 建议 135
7.2 验证活动 136
7.2.1 审查单 136
7.2.2 需求验证 136
7.2.3 功能设计验证 137
7.2.4 详细设计验证 138
7.2.5 代码验证 138
7.3 通用代码审查单 139
7.4 确认测试 142
7.4.1 确认任务 142
7.4.2 确认测试策略 143
7.4.3 确认测试活动 144
7.4.4 累进测试和回归测试 147
7.4.5 测试执行 147
小结 148
第7章习题 149
第8章 测试计划与测试文档 150
8.1 测试计划 150
8.2 软件测试文档 151
8.3 主测试计划 152
8.4 验证测试计划 153
8.4.1 制定验证测试计划 153
8.4.2 验证执行 154
8.5 确认测试计划 155
8.5.1 制定确认测试计划 155
8.5.2 测试结构设计 156
8.5.3 详细测试设计 156
8.5.4 测试执行和事故报告 160
8.6 测试评估 162
8.7 用户手册 163
8.8 IEEE/ANSI测试文档概述 163
8.9 软件生存周期各阶段的测试任务与可交付的文档 165
8.9.1 需求阶段 165
8.9.2 功能设计阶段 165
8.9.3 详细设计阶段 166
8.9.4 编码阶段 166
8.9.5 测试阶段 166
8.9.6 运行/维护阶段 167
小结 167
第8章习题 167
第9章 面向对象的软件测试 169
9.1 面向对象的概念 169
9.1.1 对象 169
9.1.2 消息 170
9.1.3 接口 170
9.1.4 类 170
9.1.5 继承 171
9.1.6 动态绑定 171
9.2 面向对象的测试与传统软件测试的区别 171
9.3 面向对象软件测试 172
9.4 类测试 173
9.5 面向对象的集成测试 179
小结 181
第9章习题 181
第10章 软件测试自动化和测试工具 182
10.1 测试与测试自动化 182
10.2 测试工具 182
10.2.1 白盒测试工具 183
10.2.2 黑盒测试工具 184
10.2.3 测试设计和开发工具 185
10.2.4 测试执行和评估工具 185
10.2.5 测试管理工具 186
10.2.6 测试工具的选择 187
10.3 常用测试工具简介 188
10.3.1 Parasoft C++ Test测试工具简介 188
10.3.2 白盒工具——NuMega DecPartner Studio 188
10.3.3 黑盒测试工具——QACenter 191
10.3.4 数据库测试工具 192
10.3.5 测试管理工具——TestDirector 193
10.4 测试自动化和测试工具的好处 193
10.5 测试自动化和测试工具存在的问题 194
小结 195
第10章习题 195
第11章 软件质量保证 196
11.1 软件质量保证 196
11.2 软件测试管理技术 197
11.3 测试的组织方式 199
11.4 能力成熟度模型CMM 201
11.4.1 CMM的等级 201
11.4.2 CMM等级3 202
11.5 ISO 9000标准 203
小结 204
第11章习题 204
第12章 软件测试职业指导 205
12.1 软件测试职位 205
12.2 优秀软件测试工程师应具备的素质 205
12.3 软件测试信息资源 207
12.3.1 正规培训 207
12.3.2 因特网 208
12.3.3 专业组织 209
小结 210
第12章习题 210
附录 软件工程的测试标准 211
参考文献 214
参考网站 216