第1章 软件测试基础 1
1.1 软件测试的基本概念 1
1.1.1 软件测试是什么 1
1.1.2 软件测试的目的 2
1.1.3 软件测试与软件质量保证 2
1.2 软件测试的分类 4
1.3 软件缺陷管理 6
1.3.1 软件缺陷的概念 6
1.3.2 软件缺陷的属性 7
1.3.3 缺陷生命周期 9
1.3.4 常见的缺陷管理工具 10
1.4 软件质量与软件测试相关特性 11
1.4.1 软件质量模型 11
1.4.2 测试的复杂性和经济性 13
1.5 软件测试充分性和测试停止准则 16
1.5.1 软件的测试充分性问题 16
1.5.2 软件测试原则 17
1.5.3 测试停止准则 20
1.6 小结 22
1.7 习题 23
第2章 软件测试策略 24
2.1 软件开发过程及模型 24
2.1.1 软件开发过程 24
2.1.2 软件开发过程模型 24
2.2 软件测试过程 28
2.2.1 测试计划和控制 28
2.2.2 测试分析和设计 30
2.2.3 测试实现和执行 30
2.2.4 测试出口准则的评估和报告 31
2.2.5 测试活动结束 32
2.3 软件测试与软件开发的关系 32
2.3.1 软件测试在软件开发中的作用 32
2.3.2 软件测试与软件开发各阶段的关系 33
2.3.3 常见软件测试模型 33
2.4 黑盒测试和白盒测试 37
2.4.1 黑盒测试 37
2.4.2 白盒测试 38
2.4.3 黑盒测试与白盒测试的比较 39
2.5 小结 40
2.6 习题 41
第3章 黑盒测试与测试用例设计 42
3.1 测试用例综述 42
3.1.1 测试用例设计原则 42
3.1.2 测试用例设计步骤 44
3.2 等价类设计方法 45
3.2.1 等价类划分 46
3.2.2 等价类划分方法 47
3.2.3 等价类划分的测试运用 50
3.3 边界值设计方法 55
3.3.1 边界值分析法原理 55
3.3.2 边界值分析原则 56
3.3.3 健壮性分析 57
3.3.4 边界值分析法的测试运用 58
3.4 因果图设计法 60
3.4.1 因果图原理 60
3.4.2 因果图法应用 61
3.4.3 决策表法 62
3.5 正交试验设计方法 65
3.5.1 正交试验设计法原理 65
3.5.2 利用正交试验法设计测试用例 68
3.6 小结 69
3.7 习题 69
第4章 白盒测试 70
4.1 程序控制流图 70
4.1.1 基本块 70
4.1.2 流图的定义与图形表示 71
4.2 逻辑覆盖测试 72
4.2.1 测试覆盖率 72
4.2.2 逻辑覆盖 72
4.2.3 测试覆盖准则 74
4.3 路径分析与测试 75
4.4 数据流测试分析 77
4.4.1 测试充分性基础 77
4.4.2 测试充分性准则的度量 77
4.4.3 测试集充分性的度量 79
4.4.4 数据流概念 79
4.4.5 基于数据流的测试充分性准则 82
4.5 变异测试 83
4.5.1 变异和变体 83
4.5.2 强变异和弱变异 84
4.5.3 用变异技术进行测试评价 85
4.5.4 变异算子 87
4.5.5 变异算子的设计 88
4.5.6 变异测试的基本原则 88
4.6 小结 89
4.7 习题 89
第5章 软件测试的过程管理 90
5.1 软件测试的各个阶段 90
5.2 测试需求 91
5.2.1 测试需求的分类 91
5.2.2 测试需求的收集 92
5.2.3 测试需求的分析 93
5.2.4 测试需求的评审 93
5.3 测试计划 94
5.3.1 测试计划的目标 94
5.3.2 制定测试计划 95
5.3.3 划分测试优先级 96
5.4 测试设计及测试用例 97
5.4.1 测试用例设计原则 97
5.4.2 测试用例设计方法 98
5.4.3 测试用例的粒度 102
5.4.4 测试用例的评审 103
5.5 测试的执行 103
5.5.1 测试用例的选择 103
5.5.2 测试人员分工 104
5.5.3 测试环境的搭建 104
5.5.4 BVT测试与冒烟测试 105
5.5.5 每日构建介绍 105
5.6 软件缺陷分析 106
5.6.1 缺陷分析的作用 107
5.6.2 软件缺陷的分类 107
5.6.3 软件缺陷分析方法 107
5.6.4 软件缺陷分析的流程 109
5.6.5 缺陷报告 110
5.7 小结 110
5.8 习题 111
第6章 软件测试的度量 112
6.1 软件测试度量的目的 112
6.1.1 度量的目的 112
6.1.2 测试度量的难度 114
6.1.3 软件测试人员工作质量的衡量 115
6.2 软件测试的度量及其应用 121
6.2.1 度量bug的数量 121
6.2.2 软件测试的度量及其应用 121
6.2.3 bug的定性评估 123
6.2.4 bug综合评价模型 125
6.2.5 测试覆盖率统计 126
6.3 软件测试常见的度量类型 129
6.3.1 手工测试度量 130
6.3.2 性能测试度量 135
6.3.3 自动化测试度量 138
6.3.4 通用度量 139
6.4 小结 140
6.5 习题 141
第7章 系统测试技术 142
7.1 软件自动化测试 142
7.1.1 自动化测试的概念 142
7.1.2 自动化测试的优缺点 144
7.1.3 自动化测试工具 145
7.2 兼容性测试 147
7.2.1 兼容性测试的概念 147
7.2.2 兼容性测试内容 148
7.2.3 兼容性测试的标准和规范 151
7.2.4 兼容性测试工具 152
7.3 Web测试实践 152
7.3.1 Web应用体系结构 152
7.3.2 Web测试概述 153
7.3.3 Web测试主要类型 153
7.4 移动终端测试实践 158
7.4.1 移动终端测试背景 158
7.4.2 移动终端测试要求 158
7.4.3 移动终端测试实例 159
7.5 小结 173
7.6 习题 173
第8章 软件测试工具及其应用 175
8.1 性能测试工具LoadRunner 175
8.1.1 性能测试简介 175
8.1.2 LoadRunner的主要功能 177
8.1.3 性能测试的主要术语 179
8.1.4 LoadRunner的安装 180
8.1.5 LoadRunner的脚本录制 183
8.2 单元测试工具JUnit 188
8.2.1 JUnit简介 188
8.2.2 安装与使用 189
8.2.3 JUnit使用原则 194
8.2.4 其他特性 195
8.3 功能测试工具C++test 197
8.3.1 C++test的安装 199
8.3.2 C++test静态测试 203
8.3.3 RuleWizard 206
8.3.4 C++test动态测试 212
8.4 开源缺陷管理工具Bugzilla 220
8.4.1 Bugzilla简介 220
8.4.2 Bugzilla安装说明 221
8.4.3 Bugzilla使用说明 224
8.5 小结 226
8.6 习题 227
第9章 第三方测试 228
9.1 基本概念与测试过程 228
9.1.1 第三方测试的应用现状 228
9.1.2 第三方测试的意义和模式 229
9.1.3 第三方测试的相关概念 229
9.1.4 第三方测试的测试过程 230
9.2 测试实例实践 232
9.3 小结 235
9.4 习题 235
第10章 公有云测试质量评估与退出方法 236
10.1 云测试概念 236
10.1.1 云计算 236
10.1.2 云测试 237
10.2 云可靠性度量 238
10.2.1 软件可靠性 239
10.2.2 软件故障分析和诊断 249
10.3 安全测试及安全度量 250
10.3.1 安全性测试方法 251
10.3.2 安全测试方法举例(可用于云中) 253
10.4 小结 256
10.5 习题 256
第11章 软件测试的拓展与提高 257
11.1 企业测试实践 257
11.1.1 测试计划 257
11.1.2 测试管理 259
11.1.3 企业的测试策略 261
11.1.4 测试人员组织 262
11.1.5 测试小组的职责 263
11.2 CMMI和软件测试 264
11.2.1 CMMI简介 264
11.2.2 基于CMMI的软件测试流程 265
11.3 基于搜索的软件测试 266
11.3.1 智能搜索算法 266
11.3.2 搜索技术在软件测试中应用 279
11.4 小结 294
11.5 习题 294