第一部分 关于微软 2
第1章 微软的软件工程 2
1.1 微软的愿景和价值观,为何我们“爱微软” 2
1.2 微软是大型的软件工程公司 5
1.3 拓展大型且高效的业务 6
1.4 在“大”公司中做“小”项目 8
1.5 聘用多种类型的工程师 11
1.6 全球化的软件开发公司 13
1.7 本章小结 15
第2章 微软的软件测试工程师 16
2.1 职位名称的含义 17
2.2 微软测试工程师的职称并非一直都是SDET 18
2.3 我需要更多的测试工程师,立刻就要 21
2.3.1 校园招聘 22
2.3.2 业界招聘 23
2.4 学习如何成为微软的SDET 23
2.5 微软工程师的职业发展 24
2.6 测试职种的发展道路 25
2.6.1 测试架构师 25
2.6.2 测试独立贡献者 26
2.6.3 成为管理者并不意味着升职 27
2.6.4 测试经理 28
2.7 本章小结 29
第3章 工程生命周期 30
3.1 微软的软件工程 30
3.1.1 传统软件工程模型 31
3.1.2 里程碑模式 33
3.1.3 微软的敏捷开发 35
3.1.4 宏观视野 37
3.2 流程改进 38
3.3 从“作战室”发布软件 39
3.4 本章小结 41
第二部分 关于测试 44
第4章 软件测试用例设计的实用方法 44
4.1 实践良好的软件设计和测试设计 44
4.2 使用测试模式 45
4.3 估计测试时间 46
4.4 从测试开始 47
4.4.1 搜出问题 47
4.4.2 制定测试策略 48
4.5 考虑可测试性 48
4.6 同时用好数据和坏数据进行测试 50
4.7 测试用例设计中应考虑的其他因素 51
4.7.1 黑盒测试、白盒测试和灰盒测试 51
4.7.2 微软的探索性测试 52
4.8 本章小结 52
第5章 功能测试技术 53
5.1 功能测试的需求 53
5.2 等价类划分 57
5.2.1 变量分解 58
5.2.2 等价类划分实战 59
5.2.3 参数子集分析 60
5.2.4 等价类划分测试 62
5.2.5 等价类划分小结 64
5.3 边界值分析 65
5.3.1 定义边界测试 66
5.3.2 边界值分析:一个全新的公式 67
5.3.3 隐性边界 69
5.3.4 边界值分析小结 71
5.4 组合分析 71
5.4.1 组合测试的途径 72
5.4.2 组合分析实践 74
5.4.3 组合分析的有效性 79
5.4.4 组合分析小结 80
5.5 本章小结 80
第6章 结构测试技术 82
6.1 块测试 84
6.2 判定测试 90
6.3 条件测试 92
6.4 基础路径测试 94
6.5 本章小结 101
第7章 用代码复杂度分析风险 102
7.1 风险行业 102
7.2 复杂问题 103
7.3 测量回路复杂度 104
7.3.1 Halstead度量 107
7.3.2 面向对象的度量 108
7.3.3 回路复杂度高并不表示缺陷累累 109
7.4 如何利用复杂度度量 110
7.5 本章小结 110
第8章 基于模型的测试 112
8.1 采用模型测试 113
8.1.1 设计模型 114
8.1.2 模型化软件 115
8.1.3 建立有限状态模型 117
8.1.4 模型自动化 117
8.2 不带测试的建模 122
8.2.1 贝叶斯图解模型 122
8.2.2 Petri网 123
8.3 微软的基于模型的测试工具 123
8.3.1 Spec Explorer 124
8.3.2 语言和引擎 128
8.3.3 建模提示 131
8.4 本章小结 131
8.5 推荐资料和工具 132
第三部分 测试工具和系统 134
第9章 缺陷和测试用例管理 134
9.1 缺陷工作流程 135
9.2 缺陷的跟踪 136
9.2.1 一个缺陷的生命周期 136
9.2.2 缺陷跟踪系统的特征 137
9.2.3 为什么撰写缺陷报告 138
9.2.4 解剖缺陷报告 138
9.2.5 缺陷会审 140
9.2.6 缺陷报告中常见的错误 142
9.2.7 数据使用 144
9.2.8 何时不能使用缺陷数据:缺陷作为绩效度量 145
9.2.9 缺陷门槛 146
9.3 测试用例管理 149
9.3.1 什么是测试用例 149
9.3.2 测试用例的价值 150
9.3.3 剖析测试用例 151
9.3.4 测试用例误区 152
9.4 管理测试用例 153
9.4.1 测试用例和测试点:计算测试用例 154
9.4.2 跟踪和解释测试结果 155
9.5 本章小结 156
第10章 测试自动化 157
10.1 自动化的价值 157
10.2 用户界面自动化 160
10.3 自动化测试包括什么 163
10.4 微软中的“SEARCH” 166
10.4.1 设置 166
10.4.2 执行 168
10.4.3 分析 172
10.4.4 报告 174
10.4.5 清理 175
10.4.6 帮助 175
10.5 让自动化测试跑起来 176
10.5.1 把一切装配起来 176
10.5.2 大型自动化测试系统 177
10.5.3 测试自动化中的常见错误 177
10.6 本章小结 178
第11章 非功能测试 179
11.1 功能之外 179
11.2 属性测试 180
11.3 性能测试 181
11.4 压力测试 183
11.4.1 分布式压力测试 185
11.4.2 分布式压力架构 185
11.4.3 多客户端压力测试的特点 187
11.5 兼容性测试 187
11.5.1 应用软件库 188
11.5.2 应用程序检验器 189
11.6 吃我们自己的“狗食” 190
11.7 适用性测试 190
11.7.1 可达性角色 192
11.7.2 可达性测试 193
11.7.3 微软主动式辅助(MSAA)测试工具 193
11.8 可用性测试 193
11.9 安全测试 195
11.9.1 威胁建模 195
11.9.2 模糊测试 195
11.10 本章小结 196
第12章 其他工具 197
12.1 代码改动量 197
12.2 一切尽在掌握 198
12.2.1 追踪变更 198
12.2.2 什么改变了 199
12.2.3 为何改变 201
12.2.4 集中型的源代码管理控制 202
12.3 软件构建 204
12.4 静态分析 209
12.4.1 本机代码分析 209
12.4.2 托管代码分析 211
12.4.3 工具只是工具 212
12.4.4 测试代码分析 212
12.4.5 测试代码也属于产品代码 214
12.5 更多工具 214
12.5.1 解决特定问题的工具 214
12.5.2 服务大众的工具 214
12.6 本章小结 215
第13章 用户反馈系统 216
13.1 测试和质量 216
13.1.1 测试提供了信息 216
13.1.2 质量感知 217
13.2 用户救援 218
13.3 Windows错误报告(WER) 221
13.3.1 WER的工作原理 222
13.3.2 填入存储桶 224
13.3.3 清空存储桶 224
13.3.4 测试和WER 225
13.4 微笑,微软和你一同微笑 225
13.5 连接用户 227
13.6 本章小结 230
第14章 测试软件加服务 231
14.1 第一部分关于服务 232
14.1.1 微软的服务战略 232
14.1.2 业务重心向Internet服务迁移 232
14.1.3 从大规模成长为超大规模 233
14.1.4 能源是成长的瓶颈 235
14.1.5 服务与盒装软件 236
14.1.6 从单机软件到多层次服务 238
14.2 第二部分测试软件加服务 239
14.2.1 创新的浪潮 239
14.2.2 设计合适的软件加服务测试方法 240
14.2.3 软件加服务测试技术 245
14.3 另一些关于软件加服务的重要思想 260
14.3.1 持续质量提高计划 260
14.3.2 我见过的被忽略的常见缺陷 263
14.4 本章小结 263
第四部分 关于未来 266
第15章 今天解决明天的问题 266
15.1 自动失败分析 266
15.1.1 战胜分析瘫痪 266
15.1.2 匹配游戏 267
15.1.3 好的日志记录实践 268
15.1.4 日志文件剖析 269
15.1.5 集成AFA 270
15.2 机器虚拟化 271
15.2.1 虚拟化的好处 271
15.2.2 虚拟机测试场景 272
15.2.3 当测试时发生失败 275
15.2.4 不建议使用的测试场景 276
15.3 代码审查和检视 276
15.3.1 代码审查的类型 276
15.3.2 核查清单 277
15.3.3 其他考虑 278
15.3.4 审查的两面性 280
15.4 工具无处不在 280
15.4.1 提炼、重用、回收 280
15.4.2 问题在哪 281
15.4.3 开放式的开发 281
15.5 本章小结 282
第16章 构建未来 283
16.1 前瞻性思考的需求 283
16.1.1 通过追本溯源进行前瞻性思考 283
16.1.2 努力培养质量文化 284
16.1.3 测试和质量保证 284
16.1.4 质量该谁管 285
16.1.5 质量成本 286
16.1.6 测试的新角色 286
16.2 测试领域的领导力 287
16.2.1 微软测试领导团队 287
16.2.2 测试领导团队主席 287
16.2.3 测试领导力在行动 288
16.2.4 测试架构师团队 289
16.3 卓越测试 290
16.3.1 共享 291
16.3.2 帮助 291
16.3.3 沟通 292
16.3.4 关注未来 293
16.3.5 微软公司卓越测试主任 294
16.3.6 三方面的领导 294
16.4 为未来创新 294
中英文对照术语表 296