目 录
第1章 软件代码可靠性基础 1
1.1 软件代码可靠性基础 1
1.2 软件代码可靠性设计与编程 3
1.2.1 软件代码可靠性设计 3
1.2.2 软件代码可靠性编程 6
1.3 软件代码可靠性保障因素 9
1.3.1 需求分析保障 9
1.3.2 配置管理保障 10
1.3.3 跟踪控制保障 10
1.4 软件代码可靠性分析与测试 11
1.4.1 软件代码可靠性分析 11
1.4.2 软件代码可靠性测试综述 13
第2章 软件代码可靠性测试需求 15
2.1 软件代码可靠性测试的概念 15
2.1.1 代码可靠性测试的基本概念 15
2.1.2 代码可靠性测试的意义 16
2.2 软件需求、设计及分析实现 18
2.2.1 软件需求分析 18
2.2.2 软件需求实现 18
2.2.3 软件设计实现 21
2.3 软件代码可靠性测试需求分析 24
第3章 软件代码可靠性测试的方法与技术 27
3.1 软件代码可靠性测试方法 27
3.1.1 静态测试 27
3.1.2 动态测试 28
3.2 软件代码可靠性测试过程 28
3.2.1 软件测试过程 29
3.2.2 软件代码可靠性测试过程 32
3.3 软件代码可靠性测试技术 35
3.3.1 黑盒测试技术 35
3.3.2 白盒测试技术 35
3.3.3 单元测试技术 36
3.3.4 集成测试技术 36
3.3.5 系统测试技术 36
第4章 被测样例系统 39
4.1 被测样例系统的需求说明 39
4.1.1 引言 39
4.1.2 系统概述 40
4.1.3 功能性需求 41
4.1.4 非功能性需求 43
4.1.5 外部接口说明 44
4.2 被测样例系统设计说明 44
4.2.1 引言 44
4.2.2 全局数据说明 44
4.2.3 功能设计说明 49
4.2.4 需求可追溯性 79
第5章 软件质量度量 81
5.1 软件质量 81
5.1.1 软件质量定义 82
5.1.2 软件质量特性 83
5.1.3 软件质量模型 85
5.2 软件质量度量与评价 92
5.2.1 产品质量度量的分类 92
5.2.2 软件质量评价策略 93
5.2.3 软件质量评价过程 95
5.3 软件质量度量方法 97
5.3.1 行数度量 97
5.3.2 扇入/扇出数度量 98
5.3.3 McCabe度量 99
5.4 软件质量度量实践 103
5.4.1 软件质量度量工具 103
5.4.2 被测样例系统质量度量实践 108
第6章 软件代码静态分析 131
6.1 软件代码静态分析的概念 131
6.2 C语言编码规范 132
6.2.1 编码规范 132
6.2.2 MISRA-C 2004编码规范 133
6.3 MISRA-C 2004典型编码规范介绍 135
6.3.1 数据类型及数据类型转换规范 135
6.3.2 初始化规范 139
6.3.3 指针的规范 140
6.3.4 表达式规范 143
6.3.5 程序流的控制规范 147
6.3.6 函数相关规范 152
6.4 软件代码静态分析实践 156
6.4.1 代码静态分析工具 156
6.4.2 被测样例系统静态分析实践 161
第7章 软件代码动态分析 169
7.1 软件代码动态分析的概念 169
7.2 软件代码动态分析的原理 170
7.2.1 数据流分析 170
7.2.2 控制流分析 172
7.2.3 接口分析 173
7.2.4 表达式分析 173
7.3 典型错误分析 173
7.3.1 缓冲区溢出 173
7.3.2 内存泄漏 176
7.3.3 引用未初始化变量 179
7.3.4 指针与数组错误 180
7.4 软件代码动态分析的实践 184
7.4.1 代码动态分析工具 184
7.4.2 被测样例系统代码动态分析 194
第8章 软件黑盒测试 205
8.1 软件黑盒测试概述 205
8.1.1 黑盒测试的基本概念 205
8.1.2 黑盒测试的优点和缺点 206
8.1.3 黑盒测试的意义 206
8.2 软件黑盒测试环境构建 206
8.2.1 黑盒测试环境的重要性 207
8.2.2 黑盒测试环境构建要素 207
8.2.3 黑盒测试环境的管理与维护 207
8.3 软件黑盒测试方法和技术 207
8.3.1 功能分解法 208
8.3.2 等价类划分法 209
8.3.3 边界值分析法 211
8.3.4 因果图分析法 214
8.3.5 场景测试法 217
8.3.6 随机测试法 223
8.3.7 猜错法 223
8.3.8 测试方法的评价 223
8.4 软件黑盒测试原则和策略 224
8.4.1 黑盒测试的原则 225
8.4.2 黑盒测试的策略 225
8.4.3 黑盒测试的类型 225
8.5 软件黑盒测试实践 227
第9章 软件白盒测试 241
9.1 软件白盒测试概述 241
9.1.1 白盒测试的基本概念 241
9.1.2 白盒测试的原则 242
9.1.3 白盒测试的意义 242
9.2 软件白盒测试方法和技术 243
9.2.1 静态白盒测试 243
9.2.2 对判定的测试 243
9.2.3 对路径的测试 244
9.2.4 对循环的测试 251
9.2.5 对变量的测试 254
9.2.6 白盒测试策略 255
9.3 系统级动态白盒测试实践 255
9.3.1 系统级动态白盒测试工具介绍 255
9.3.2 被测样例系统动态白盒测试 266
第10章 软件单元测试 275
10.1 单元测试概述 275
10.1.1 单元测试基本概念 276
10.1.2 单元测试的重要性 276
10.1.3 单元测试的主要任务 277
10.2 单元测试方法和技术 279
10.2.1 单元测试方法 279
10.2.2 单元测试技术 280
10.2.3 单元测试要求 284
10.3 单元测试策略和过程 285
10.3.1 单元测试策略 285
10.3.2 单元测试过程 286
10.3.3 单元测试环境 290
10.4 单元测试实践 291
10.4.1 单元测试工具 291
10.4.2 被测样例系统单元测试实践 296
第11章 软件集成测试 331
11.1 集成测试概述 331
11.1.1 集成测试基本概念 331
11.1.2 集成测试的重要性 332
11.1.3 集成测试的主要任务 333
11.2 集成测试方法和技术 335
11.2.1 集成测试方法 335
11.2.2 集成测试技术要求 335
11.3 集成测试策略和过程 336
11.3.1 集成测试策略 336
11.3.2 集成测试过程 343
11.3.3 集成测试环境 347
11.4 集成测试实践 349
11.4.1 集成测试工具 349
11.4.2 被测样例系统集成测试实践 349
第12章 测试策略与测试方法 375
12.1 软件系统测试策略 375
12.1.1 功能测试策略 377
12.1.2 性能测试策略 377
12.1.3 接口测试策略 378
12.1.4 人机交互界面测试策略 378
12.1.5 强度测试策略 379
12.1.6 余量测试策略 379
12.1.7 安全性测试策略 379
12.1.8 恢复性测试策略 380
12.1.9 边界测试策略 380
12.1.10 数据处理测试策略 380
12.1.11 容量测试策略 380
12.1.12 互操作性测试策略 380
12.1.13 敏感性测试策略 380
12.1.14 标准符合性测试策略 381
12.1.15 兼容性测试策略 381
12.2 软件系统测试方法 381
12.2.1 多任务测试 382
12.2.2 临界测试 382
12.2.3 中断测试 382
12.2.4 其他系统测试方法 382
12.3 软件系统测试过程 383
12.3.1 系统测试需求分析 383
12.3.2 制定系统测试计划 384
12.3.3 设计系统测试用例 387
12.3.4 系统测试的前期准备工作 388
12.3.5 系统测试实施 388
12.4 软件系统测试环境构建 389
12.4.1 系统测试环境的要求 389
12.4.2 系统测试环境构建要素 390
12.4.3 系统测试环境确认 390
12.4.4 系统测试环境的管理与维护 391
12.5 系统测试实践 393
第13章 基于模型的软件需求验证 417
13.1 基于模型的软件测试 417
13.1.1 基于模型的软件测试概念 418
13.1.2 一致性测试 418
13.1.3 软件测试模型 418
13.2 基于模型的软件测试过程及支持工具 420
13.2.1 分析理解被测软件 420
13.2.2 选择合适的测试模型 420
13.2.3 构造测试模型 421
13.2.4 生成和执行测试用例 421
13.2.5 收集测试结果进行分析 421
13.2.6 支持工具 421
13.3 基于模型的软件测试的优缺点 422
13.3.1 基于模型的软件测试优点 422
13.3.2 基于模型的软件测试缺点 422
13.4 有限状态机及其测试理论 423
13.4.1 有限状态机 423
13.4.2 状态和迁移覆盖 423
13.4.3 状态迁移矩阵 424
13.5 基于模型的软件测试实践 424
13.5.1 基于模型的软件需求验证工具 424
13.5.2 被测样例系统模型化需求验证 426
第14章 软件测试数据、测试用例管理 441
14.1 软件测试数据的准备与生成 441
14.1.1 软件测试数据的定义 442
14.1.2 软件测试数据的准备与生成 443
14.1.3 软件测试数据的验证 444
14.2 软件测试用例管理 444
14.2.1 测试用例的基本要素 445
14.2.2 测试用例的管理 446
14.2.3 测试用例的评审 447
14.2.4 测试用例的修改/更新 447
14.3 软件测试管理实践 448
14.3.1 测试用例管理工具的使用 448
14.3.2 被测样例系统测试用例的管理 448
第15章 软件缺陷管理与跟踪 453
15.1 软件缺陷的定义与分类 453
15.1.1 软件缺陷的定义 453
15.1.2 软件缺陷的分类 454
15.2 软件缺陷管理 455
15.2.1 软件缺陷生命周期概述 455
15.2.2 软件缺陷管理流程 456
15.3 软件缺陷报告和软件缺陷度量 457
15.3.1 软件缺陷报告 457
15.3.2 软件缺陷度量 458
15.4 软件缺陷管理实践 461
第16章 软件测试文档的编写与管理 467
16.1 软件测试文档类型 467
16.1.1 测试计划 468
16.1.2 测试报告 469
16.2 软件测试文档编写要点 469
16.2.1 测试计划编写要点 469
16.2.2 测试报告编写要点 472
16.3 软件测试文档管理 474
16.3.1 测试文档管理的意义 474
16.3.2 如何管理测试文档 475
16.3.3 测试文档评审 475
16.4 软件测试文档编写实践 476
16.4.1 被测样例系统测试计划编写 476
16.4.2 被测样例系统测试报告编写 487
