第1章 基本概论 1
1.1 什么是软件测试 2
1.1.1 软件测试的认识的发展 2
1.1.2 广义的软件测试 7
1.2 软件测试的意义 8
1.3 软件测试原则 11
1.3.1 Myers的基本原则 11
1.3.2 软件测试的独立性原则 15
1.3.3 软件测试完成准则 16
1.3.4 软件的测试性 18
1.4 软件测试的基本原理和理论基础 19
1.5 软件测试的分类 21
1.6 软件错误 24
1.6.1 几个概念——错误、缺陷、故障、失效 24
1.6.2 研究软件错误的目的 25
1.6.3 软件错误分类和分级 26
1.6.4 程序错误数量估计 29
1.7 当前航天型号软件测试的认识 30
1.7.1 航天型号软件测试特点 31
1.7.2 目前的状况 33
1.7.3 航天型号软件测试的定位 34
1.7.4 几个基本认识问题 36
第2章 软件测试技术 40
2.1 静态测试技术 40
2.1.1 静态测试技术特点 40
2.1.2 代码审查 43
2.1.3 代码走查 47
2.1.4 静态分析 47
2.1.5 静态分析工具 59
2.2 动态测试技术 63
2.2.1 动态测试技术特点 63
2.2.2 黑盒测试和白盒测试 64
2.2.3 黑盒测试 67
2.2.4 白盒测试 79
2.3 其它测试技术介绍 94
2.3.1 程序变异 94
2.3.2 域测试 96
2.3.3 符号求值 100
2.3.4 程序插装 101
2.3.5 统计测试 103
2.3.6 程序正确性证明和形式化方法 103
2.3.7 测试用例设计综合策略 105
2.4 动态测试工具 106
2.4.1 动态分析工具 106
2.4.2 程序插装器(Program Instrumenter) 107
2.4.3 测试数据生成器(Test Data Generator) 108
2.4.4 符号计值(Symbolic Evaluator) 109
2.4.5 变异测试(Mutation Testing)工具 110
2.4.6 测试辅助支持工具 110
2.5 通用软件测试工具介绍 111
2.5.1 计算机辅助软件测试器(CAST) 112
2.5.2 Purify和PureCoverage 113
2.5.3 C语言测试工具C-Tester 114
第3章 嵌入式软件测试 115
3.1 嵌入式软件特点 115
3.2 嵌入式软件测试特点及基本对策 116
3.3 全数字仿真技术 121
3.3.1 全数字仿真技术内容 122
3.3.2 全数字仿真技术的目的和意义 123
3.3.3 全数字仿真技术应用缺点与局限性 126
3.4 嵌入式软件测试环境 128
3.5 嵌入式软件测试工具及使用 131
3.5.1 工具的功能特性 132
3.5.2 工具的使用 134
3.6 例子 136
3.6.1 软件应用和设计背景 136
3.6.2 支撑硬件和软件 137
3.6.3 单元测试 138
3.6.4 组装测试 139
3.6.5 系统测试 140
第4章 软件测试的步骤 142
4.1 多层过滤软件测试方法 144
4.2 单元测试 144
4.2.1 单元测试的特点和意义 145
4.2.2 单元测试的内容 145
4.2.3 单元测试方法和步骤 149
4.3 组装测试 153
4.3.1 组装测试的意义和特点 153
4.3.2 组装测试的内容 154
4.3.3 组装测试策略 159
4.3.4 组装测试的技术手段 171
4.4 确认测试 173
4.4.1 确认测试的任务和特点 173
4.4.2 确认测试的内容 175
4.4.3 确认测试的技术方法 183
4.5 系统联试 198
4.5.1 系统联试的特点和意义 198
4.5.2 系统联试的内容 200
4.5.3 系统联试技术手段 203
4.6 回归测试 203
4.6.1 回归测试的特点和意义 203
4.6.2 回归测试的内容 204
4.6.3 回归测试的技术手段 204
4.6.4 回归测试的工作步骤 212
4.7 可靠性测试 213
4.7.1 软件可靠性测试的定义与目的 213
4.7.2 软件可靠性测试的特点 213
4.7.3 软件可靠性测试的效果 215
4.7.4 软件可靠性测试的基本条件 216
4.7.5 软件可靠性测试步骤 217
4.8 独立测试 220
4.8.1 独立测试的概念和意义 220
4.8.2 独立测试的工作内容 222
4.8.3 独立测试的组织 223
4.8.4 建设航天型号软件评测体系 224
第5章 软件测试流程及软件测试文档 226
5.1 软件测试流程 226
5.1.1 制定测试计划 227
5.1.2 编制测试说明 229
5.1.3 执行测试计划 231
5.1.4 评价测试效果和被测试的软件 234
5.2 软件测试文档 236
5.2.1 测试文档的作用 236
5.3.2 测试文档的类型 238
5.3.3 测试文档的编制 238
5.3.4 测试计划 239
5.3.5 测试说明 243
5.3.6 测试报告 246
5.3.7 静态测试文档 249
第6章 软件测试管理 250
6.1 测试组织 250
6.1.1 单元测试的组织 250
6.1.2 组装测试的组织 251
6.1.3 确认测试的组织 252
6.1.4 落实责任,加强管理 254
6.2 测试质量管理 255
6.3 测试进度和资源管理 258
6.4 测试文档管理 261
6.5 测试工作数据积累 262
第7章 航天型号软件测试实例及要点 264
7.1 被测软件背景 264
7.2 测试情况 265
7.2.1 静态分析 265
7.2.2 代码审查 266
7.2.3 单元测试 268
7.2.4 确认测试 269
7.2.5 系统联试 271
7.3 测试体会 272
7.4 航天型号软件测试要点 273
7.4.1 指导思想 273
7.4.2 技术手段 276
7.4.3 工作模式 278
7.4.4 管理保证 280
参考文献 282