第1篇 理论篇 3
第1章 质量管理 3
1.1 软件公司生存三要素 4
1.2 质量管理简介与模式 6
1.2.1 顾客导向模式 6
1.2.2 标准衡量模式 7
1.2.3 全面质量管理 7
1.2.4 选择质量管理模式的考虑方向 7
1.3 被遗弃的软件质量管理 9
1.4 软件质量管理的重要性 10
1.4.1 降低维护成本 10
1.4.2 法律上的要求 11
1.4.3 市场竞争 12
1.4.4 质量标准化趋势 13
1.5 软件质量标准化 13
1.5.1 CMM 14
1.5.2 ISO 9000 14
1.5.3 IEEE 730 15
1.6 实施质量管理对软件公司所造成的影响 15
1.6.1 运作模式的影响 16
1.6.2 员工培训 16
1.6.3 员工态度 16
1.7 小结 16
第2章 软件生命周期简介 17
2.1 软件3 N 18
2.2 软件开发生命周期模型(Software Development Life Cycle Models) 19
2.2.1 建构修改循环模型(Build and Fix Model) 20
2.2.2 瀑布式开发模型(Waterfall Model) 21
2.2.3 增量模型(Incremental Model) 22
2.2.4 V形开发模型(V Shape Model) 22
2.2.5 快速原型模型(Rapid Prototype Model) 23
2.2.6 螺旋型开发模型(Spiral Model) 24
2.2.7 极限型开发模型(Extreme Programming Model) 26
2.2.8 如何组合使用 27
2.3 现实环境的软件开发模型 28
2.4 小结 30
第3章 软件质量管理 31
3.1 质量控制(QC) 32
3.1.1 测试(Testing) 32
3.1.2 跟踪(Tracking) 32
3.1.3 监督(Monitoring) 33
3.2 质量保证(QA) 33
3.3 软件质量管理流程 36
3.4 小结 38
第4章 软件测试 39
4.1 测试形态(Testing Types) 40
4.1.1 建构性测试(Construction Testing) 40
4.1.2 系统测试(System Testing) 42
4.1.3 专项测试(Special Testing) 43
4.2 测试技术(Testing Techniques) 45
4.2.1 准备工作(Preparation) 46
4.2.2 执行方式(Execution) 46
4.3 测试方法(Approach) 47
4.3.1 白盒测试(White-Box Testing) 48
4.3.2 黑盒测试(Black-Box Testing) 49
4.4 小结 49
第5章 软件缺陷的种类 51
5.1 Bug的历史 52
5.2 造成软件缺陷的原因 53
5.2.1 程序编写错误 53
5.2.2 编写程序未按照规定 54
5.2.3 软件越来越复杂 56
5.2.4 开发人员的态度 57
5.2.5 测试人员的经验与技巧不足 57
5.2.6 沟通上的问题 57
5.2.7 需求变更太过频繁 58
5.2.8 进度上的压力 58
5.2.9 管理上的缺失 59
5.3 缺陷的种类 59
5.3.1 功能不正常 60
5.3.2 难以使用的软件 60
5.3.3 未做良好规划的软件 61
5.3.4 所提供的功能不足 61
5.3.5 与使用者的互动 62
5.3.6 使用性能太差 62
5.3.7 未做好错误处理 63
5.3.8 边界错误 63
5.3.9 计算错误 64
5.3.10 使用一段时间所产生的错误 65
5.3.11 控制流程的错误 65
5.3.12 在压力之下所产生的错误 66
5.3.13 不同硬件设备所产生的错误 66
5.3.14 版本控制不良所产生的错误 67
5.3.15 文件的错误 67
5.4 小结 68
第2篇 实战篇 71
第6章 问题跟踪系统 71
6.1 实施目的 72
6.1.1 质量无法控制 72
6.1.2 问题无法量化 72
6.1.3 重复问题接连产生 73
6.1.4 解决问题的知识无法保留 74
6.2 问题的生命周期(Bug Lifecycle) 74
6.3 设置问题的等级(Bug Priority and Bug Severity) 76
6.4 系统的基本功能(Basic Functions) 78
6.4.1 功能 78
6.4.2 字段 78
6.5 如何运用问题跟踪系统 81
6.5.1 基本使用规则 81
6.5.2 测试人员使用规则 82
6.5.3 开发人员使用规则 83
6.5.4 管理人员使用规则 83
6.5.5 运用层面 84
6.6 购买还是自行建置 86
6.6.1 预算 86
6.6.2 组织结构 87
6.6.3 教育训练 87
6.6.4 管理 87
6.6.5 维护 87
6.6.6 输出文件 88
6.6.7 系统安全 88
6.6.8 系统可扩展性 88
6.7 小结 88
第7章 配置测试环境 93
7.1 测试环境的快速变迁 94
7.2 配置测试环境的困难点 95
7.2.1 资源不足 95
7.2.2 操作系统的更新 95
7.2.3 硬设备的更新 96
7.2.4 新的软件不断地推出 96
7.2.5 客户端复杂的使用环境 97
7.3 如何配置测试环境 97
7.3.1 环境设立建议 98
7.3.2 硬件规格建议 99
7.3.3 安装软件建议 100
7.3.4 操作环境建议 101
7.3.5 专业管理人员 102
7.4 测试环境配置需求清单 103
7.5 测试环境与外界真实环境 105
7.6 个案讨论 106
第8章 测试用例设计 111
8.1 何谓测试用例 112
8.2 为什么软件测试需要测试用例 113
8.3 测试用例的种类 114
8.3.1 边界测试用例(Boundary Test) 114
8.3.2 功能测试用例(Functional Test) 118
8.3.3 设置测试用例(Configuration Test) 125
8.3.4 状态测试用例(Stage Test) 129
8.3.5 压力测试用例(Stress Test) 133
8.3.6 错误处理测试用例(Error Handling Test) 135
8.3.7 回归测试用例(Regression Test) 143
8.3.8 其他测试用例 144
8.4 测试用例设计技巧 150
8.4.1 设计方法 150
8.4.2 设计技巧 152
8.4.3 所需工具 153
8.5 小结 153
第9章 软件测试工具 155
9.1 使用软件测试工具的目的 156
9.1.1 帮助测试寻找问题 156
9.1.2 协助问题的诊断 157
9.1.3 节省测试时间 158
9.2 测试工具的种类 158
9.2.1 侦错用途 159
9.2.2 一般用途 159
9.2.3 自动化用途 160
9.2.4 专项目的用途 160
9.2.5 以产品功能测试为主的用途 161
9.3 Compuware NuMega侦错软件 161
9.3.1 BoundsChecker 162
9.3.2 CodeReview 162
9.3.3 SmartCheck 163
9.3.4 JCheck 164
9.3.5 SoftICE 165
9.3.6 TrueTime 165
9.3.7 TrueCoverage 166
9.3.8 FailSafe 166
9.4 GUI接口自动化测试 167
9.4.1 Visual Test 168
9.4.2 QA Wizard 171
9.5 Network Sniffer Pro 176
9.6 Sysinternals所提供的工具 183
9.6.1 Filemon 184
9.6.2 Regmon 186
9.6.3 TCPView 187
9.6.4 NthandelEx 188
9.6.5 PsTools 189
9.7 其他测试工具 190
9.7.1 Resource Kit 190
9.7.2 市售专业测试工具 191
9.7.3 自行开发的测试软件 192
9.8 小结 193
第10章 测试计划 195
10.1 编写测试计划的目的 196
10.1.1 帮助软件测试进行得更顺利 197
10.1.2 明确测试方向、促进彼此沟通 198
10.1.3 让软件测试更易于管理 198
10.2 计划的种类 199
10.3 计划的纲要 200
10.4 STP的范例 202
10.5 DTP的范例 202
10.6 小结 203
第11章 其他文件准备 205
11.1 软件开发所应准备的文件类别 206
11.1.1 销售用途 206
11.1.2 设计用途 207
11.1.3 产品用途 208
11.1.4 客服用途 210
11.1.5 测试用途 211
11.2 准备文件的目的 212
11.3 如何准备文件 214
11.4 测试人员所应准备的文件及模板 215
11.4.1 Bug Report用例 216
11.4.2 FAQ用例 217
11.4.3 Test Script用例 217
11.4.4 Performance Test Report用例 218
11.4.5 Compatibility Test Report用例 218
11.5 小结 218
第12章 I18N的介绍与L10N的测试 219
12.1 什么是I18N与L10N 220
12.2 I18N与L10N的重要性 221
12.3 多国语言的问题 223
12.3.1 Unicode与DBCS的问题 223
12.3.2 地区性数值设置(Local Setting)与字体设置(Font Setting) 224
12.3.3 扩展字符(Extended Characters) 225
12.3.4 断字(Truncation)问题 226
12.3.5 执行中所组成的字符串(Run-Time Composite Strings) 227
12.3.6 使用对象的问题 229
12.3.7 图形内容的问题 230
12.4 如何避免问题发生 230
12.5 如何实施L10N 232
12.6 如何进行L10N的测试 233
12.6.1 接口测试(Pseudo UI) 233
12.6.2 先行测试(Pilot Project) 234
12.7 小结 235
第3篇 管理篇 239
第13章 项目管理的技巧 239
13.1 经验的积累 240
13.1.1 后期诊断分析 241
13.1.2 前置问题列表 241
13.1.3 管理事务的四大项目 242
13.2 工作分割和单位化 243
13.2.1 分割的模式 243
13.2.2 分割的方法 245
13.3 分析工具 246
13.3.1 REDC 246
13.3.2 SWOT 248
13.4 建立检查单(Check List) 251
13.5 小结 252
第14章 QA人员的角色与责任 253
14.1 组织结构介绍 254
14.1.1 功能式组织结构 256
14.1.2 矩阵式组织结构 257
14.1.3 项目式组织结构 258
14.2 软件开发人员的组织结构 259
14.3 QA人员的组织结构 263
14.3.1 以产品或项目划分 263
14.3.2 以专业项目划分 263
14.3.3 以产品划分的建议事项 264
14.4 QA人员的角色扮演 264
14.4.1 QA Engineer 265
14.4.2 QA Lead 266
14.4.3 QA Manager 267
14.5 小结 268
第15章 衡量进度的技巧与方法 269
15.1 安排进度的基本观念 270
15.1.1 进度安排三要项 271
15.1.2 进度安排三重点 271
15.2 Gantt Chart(甘特图) 272
15.2.1 依存关系(Dependency) 273
15.3 PERT Chart与CPM的运用 275
15.4 COCOMO开发进度估算法 278
15.4.1 模块等级 279
15.4.2 程序代码的行数与Effort 279
15.4.3 产品分类表 279
15.4.4 计算公式表 280
15.5 EQF预估进度准确度 282
15.6 软件缺陷比率的估算 285
15.6.1 缺陷数量估算法 285
15.6.2 平均值估算法 286
15.6.3 缺陷密度估算法 286
15.6.4 缺陷群组预测法 287
15.7 小结 288
第16章 其他管理要项 289
16.1 软件缺陷反馈的漏洞 290
16.2 F4产品稳定状态图 293
16.3 文件管理 296
16.3.1 文件管理的目的 296
16.3.2 文件管理系统的管理方法 297
16.4 其他管理项目建议 298
16.5 小结 300
附录 光盘内容说明 301