第1章 软件测试概述 1
1.1 测试的发展 2
1.2 测试的目的 3
1.3 软件缺陷 7
1.4 软件质量特性 12
1.5 软件测试的分类 14
1.6 测试空间和设计空间的概念 15
1.7 可测试性 17
1.8 软件测试人员应具备的技能和素养 19
1.9 软件测试常见误区 22
1.10 小结 24
1.11 习题与思考 24
第2章 测试空间与测试驱动接口设计 27
2.1 可变数据的访问方式与变化形式 28
2.2 可变数据的表现形式 29
2.3 可变数据的分层 31
2.4 测试空间中的安全性准则 33
2.5 测试驱动接口设计 37
2.6 测试驱动的开发流程 40
2.7 小结 43
2.8 习题与思考 43
第3章 测试用例设计基本方法 45
3.1 测试用例设计概述 46
3.2 测试用例设计基本思想 50
3.3 场景分析法 55
3.4 分类推理法 64
3.5 元素分析法 72
3.6 等价类分法 76
3.7 边界值法 84
3.8 随机数据法 88
3.9 判定表法 91
3.10 因果图法 93
3.11 其他一些测试用例设计方法 101
3.12 小结 105
3.13 习题与思考 106
第4章 评审与检视 107
4.1 基本概念 108
4.2 同行评审的角色和职责 110
4.3 评审的过程 112
4.4 评审检视技能 118
4.5 代码检视实例 134
4.6 小结 142
4.7 习题与思考 142
第5章 单元测试 145
5.1 单元测试基本概念 146
5.2 单元测试覆盖率 149
5.3 单元测试的桩函数和驱动函数 158
5.4 使用HOOK打桩增强单元测试代码的可维护性 161
5.5 单元测试实例 164
5.6 单元测试工具 167
5.7 单元测试误区与常见问题 178
5.8 单元测试的原则 179
5.9 小结 179
5.10 习题与思考 180
第6章 集成测试 181
6.1 集成测试基本概念 182
6.2 集成测试的集成方法 184
6.3 基本的集成测试用例设计思路介绍 187
6.4 使用结构化方法来设计用例 189
6.5 为隐性接口设计用例 192
6.6 多任务集成测试 194
6.7 习题与思考 202
第7章 系统测试 203
7.1 系统测试的基本概念 204
7.2 系统测试的过程 205
7.3 系统测试的几种形式 208
7.4 系统测试的主要内容 211
7.5 问题定位与修改 225
7.6 系统测试的原则 231
7.7 小结 232
7.8 习题与思考 232
第8章 内存测试 233
8.1 内存测试的基本概念 234
8.2 静态检查方法 236
8.3 使用工具进行动态检查的方法 240
8.4 使用调试C运行时间库(DCRT)进行检查 242
8.5 自己编码检查越界和泄漏 244
8.6 内存碎片模拟器的实现 254
8.7 小结 258
8.8 习题与思考 258
第9章 性能测试 259
9.1 性能测试概述 260
9.2 常用的软件性能指标 261
9.3 网络性能 265
9.4 多任务性能 267
9.5 可靠性与可用性 268
9.6 易用性 272
9.7 易学性 274
9.8 负载均衡性能 276
9.9 性能测试实施 278
9.10 专门的性能测试 281
9.11 小结 285
9.12 习题与思考 285
第10章 安全性测试 287
10.1 安全的基本知识 288
10.2 常见安全性缺陷和攻击手段 292
10.3 软件安全测试过程 299
10.4 安全性测试手段 304
10.5 安全性测试的评估 306
10.6 小结 306
10.7 习题与思考 307
附录A 代码静态检查 309
A.1 为什么要进行代码静态检查 310
A.2 代码静态检查工具PC-Lint简介 310
A.3 PC-Lint集成方法 311
A.4 PC-Lint使用方法及常用选项参数介绍 316
A.5 PC-Lint选项的用法 318
A.6 PC-Lint常用选项 319
A.7 PC-Lint常见告警分析和消除办法 327
A.8 PC-Lint 选项使用原则 331