第1章 软件测试概述 1
1.1 软件测试背景 1
1.1.1 软件可靠性问题 2
1.1.2 软件缺陷与故障 2
1.1.3 软件缺陷产生的原因 6
1.2 软件测试基础理论 6
1.2.1 软件测试的定义 6
1.2.2 软件测试的基本理论 8
1.2.3 软件测试和缺陷修复的代价 11
1.2.4 软件测试技术概要 11
1.3 软件开发过程 13
1.3.1 软件产品的组成 14
1.3.2 软件开发项目组 16
1.3.3 软件开发模式 17
1.4 软件开发与软件测试的关系 21
1.5 软件测试过程 22
1.5.1 制定测试计划 22
1.5.2 测试执行过程 23
1.6 软件质量保证概要 25
1.6.1 软件质量管理 25
1.6.2 软件能力成熟度模型 29
1.6.3 ISO9000标准简介 33
1.7 软件测试职业 35
1.7.1 软件测试职业和职位 35
1.7.2 软件测试职业素质 36
习题与思考 36
第2章 软件测试策略与过程 37
2.1 软件测试的复杂性分析 37
2.2 软件测试方法与策略 40
2.2.1 静态测试与动态测试 40
2.2.2 黑盒测试与白盒测试 43
2.2.3 软件测试过程 45
2.3 单元测试 46
2.3.1 单元测试的主要任务 46
2.3.2 单元测试的执行过程 49
2.4 集成测试 49
2.4.1 非增量式测试 49
2.4.2 增量式测试 50
2.4.3 不同集成测试方法的比较 51
2.4.4 回归测试 52
2.5 确认测试 52
2.6 系统测试 53
2.7 验收测试 57
2.7.1 验收测试的内容 57
2.7.2 软件配置和文档资料测试 57
2.8 测试后的调试 58
2.9 面向对象的软件测试 59
习题与思考 60
第3章 黑盒测试及其用例的设计 61
3.1 黑盒测试法的概念 61
3.2 三角形问题与NextDate函数 63
3.3 等价类划分法 64
3.3.1 等价类的划分原则 64
3.3.2 等价类划分法的测试用例设计 65
3.3.3 常见等价类划分测试形式 66
3.4 边界值分析法 68
3.4.1 边界值分析法概要 68
3.4.2 边界值分析法测试用例 70
3.4.3 边界值分析法测试举例 71
3.5 因果图法 72
3.5.1 因果图法的思想 72
3.5.2 因果图法 73
3.5.3 因果图法举例 74
3.6 决策表法 75
3.6.1 决策表 76
3.6.2 决策表应用 78
3.7 测试方法的选择 82
3.8 案例运用 82
3.8.1 用等价类划分法测试保险公司计算保费费率的程序 82
3.8.2 决策表测试应用案例 84
习题与思考 85
第4章 白盒测试及其用例的设计 86
4.1 白盒测试方法 86
4.2 白盒测试的基本概念 87
4.2.1 流图 87
4.2.2 环形复杂度 88
4.2.3 图矩阵 89
4.3 覆盖测试 89
4.3.1 函数覆盖 89
4.3.2 判定路径覆盖 90
4.3.3 更改条件判定覆盖 90
4.3.4 分支条件组合覆盖 90
4.3.5 Z路径覆盖 90
4.3.6 ESTCA覆盖 91
4.3.7 层次LCSAJ覆盖 92
4.3.8 继承上下文覆盖 92
4.3.9 基于状态的上下文覆盖 92
4.3.10 覆盖率测试用例设计 93
4.4 路径测试 97
4.4.1 路径表达式 97
4.4.2 基本路径测试方法 98
4.4.3 循环测试方法 100
4.4.4 产生测试用例 102
4.5 案例运用 103
习题与思考 105
第5章 特定环境及应用测试 106
5.1 客户/服务器体系结构测试 107
5.1.1 客户/服务器体系结构测试 107
5.1.2 Web网站的测试 109
5.2 图形用户界面GUI测试 111
5.3 实时系统测试 113
5.4 面向对象软件的测试 113
5.4.1 面向对象的特点 114
5.4.2 面向对象软件测试模型 117
5.4.3 类的功能性测试和结构性测试 124
5.4.4 状态转移图的面向对象软件测试 126
5.5 测试运用 127
5.5.1 对Web进行压力测试 127
5.5.2 类的数据流测试 130
习题与思考 135
第6章 软件自动化测试基础 136
6.1 软件自动化测试基础 137
6.1.1 自动化测试的产生 137
6.1.2 自动化测试的定义和引入 138
6.1.3 自动化测试工具的作用及优势 139
6.1.4 自动化测试脚本 140
6.1.5 自动化测试的运用 143
6.2 软件自动化测试生存周期方法学 144
6.3 软件自动化测试生存周期方法的应用 146
6.3.1 建立正确的自动化测试目标 146
6.3.2 测试自动化限制与测试工具存在的不足 148
6.4 软件自动化测试工具简述 149
6.4.1 白盒测试工具 149
6.4.2 黑盒测试工具 150
6.4.3 测试设计与开发工具 151
6.4.4 测试执行和评估工具 151
6.4.5 测试管理工具 152
6.4.6 常用软件自动化测试工具概要 152
习题与思考 157
第7章 Rational系统测试组件的运用 158
7.1 Rational系统测试整体解决方案简介 159
7.1.1 Rational系统测试组件概况 159
7.1.2 Rational Suite产品简介 160
7.2 Rational Suite Enterprise的安装 164
7.3 Rational Purify 165
7.3.1 Rational Purify功能简介 165
7.3.2 Rational Purify工具特性 166
7.3.3 实用举例 173
7.4 Rational PureCoverage 177
7.4.1 Rational PureCoverage功能 177
7.4.2 Rational PureCoverage工具特性 178
7.4.3 实用举例 180
7.5 Rational Quantify 182
7.5.1 Rational Quantify功能简介 182
7.5.2 Rational Quantify工具特性 183
7.5.3 实用举例 186
7.6 Rational Robot 189
7.6.1 Rational Robot概要 189
7.6.2 使用GUI脚本 191
7.6.3 记录GUI脚本 194
7.6.4 在GUI Script中加入特写 199
7.6.5 使用查证点 203
7.6.6 使用Datapool 204
7.6.7 编辑GUI脚本 207
7.6.8 编译GUI脚本 208
7.6.9 调试GUI脚本 209
7.6.10 回放GUI脚本 210
7.6.11 工具条操作 211
7.6.12 VU脚本 213
7.6.13 删除VB脚本 217
7.6.14 关于SQA Basic 217
7.6.15 测试Delphi应用程序 221
7.6.16 测试Visual Basic应用程序 222
习题与思考 223
第8章 WinRunner测试系统工具的运用 224
8.1 WinRunner介绍 224
8.1.1 测试模式 225
8.1.2 WinRunner测试过程 225
8.1.3 样本软件 226
8.1.4 使用TestSuite(测试套件) 227
8.2 使用WinRunner 227
8.3 WinRunner如何识别应用程序的GUI对象 229
8.4 理解GUI Map 232
8.5 Global GUI Map File模式的使用 235
8.5.1 关于Global GUI Map File模式 235
8.5.2 测试中共享GUI Map File 236
8.5.3 让WinRunner学习GUI 236
8.5.4 保存GUI Map 240
8.5.5 加载GUI Map文件 241
8.6 GUI Map File per Test模式的使用 242
8.7 编辑GUI Map 244
8.7.1 关于编辑GUI Map 244
8.7.2 运行指南(Run Wizard) 244
8.7.3 GUI Map编辑器 245
8.7.4 修改逻辑名和物理描述 246
8.7.5 WinRunner处理可变的窗体卷标 247
8.7.6 在物理描述中使用常规表达式 248
8.7.7 在文件间复制和移动对象 249
8.7.8 在GUI Map File里找到对象 249
8.7.9 在多个GUI Map File里找到对象 250
8.7.10 在GUI Map File里手工添加对象 250
8.7.11 从GUI Map File里删除对象 250
8.7.12 清除GUI Map File 251
8.7.13 筛选显示对象 251
8.7.14 保存GUI Map的变更 251
8.8 合并GUI Map File 252
8.8.1 关于合并GUI Map File 252
8.8.2 合并GUI Map File的准备 252
8.8.3 解决自动合并GUI Map文件的冲突 253
8.8.4 手工合并GUI Map文件 254
8.8.5 改变到Global GUI Map File模式 255
8.9 配置GUI Map 256
8.9.1 关于配置GUI Map 256
8.9.2 理解GUI Map的默认配置 256
8.9.3 把自定义对象映射到标准的类 257
8.9.4 配置标准或自定义的类 258
8.10 为类创建永久的GUI Map配置 260
8.11 关于学习虚拟对象 264
8.11.1 定义一个虚拟对象 265
8.11.2 理解虚拟对象的物理描述 266
8.12 创建测试 267
8.12.1 关于创建测试 267
8.12.2 解决常见的环境感应录制问题 267
8.12.3 模拟录制 268
8.12.4 检查点 268
8.12.5 数据驱动测试 268
8.12.6 同步点 269
8.12.7 计划一个测试 269
8.12.8 测试信息文档化 269
8.12.9 测试相关插件 270
8.12.10 录制测试 270
8.12.11 用热键激活测试创建命令 271
8.12.12 测试编程 272
8.12.13 编辑测试 272
8.13 检查GUI对象 273
8.13.1 关于检查GUI对象 273
8.13.2 检查单个属性的值 273
8.13.3 检查单个对象 274
8.13.4 检查一个窗体中的多个对象 275
8.13.5 检查一个窗体中的所有对象 276
8.13.6 理解GUI检查点语句 277
8.13.7 修改GUI检查清单 278
8.13.8 理解GUI检查点对话框 278
8.13.9 属性检查和默认检查 279
8.13.10 为属性检查指定变量 281
8.13.11 常规表达式属性检查 282
8.13.12 时间格式属性检查 283
8.13.13 关闭GUI检查点对话框 283
8.13.14 编辑属性期望值 283
8.13.15 修改GUI检查点的期望结果 284
习题与思考 285
第9章 软件测试管理 286
9.1 测试组织管理 286
9.1.1 测试组织策划 287
9.1.2 测试组织管理 288
9.1.3 配置和管理测试环境 292
9.2 确定测试内容 294
9.2.1 测试计划 294
9.2.2 测试计划的制定 295
9.3 确定测试过程 297
9.3.1 测试过程描述 297
9.3.2 测试阶段 298
9.3.3 分析软件问题报告 299
9.4 测试文档管理 300
9.4.1 IEEE/ANSI测试文档概述 300
9.4.2 软件生命周期各阶段测试交付的文档 302
9.4.3 测试文档类型 304
9.4.4 测试过程检查单 308
9.5 测试管理运用 310
9.5.1 一个实用软件测试过程 310
9.5.2 功能测试用例的编写 313
9.5.3 单元测试指导方案 316
习题与思考 318
参考文献 319