第1章 软件测试的基本概念 1
1.1软件质量的概念 1
1.1.1软件质量的定义 1
1.1.2软件质量的属性 1
1.1.3软件质量模型 2
1.1.4软件质量的度量 5
1.1.5影响软件质量的主要因素 6
1.2软件测试的概念 6
1.2.1软件测试的定义与目的 6
1.2.2软件测试的原则 7
1.3软件的缺陷与错误 9
1.3.1软件缺陷的定义和类型 9
1.3.2软件缺陷的级别 10
1.3.3软件缺陷产生的原因 10
1.3.4软件缺陷的构成 11
1.3.5修复软件缺陷的代价 13
1.4软件测试的经济学与心理学 13
1.4.1软件测试的心理学 14
1.4.2软件测试的经济学 15
1.5软件质量保证 18
1.5.1软件质量保证概要 18
1.5.2软件质量保证活动的实施 19
1.5.3软件的验证与确认 20
1.5.4验证和确认任务分析 21
本章小结 23
第2章 在软件生存周期中测试的实施 24
2.1软件开发阶段 24
2.1.1软件生存周期 24
2.1.2软件测试的生存周期模型 25
2.1.3软件测试过程模型 26
2.1.4测试信息流 27
2.2需求获取与分析阶段的测试 28
2.2.1需求评审的实施 28
2.2.2需求规格说明的评审 28
2.2.3 Wiegers用例与需求评审表 29
2.2.4基于原型的测试 30
2.2.5基于需求的测试覆盖率评估 31
2.3设计阶段的测试 31
2.3.1设计的测试因素 32
2.3.2设计评审的实施 33
2.3.3设计规格说明的评审 33
2.3.4设计元素的覆盖原则 36
2.4编程阶段的测试 38
2.4.1白盒测试与黑盒测试 38
2.4.2源代码的控制流覆盖原则 39
2.4.3源代码的数据流覆盖原则 39
2.4.4源代码的静态分析与动态测试 40
2.5运行和维护阶段的测试 42
2.6回归测试 43
2.6.1回归测试的概念 43
2.6.2回归测试的类型 43
2.6.3回归测试的时机 43
2.6.4回归测试的实施 44
本章小结 47
第3章 代码检查、走查与评审 48
3.1桌上检查 48
3.1.1桌上检查的实施 48
3.1.2桌上检查的检查表 48
3.2代码检查 49
3.2.1特定的角色和职责 49
3.2.2代码检查的实施 51
3.2.3用于代码检查的检查表 51
3.3走查 54
3.3.1特定的角色和职责 54
3.3.2走查的实施 55
3.3.3走查中的静态分析技术 56
3.4同行评审 57
3.4.1同行评审的角色和职责 57
3.4.2同行评审的内容 58
3.4.3评审的方法和技术 60
3.4.4评审工作 62
本章小结 63
第4章 白盒测试 64
4.1覆盖率的概念 64
4.2逻辑覆盖 64
4.2.1语句覆盖与块覆盖 65
4.2.2判定覆盖(分支覆盖) 65
4.2.3条件覆盖 67
4.2.4条件/判定覆盖 67
4.2.5条件组合覆盖 69
4.2.6路径覆盖 70
4.2.7 ESTCA覆盖 70
4.2.8 LCSAJ覆盖 71
4.3路径测试 72
4.3.1分支结构的路径测试 72
4.3.2循环结构的路径测试 73
4.3.3圈复杂度与基本路径测试 76
4.4数据流测试 78
4.4.1定义/使用测试的几个定义 78
4.4.2定义/使用测试举例 78
4.4.3定义/使用路径测试覆盖指标 81
4.5基于覆盖的测试用例选择 83
4.5.1覆盖率的使用 83
4.5.2使用最少的测试用例来达到覆盖 84
4.6程序插桩技术 85
4.6.1程序插桩 85
4.6.2用于测试覆盖率的程序插桩 86
4.6.3用于断言检测的程序插桩 87
4.6.4用于数据流异常检测的程序插桩 88
本章小结 90
第5章 黑盒测试 91
5.1等价类测试 91
5.1.1等价类的概念 91
5.1.2等价类测试的原则 92
5.1.3等价类方法测试用例设计举例 93
5.2边界值分析 95
5.2.1边界值分析的概念 95
5.2.2选择测试用例的原则 95
5.2.3边界值方法测试用例设计举例 96
5.3基于判定表的测试 97
5.3.1判定表的概念 97
5.3.2基于判定表的测试用例设计举例 98
5.4基于因果图的测试 99
5.4.1因果图的适用范围 99
5.4.2用因果图生成测试用例 100
5.4.3因果图法测试用例设计举例 101
5.5基于状态图的测试 103
5.5.1状态图 103
5.5.2利用状态转换树生成测试用例 105
5.5.3利用状态转换表生成测试用例 107
5.6基于功能图的测试 108
5.6.1功能图 109
5.6.2功能图法设计测试用例举例 109
5.7基于用例和场景的测试 111
5.7.1基本流和备选流 111
5.7.2利用用例和场景设计测试用例的实例 112
5.8基于有向图的测试用例设计 116
5.8.1使用基于有向图的测试的场合 117
5.8.2基于事务流建模设计测试用例 117
5.8.3基于控制流建模设计测试用例 120
5.8.4基于有向图设计测试用例的过程 122
5.9基于正交实验设计法的测试 123
5.9.1提取功能说明,构造因子/状态表 123
5.9.2加权筛选,生成因素分析表 124
5.9.3利用正交表构造测试数据集 125
5.10其他黑盒测试用例设计技术 127
本章小结 129
第6章 单元测试和集成测试 131
6.1单元测试的基本概念 131
6.1.1单元测试的定义 131
6.1.2单元测试与集成测试、系统测试的区别 132
6.1.3单元测试环境 133
6.2单元测试策略 134
6.2.1自顶向下的单元测试策略 134
6.2.2自底向上的单元测试策略 135
6.2.3孤立测试 135
6.2.4综合测试 135
6.3单元测试分析 136
6.3.1模块接口 136
6.3.2局部数据结构 137
6.3.3独立路径 137
6.3.4出错处理 137
6.3.5边界条件 138
6.4单元测试的测试用例设计原则 138
6.4.1单元测试的测试用例设计步骤 138
6.4.2单元测试中的白盒测试与黑盒测试 140
6.5集成测试的基本概念 141
6.6集成测试策略 143
6.6.1基于分解的集成策略 143
6.6.2基于功能的集成 146
6.6.3基于路径的集成 147
6.6.4基于调用图的集成 148
6.7集成测试分析 150
6.7.1体系结构分析 150
6.7.2模块单元分析 151
6.7.3接口分析 152
6.7.4风险分析 153
6.7.5可测试性分析 155
6.7.6集成测试策略分析 155
6.7.7常见的集成测试故障 155
6.8集成测试的测试用例设计原则 156
6.8.1集成测试的测试用例设计步骤 156
6.8.2场景测试 157
本章小结 159
第7章 系统测试 160
7.1系统测试概念 160
7.2系统测试的方法 162
7.2.1功能测试 162
7.2.2协议一致性测试 163
7.2.3性能测试 164
7.2.4压力测试 165
7.2.5容量测试 165
7.2.6安全性测试 166
7.2.7失效恢复测试 167
7.2.8备份测试 168
7.2.9 GUI测试 168
7.2.10健壮性测试 169
7.2.11兼容性测试 170
7.2.12可使用性测试 170
7.2.13安装测试 171
7.2.14文档测试 172
7.2.15 在线帮助测试 173
7.2.16数据转换测试 173
7.3系统测试的实施 174
7.3.1确认测试 174
7.3.2 α测试和β测试 175
7.3.3验收测试 175
7.3.4系统测试问题总结、分析 176
7.4做好系统测试的原则 176
本章小结 177
第8章 软件性能测试和可靠性测试 178
8.1软件性能测试的基本概念 178
8.1.1软件性能 178
8.1.2软件性能测试 181
8.2软件性能测试的执行 183
8.2.1性能测试的过程与组织 183
8.2.2性能分析 186
8.2.3性能测试的自动化 187
8.3软件可靠性的概念 188
8.4软件可靠性测试的执行 190
8.4.1软件可靠性测试的过程 190
8.4.2软件可靠性预测 192
8.5软件故障数目的预测 193
8.6软件可靠性分析 193
本章小结 194
第9章 面向对象软件的测试 196
9.1面向对象软件测试的问题 196
9.1.1面向对象的基本特点引起的测试问题 196
9.1.2面向对象程序的测试组织问题 199
9.2面向对象软件的测试模型及策略 199
9.3面向对象程序的单元测试 202
9.3.1方法层次的测试 202
9.3.2类层次的测试 204
9.3.3类树层次的测试 205
9.4面向对象软件的集成测试 205
9.4.1面向对象软件的集成测试策略 205
9.4.2针对类间连接的测试 211
9.4.3面向对象软件集成测试的UML支持 212
9.5面向对象软件的系统测试 212
本章小结 213
第10章 Web应用软件测试 215
10.1 Web应用软件的特点 215
10.1.1 Web应用软件的概念 215
10.1.2 Web应用软件的特点 215
10.1.3 Web应用软件的基本结构 216
10.1.4 Web应用软件的常用开发技术 217
10.2应用服务器的分类和特征 218
10.2.1三层和多层体系结构 218
10.2.2应用服务器的分类 219
10.2.3应用服务器对Web应用软件测试的影响 219
10.3 Web应用软件的测试策略 220
10.3.1表示层的测试 220
10.3.2业务层的测试 221
10.3.3数据层的测试 221
10.3.4层间的集成测试 222
10.4 Web应用软件的系统测试技术 222
10.4.1功能测试 223
10.4.2性能测试 223
10.4.3易用性测试 224
10.4.4内容测试 224
10.4.5安全性测试 225
10.4.6接口测试 226
10.5基于数据库的Web应用软件的性能测试 226
10.6 Web应用软件的系统安全检测与防护 227
10.6.1入侵检测 227
10.6.2漏洞扫描 228
10.6.3安全策略 229
本章小结 231
第11章 其他测试 232
11.1兼容性测试 232
11.1.11硬件兼容性测试 232
11.1.2软件兼容性测试 233
11.1.3数据兼容性测试 235
11.2易用性测试 235
11.2.1易安装性测试 235
11.2.2功能易用性测试 236
11.2.3用户界面测试 238
11.3极限测试 240
11.3.1极限编程基础 240
11.3.2极限测试 241
11.3.3 JUnit简介 243
11.4文档测试 244
11.4.1文档测试的范围 244
11.4.2用户文档的内容 244
11.4.3用户文档的测试 245
本章小结 247
第12章 软件测试过程和管理 248
12.1软件测试过程 248
12.1.1测试过程的概念 248
12.1.2测试过程的抽象模型 248
12.1.3测试阶段中的测试活动 250
12.2测试过程组织与管理 251
12.2.1软件测试过程管理的特点 251
12.2.2软件测试过程的人员组织 252
12.3测试策划管理 253
12.3.1测试策划的目标 253
12.3.2测试需求分析 254
12.3.3测试策略与测试方法 254
12.3.4测试策划工作流程 255
12.3.5测试计划的要点 255
12.4测试设计与实现管理 256
12.4.1软件测试设计与实现主要内容 256
12.4.2软件测试设计与实现要点 256
12.4.3测试用例的设计方法 257
12.4.4测试用例的管理 257
12.4.5测试开发 258
12.5测试环境管理 258
12.5.1测试环境的定义 258
12.5.2测试环境是测试的基础 259
12.5.3测试环境的各要素 259
12.5.4测试环境准备 261
12.6测试执行管理 262
12.6.1基于测试环境的测试用例执行 262
12.6.2测试用例执行的记录与跟踪 262
12.6.3软件缺陷的跟踪和管理 263
12.6.4测试执行活动结束 263
12.7测试质量分析 264
12.7.1评估系统测试的覆盖程度 264
12.7.2软件缺陷分析方法 266
12.8测试总结管理 267
12.9测试过程改进 268
12.9.1软件测试过程改进的概念 268
12.9.2软件测试过程改进的具体方法 269
本章小结 270
第13章 软件自动化测试 271
13.1自动化测试的原理与方法 271
13.2自动化测试的限制 273
13.3自动化测试用例的生成 275
13.3.1脚本的作用、质量和编写原则 275
13.3.2脚本的基本结构 275
13.4测试执行自动化 278
13.5测试结果比较自动化 280
13.5.1自动比较的基本概念 280
13.5.2动态比较 281
13.5.3执行后比较 281
13.6基于STAF/STAX的自动化测试框架 283
13.7测试工具的分类与选择 285
13.7.1测试工具的分类 285
13.7.2测试工具的选择 289
13.8主流测试工具 292
13.8.1主流单元测试工具 292
13.8.2主流功能测试工具 295
13.8.3主流负载测试工具 298
13.8.4主流软件测试管理工具 301
本章小结 305
第14章 软件测试的标准和文档 307
14.1软件测试的标准 307
14.1.1软件测试规范 307
14.1.2软件测试文档编制规范 315
14.2软件测试文档格式和模板 320
14.2.1软件测试文档格式 320
14.2.2软件测试部分模板 327
本章小结 330
第15章 软件测试实践 331
15.1软件测试过程管理实践 331
15.1.1测试实践中的测试过程类型 331
15.1.2测试策划实践 332
15.1.3测试设计与实现的实践 337
15.1.4测试执行实践 339
15.1.5测试总结实践 345
15.1.6 QESuite Web 1.0软件测试过程管理平台实践 345
15.2白盒测试实践 357
15.2.1 QESAT/C简介 358
15.2.2被测程序link.c说明 359
15.2.3测试准备 363
15.2.4静态分析 367
15.2.5动态测试 370
本章小结 378
附录1 全国计算机等级考试三级软件测试技术考试大纲(2013年版) 379
附录2 全国计算机等级考试三级软件测试技术样题及参考答案 384