1 理论部分 3
第1章 软件测试概述 3
1.1 写在前面 3
1.2 软件缺陷的起源 3
1.2.1 第一个Bug的故事 4
1.2.2 软件缺陷带来的悲剧 4
1.2.3 软件测试的起源 7
1.3 软件测试的发展 7
1.4 软件测试的目的 9
1.5 软件测试行业的现状和前景 10
1.6 小结 12
第2章 软件及软件测试生命周期 13
2.1 引言 13
2.2 软件的含义 13
2.3 软件开发的基本过程 15
2.3.1 瀑布模型 15
2.3.2 瀑布模型的不足 16
2.4 软件开发过程模型 17
2.4.1 原型模型 17
2.4.2 螺旋模型 18
2.4.3 其他模型 19
2.5 软件测试生命周期 21
2.5.1 软件测试生命周期概述 21
2.5.2 工作内容 21
2.6 软件项目中的测试流程 22
2.6.1 需求分析阶段的测试活动 22
2.6.2 软件设计阶段的测试活动 23
2.6.3 其他测试活动 23
2.7 测试模型 24
2.7.1 V模型 24
2.7.2 W模型 25
第3章 软件测试的阶段和方法 27
3.1 引言 27
3.2 软件测试的各阶段 27
3.3 软件测试的基本方法 29
3.3.1 黑盒测试和白盒测试 29
3.3.2 静态的和动态的方法 31
3.3.3 验证和确认 31
3.3.4 ALAC测试 33
3.3.5 自动化测试和随机测试 33
3.4 正确认识软件测试 34
3.4.1 软件测试与建立软件信心的关系 34
3.4.2 软件测试的两面性 34
3.4.3 测试是一种服务 35
3.4.4 软件测试的原则 36
3.4.5 软件测试的有效经验 39
3.4.6 软件测试的误区 39
第4章 测试用例基础 42
4.1 引言 42
4.2 软件测试的工作范畴 42
4.3 测试用例 43
4.3.1 测试用例的定义 43
4.3.2 测试用例的依据 44
4.3.3 案例分析 44
4.3.4 测试用例的更新和维护 45
4.4 简单的测试过程 45
4.4.1 测试案例分析 45
4.4.2 小结 47
第5章 软件缺陷与缺陷报告 48
5.1 引言 48
5.2 软件缺陷的概念 48
5.2.1 缺陷的定义 48
5.2.2 软件缺陷的种类 49
5.2.3 软件缺陷的产生 50
5.2.4 软件缺陷的构成 51
5.2.5 修复软件缺陷的代价 52
5.3 软件缺陷的描述 52
5.3.1 缺陷的质量衡量 52
5.3.2 书写缺陷报告的基本规则 53
5.3.3 如何记录一个合格的缺陷 54
5.3.4 缺陷报告应该注意的问题 55
5.3.5 分离和再现软件缺陷的步骤 57
5.4 软件缺陷的属性 58
第6章 缺陷的处理和缺陷跟踪 62
6.1 引言 62
6.2 软件缺陷的处理流程 62
6.2.1 缺陷的生命周期 62
6.2.2 软件缺陷处理的技巧 64
6.2.3 缺陷的评审 65
6.3 缺陷跟踪 66
6.3.1 简易的缺陷跟踪方法 66
6.3.2 缺陷跟踪系统的好处 67
6.3.3 缺陷跟踪系统的标准 68
6.3.4 BugFree测试管理工具 71
6.4 缺陷跟踪的方法和图表 72
6.5 测试结果分析和质量报告 74
第7章 需求测试方法 76
7.1 引言 76
7.2 需求测试的概念 76
7.2.1 为什么要引入需求测试 76
7.2.2 需求工程师对用户需求的误解 77
7.2.3 软件缺陷的主要来源 77
7.3 如何实施需求测试 78
7.3.1 需求测试的手段 78
7.3.2 需求评审 78
7.3.3 需求测试 79
7.3.4 需求规格说明书的检查步骤 79
7.4 其他测试需求的方法 80
7.4.1 通过用户调查来测试需求 80
7.4.2 通过设计测试用例来测试需求 81
7.4.3 利用现存的产品对需求进行测试 81
第8章 单元测试阶段 82
8.1 引言 82
8.2 单元测试的定义 83
8.2.1 单元测试的目标 83
8.2.2 单元测试的过程 83
8.2.3 单元测试的内容 84
8.2.4 单元测试的意义 85
8.2.5 单元测试用例设计 85
8.2.6 单元测试评审 86
8.3 单元测试规程 87
第9章 静态测试技术 92
9.1 引言 92
9.2 静态测试与动态测试 92
9.3 桌面检查 93
9.3.1 桌面检查的概念 93
9.3.2 桌面检查的项目 93
9.4 代码检查 95
9.4.1 代码检查的概念 95
9.4.2 角色和职责 95
9.4.3 代码检查的过程 96
9.4.4 用于代码检查的错误列表 97
9.5 走查 101
9.5.1 走查的概念 101
9.5.2 角色和职能 101
9.5.3 走查的过程 101
9.5.4 走查中的静态分析技术 103
9.6 同行评审 105
9.6.1 同行评审的概念 105
9.6.2 角色和职能 105
9.6.3 同行评审的内容 106
9.6.4 对程序代码作静态错误分析 109
第10章 静态测试工具 113
10.1 引言 113
10.2 Logiscope的介绍 113
10.3 其功能的简单介绍 115
10.3.1 语法规则分析功能 117
10.3.2 动态测试功能 118
10.4 静态测试工具Logiscope的使用 119
10.4.1 在Windows系统上安装Logiscope 119
10.4.2 Logiscope License 122
10.5 使用Logiscope Studio 122
10.5.1 Java Audit 122
10.5.2 Java RuleChecker 128
10.5.3 Java Reviewer 132
10.6 使用Logiscope Viewer 134
10.6.1 领域窗口 135
10.6.2 控制图窗口 138
10.6.3 源代码窗口 138
10.6.4 质量度量元Kivat图窗口 139
10.6.5 质量准则Kivat图窗口 139
10.6.6 系统窗口 140
10.6.7 相关使用图窗口 141
10.6.8 相关继承图窗口 141
第11章 白盒测试技术 142
11.1 白盒测试 142
11.1.1 白盒测试的概念 142
11.1.2 白盒测试与黑盒测试的联系 143
11.2 白盒测试的方法 143
11.3 逻辑覆盖技术 143
11.3.1 语句覆盖 144
11.3.2 判定覆盖 144
11.3.3 条件覆盖 145
11.3.4 判定-条件覆盖 145
11.3.5 条件组合测试 146
11.3.6 路径覆盖 146
11.4 循环覆盖测试 147
11.4.1 简单循环 147
11.4.2 嵌套循环 147
11.4.3 串接循环 148
11.4.4 不规则循环 148
11.5 基本路径测试 148
11.6 程序的环路复杂性 150
11.7 导出测试用例 152
11.8 执行测试用例 152
第12章 单元测试工具JUnit的使用 154
12.1 JUnit的介绍 154
12.1.1 JUnit的特性和优点 154
12.1.2 JUnit的测试编写原则 155
12.1.3 JUnit的框架组成 155
12.1.4 JUnit的最佳实践 155
12.2 JUnit的安装 156
12.3 JUnit的功能介绍 157
12.3.1 断言 157
12.3.2 JUnit TestCase 157
12.3.3 JUnit TestSuite 160
12.3.4 运行测试 161
12.3.5 图形交互模式的测试结果范例 162
第13章 单元测试总结 165
13.1 引言 165
13.2 案例分析 165
13.3 总结 169
第14章 集成测试阶段 173
14.1 集成测试 173
14.1.1 集成测试的概念 173
14.1.2 集成测试前的准备 173
14.1.3 集成测试的重点 174
14.1.4 集成测试的层次 174
14.1.5 集成测试的环境 175
14.2 集成测试方法 176
14.2.1 桩和驱动的概念 176
14.2.2 自顶向下增量式集成法 177
14.2.3 自底向上的增量式集成法 179
14.2.4 三明治集成方法 180
14.2.5 改进的三明治集成方法 181
14.3 集成测试分析 182
14.3.1 体系结构分析 182
14.3.2 模块分析 183
14.3.3 接口分析 184
14.3.4 可测试性分析 186
14.3.5 集成测试策略的分析 186
14.4 集成测试的测试用例设计 187
第15章 系统测试阶段 189
15.1 引言 189
15.2 系统测试的概念 189
15.2.1 系统测试与单元测试、集成测试的区别 190
15.2.2 系统测试的组织和分工 190
15.2.3 系统测试的分析 190
15.2.4 系统测试的环境 191
15.3 系统测试的方法 192
15.3.1 功能测试 192
15.3.2 协议一致性测试 192
15.3.3 性能测试 193
15.3.4 压力测试 193
15.3.5 容量测试 193
15.3.6 安全性测试 194
15.3.7 失效恢复测试 194
15.3.8 备份测试 194
15.3.9 GUI测试 194
15.3.10 健壮性测试 195
15.3.11 兼容性测试 195
15.3.12 易用性测试 195
15.3.13 安装测试 196
15.3.14 文档测试 196
15.3.15 在线帮助测试 196
15.3.16 数据转换测试 196
15.4 系统测试的实施 196
15.4.1 确认测试 197
15.4.2 回归测试 198
15.4.3 冒烟测试 199
15.5 系统测试问题的总结和分析 199
第16章 黑盒(功能)测试技术一 201
16.1 引言 201
16.2 等价类测试技术 202
16.2.1 等价类的概念 202
16.2.2 等价类测试的原则 203
16.2.3 等价类方法测试用例设计举例 204
16.3 边界值分析 207
16.3.1 边界值分析的概念 207
16.3.2 选择测试用例的原则 208
16.3.3 图示分析方法 208
16.3.4 边界值方法测试用例设计举例 209
第17章 黑盒(功能)测试技术二 213
17.1 引言 213
17.2 判定表的概念 213
17.3 因果图 216
17.3.1 因果图的适用范围 216
17.3.2 用因果图生成测试用例 217
17.3.3 因果图法测试用例设计举例 218
17.4 因果图和判定表 220
第18章 黑盒(功能)测试技术三 221
18.1 引言 221
18.2 基于场景法设计测试用例 221
18.2.1 基本流和备选流 221
18.2.2 场景法设计测试用例举例 222
18.3 使用正交表设计测试用例 227
18.4 其他黑盒测试用例设计技术 228
18.4.1 错误推测法 228
18.4.2 基于风险的测试 229
18.4.3 比较测试 229
18.5 小结 230
第19章 性能测试的方法 231
19.1 引言 231
19.2 基本概念 231
19.2.1 软件性能 231
19.2.2 软件性能测试的几个术语 232
19.3 性能测试的方法 233
19.3.1 性能测试 233
19.3.2 压力测试 234
19.3.3 负载测试 235
19.3.4 配置测试 235
19.3.5 并发测试 236
19.3.6 可靠性测试 237
19.3.7 失效恢复测试 237
19.4 性能测试应用领域分析 238
19.4.1 能力验证 238
19.4.2 规划能力 238
19.4.3 性能调优 239
19.4.4 发现缺陷 240
第20章 用户界面测试 241
20.1 引言 241
20.2 用户界面测试的必要性 241
20.3 如何进行用户界面测试 242
20.3.1 用户界面测试的时机 242
20.3.2 用户界面测试的要点 242
20.4 用户界面测试的原则 244
20.4.1 亲和力 244
20.4.2 协助 245
20.4.3 有效 246
20.4.4 鼓励 247
20.4.5 熟悉 248
20.4.6 明显 248
20.4.7 个性化 249
20.4.8 安全 249
20.4.9 满意 250
20.4.10 简单 251
20.4.11 支持 251
20.4.12 多样性 251
第21章 国际化本地测试 253
21.1 引言 253
21.2 软件国际化测试 253
21.2.1 软件国际化测试的概念 253
21.2.2 国际化测试方法和内容 255
21.2.3 软件国际化能力测试 258
21.2.4 软件本地化能力测试 259
21.3 软件本地化测试 260
21.3.1 本地化测试的目的 260
21.3.2 本地化测试的原则 261
21.3.3 本地化测试的内容 261
21.3.4 本地化测试执行策略 262
第22章 验收测试阶段 264
22.1 引言 264
22.2 验收测试 264
22.2.1 验收测试的概念 264
22.2.2 验收测试的标准 264
22.2.3 验收测试的过程 265
22.3 实施验收测试的常用策略 266
22.3.1 正式验收测试 266
22.3.2 α验收测试 267
22.3.3 β验收测试 267
22.4 验收测试的总体思路 268
22.4.1 软件配置审核 269
22.4.2 可执行程序的测试 269
22.5 验收测试工作流程 270
第23章 测试计划编写规范 272
23.1 引言 272
23.2 测试计划 272
23.3 制定测试计划的必要性 274
23.4 测试计划与测试过程的关系 274
23.5 测试计划模板 277
第24章 测试结果分析和质量报告 289
24.1 软件质量的定义 289
24.2 软件质量的内涵 289
24.3 测试质量分析 290
24.3.1 评估系统测试的覆盖程度 291
24.3.2 对软件需求的估算 291
24.3.3 基于需求的测试覆盖评估 292
24.3.4 基于代码的测试覆盖评估 292
24.4 软件缺陷的分析方法 292
24.4.1 缺陷分布报告 293
24.4.2 缺陷趋势报告 294
24.4.3 软件产品性能评估 295
24.5 测试的总结报告 296
24.6 模板 297
24.6.1 测试报告模板 298
24.6.2 测试统计表 300
24.7 测试过程的质量控制 300
24.7.1 把握需求 300
24.7.2 变更控制 301
24.7.3 度量与分析 301
24.7.4 测试过程可持续改进 302
24.7.5 测试人员工作质量的衡量 302
24.8 测试文档管理 305
24.8.1 测试文档的分类管理和维护 305
24.8.2 测试文档的存储和共享 306
24.8.3 文档模板 306
24.9 测试的复用与维护 307
24.9.1 测试过程的复用与维护 307
24.9.2 测试用例和软件缺陷报告的复用 308
24.10 小结 308
2 上机部分 313
第25章 BugFree的使用 313
25.1 BugFree的安装 313
25.2 BugFree的使用 314
25.2.1 主界面 314
25.2.2 Bug管理 315
25.2.3 Test Case管理 317
25.2.4 Test Result管理 317
25.2.5 查询结果 317
25.2.6 统计报表 318
25.2.7 后台管理 319
25.3 实践说明 320
25.4 阶段划分及目标 320
25.5 上机提示 320
第26章 黑盒(功能)测试技术一 322
26.1 说明 322
26.2 阶段划分及目标 322
26.3 上机提示 323
第27章 黑盒(功能)测试技术二 324
27.1 说明 324
27.2 阶段划分及目标 324
27.3 上机提示 325
第28章 用户界面测试 326
28.1 说明 326
28.2 阶段划分及目标 326
28.3 上机提示 327
参考文献 328