微软一线测试专家实战精华
全面涵盖软件测试实用技术
《软件测试实战:微软技术专家经验总结》从多个角度讨论了测试人员的实际工作,包括缺陷报告、测试文档、测试建模、测试设计、测试自动化、研究产品、研究项目环境、测试管理、个人管理、实践案例等。书中崭新的观念与技术将有助于读者更好地提交缺陷报告,在项目末期的缺陷压力下更好地做回归测试。
《软件测试实战:微软技术专家经验总结》适用于测试新手以及初级测试人员。
第1章 软件测试基础
1.1 软件的复杂度已经超越了人的理解能力
1.2 软件测试是获取信息的技术调查
1.3 测试是迭代过程
1.4 测试人员的工作效率取决于他对软件和项目的理解,而不是他掌握的测试技术
1.5 小结
第2章 缺陷报告
2.1 报告缺陷是为了让缺陷得到修复
2.2 高质量的缺陷报告来自于高质量的测试
2.2.1 分配测试时间
2.2.2 通过技术调查发现更多的信息
2.2.3 处理难以重现的缺陷
2.3 编写高质量的缺陷报告
2.3.1 为每一个缺陷单独提交一份缺陷报告,小缺陷也是如此
2.3.2 仔细编写缺陷报告的标题
2.3.3 像编写详细测试用例那样编写重现步骤
2.3.4 使用缺陷模板来提交缺陷
2.3.5 在编写缺陷报告时,要考虑缺陷查询
2.3.6 链接相关的缺陷
2.3.7 注意缺陷报告的可读性
2.3.8 客观中立地书写缺陷报告
2.4 对不予修复的缺陷进行上诉
2.5 周密地测试缺陷修复
2.6 坚持阅读缺陷报告
2.7 小结
第3章 测试文档
3.1 测试文档是持续演化的工具
3.1.1 测试文档是提供测试信息的一组文档
3.1.2 在测试中演化测试文档
3.1.3 注重实效的测试文档
3.2 形形色色的测试文档
3.2.1 测试计划
3.2.2 Google ACC
3.2.3 测试设计规约
3.2.4 功能列表
3.2.5 大纲与思维导图
3.2.6 表格(矩阵)
3.2.7 测试指南
3.2.8 测试想法列表
3.2.9 质量特性列表
3.2.10 操作文档
3.2.11 检查列表
3.2.12 缺陷目录
3.2.13 测程表
3.2.14 移交文档
3.3 在测试中发展测试文档
3.3.1 初始测试文档
3.3.2 发展测试文档
3.4 小结
第4章 测试建模
4.1 从组合测试看建模的重要性
4.1.1 组合测试简介
4.1.2 根据语境来完善组合测试的模型
4.1.3 测试建模的基本点
4.2 常用测试建模方法
4.2.1 启发式测试策略模型
4.2.2 输入与输出模型
4.2.3 系统生态图
4.2.4 实体关系模型
4.2.5 状态机模型
4.2.6 多种多样的模型
4.3 小结
第5章 测试技术
5.1 测试技术分类系统
5.2 启发式方法
5.3 测试先知
5.3.1 测试先知的定义
5.3.2 FEW HICCUPPS
5.3.3 约束检查
5.4 漫游测试
5.4.1 基本漫游方法
5.4.2 基于旅行者隐喻的漫游方法
5.4.3 移动测试漫游方法
5.4.4 实施漫游测试
5.5 快速测试
5.5.1 James Bach的方法
5.5.2 Cem Kaner的方法
5.5.3 James Whittaker的方法
5.6 情景测试
5.6.1 基本方法
5.6.2 设计用户角色
5.6.3 情景测试与漫游测试
5.6.4 肥皂剧测试
5.6.5 虚拟业务
5.7 多样地选择测试技术
5.8 小结
第6章 测试开发
6.1 测试开发分类
6.2 注重实效的自动化测试
6.2.1 自动化测试的基本策略
6.2.2 将测试开发视作软件开发
6.2.3 利用自动化测试金字塔来指导测试开发
6.2.4 面向调试的测试代码
6.2.5 系统测试的测试开发
6.2.6 让自动化测试服务于项目
6.3 计算机辅助测试
6.3.1 "交通工具"的隐喻
6.3.2 选择合适的开发技术
6.4 大规模自动化测试
6.4.1 基本概念
6.4.2 测试设计
6.5 小结
第7章 研究产品
7.1 静态分析
7.1.1 浏览源代码来理解产品实现
7.1.2 分析源代码来帮助测试设计
7.1.3 黑盒测试并不是基于无知的测试
7.2 动态分析
7.2.1 用工具分析产品的行为
7.2.2 在调试器中观察软件行为
7.3 业务研究
7.3.1 理解关系人
7.3.2 评审需求文档
7.3.3 通过测试来研究
7.3.4 利用互联网资源
7.3.5 领域研究
7.4 研究策略
7.5 小结
第8章 研究项目
8.1 项目团队
8.1.1 了解团队组织
8.1.2 语境独立的启发式问题
8.1.3 了解团队成员
8.2 面向测试的项目分析
8.2.1 软件缺陷
8.2.2 源代码
8.2.3 构建
8.2.4 自动化测试
8.3 基于风险的测试
8.3.1 通过测试调查风险
8.3.2 失败模式
8.3.3 项目级别的风险
8.4 小结
第9章 团队工作
9.1 工作风格
9.1.1 测试人员通过服务团队来体现自己的价值
9.1.2 测试人员应该正直
9.1.3 测试人员的影响力来自于出色的工作
9.1.4 信任程序员的努力,并用技术调查检验其工作
9.2 测试管理
9.2.1 个人测试计划应该是项目测试计划的延伸
9.2.2 制订个人测试计划时应该综合考虑各种项目元素
9.2.3 测试需要动态管理
9.3 软件估算
9.3.1 测试人员应该估算自己的任务
9.3.2 用计数和计算作为估算手段
9.3.3 历史数据是估算的重要参考
9.3.4 同时估算最差情况和最好情况
9.4 度量
9.4.1 理解度量方法的基本元素
9.4.2 明确度量的目标
9.4.3 掌握属性和算法的联系
9.4.4 理解度量方法的优点和缺点
9.4.5 密切关注度量的副作用
9.4.6 注重实效的计算
9.5 测试小组
9.5.1 价值观
9.5.2 团队建设
9.6 小结
第10章 个人管理
10.1 时间管理
10.1.1 利用任务清单记录所有工作项
10.1.2 坚持周计划和每日回顾
10.1.3 专注是高效工作的前提
10.1.4 恰到好处的文档化和自动化
10.2 持续学习
10.2.1 在工作中学习
10.2.2 持续阅读
10.3 且行且思
10.4 成为专家
10.5 小结
参考文献
★“在层出不穷的软件技术当中,软件测试一直扮演着幕后英雄的角色。没有测试,对发布者来说,就无法对质量有信心;对开发者来说,就有可能在修改代码的时候捅出了大娄子自己还不知道。小到代码中的一行assert,大到场景测试,本质上都是测试。专业测试人员固然需要系统学习测试,但在开发和测试的边界日趋模糊的今天,开发者学习测试也是很加分的。我在上大学的时候就认识史亮兄,他一直是厚积薄发的一个人,正是坐得了冷板凳,拿得出硬功夫。在微软做了一线测试工程师多年之后,再花上一整年的时间写作,才有这本著作,很值得一读。”
——刘未鹏,微软软件开发工程师,《暗时间》的作者
★“在所有软件测试的书中,这是我看过的最好的一本。看到有些章节的时候,都忍不住把里面的方法往手头的产品上靠。即便是粗略读一遍后获取的灵感和思路,都足够让我兴奋一周,更别提带来的实际价值了。软件测试是极其有趣的工作。作者不但精于此道,乐在其中,还能深入浅出地把各种思路、诀窍、心得甚至趣事跟大家共享,这将极大地推动人类文明的进程!”
——熊力,微软资深软件开发工程师,《Windows用户态程序高效排错》的作者