Chapter 1
Introduction to Google Software Testing
Google 软件测试团队 属于 Engineering Productivity 的中心组织部门
1. 质量不等于测试
质量不是被测试出来的。把开发和测试融合到一起,开发和测试必须同时进行。
Google少专职测试人员,开发测试,开发对质量负责。测试是开发过程必不可少的一部分。
质量是一种预防,而不是检测。Google测试的目标是来判断这种预防工作做的怎么样。
如果在你的职位头衔上有测试的字样,你的任务就是怎样使那些头衔上没有测试的人可以更好地测试。
2. 角色
测试--提高生产率
软件开发工程师(SWE) :增加功能性代码或提高性能的代码
软件测试开发工程师(SET):关注于质量提升和测试覆盖率的增加
测试工程师(TE) :把用户放在第一位来考虑。
Chapter 2
软件测试开发工程师
功能开发人员:思维模式是创建,重点在考虑用户、使用场景和数据流程上。
测试开发人员:思路是去破坏,怎么写测试代码用以扰乱分离用户及其数据。
用户开发人员:负责从用户角度来考虑质量方面各种问题。
1. 提交队列和持续集成
能定位问题位置
等待提交的CL必须排队,等待测试(串联)--》等待的CL在互相隔离的前提下,并发地构建并运行测试
2. 测试大小定义
小型测试:通常为单元测试
中型测试:验证两个或两个模块应用之间的交互。常被称为“集成测试”
大型测试:为了验证整个系统作为一个整体是如何工作的。通常被称为“系统测试”或“端到端测试”
小型测试带来优秀的代码质量、良好的异常处理、优雅的错误报告;大中型测试会带来整体产品质量和数据验证。


3. 测试认证
级别一:基本准备,建立测试运行的自动化机制、收集测试覆盖率、去除所有非确定性的测试、挑选冒烟测试集合
级别二:着重提高增量覆盖率
级别三:重点是测试新增代码
级别四:测试历史遗留代码,需要针对可测试性做一些重构
级别五:要求更好的整体覆盖率,针对每个缺陷都增加测试用例,并要求使用已有可用的静态与动态分析检查工具。
Selenium WebDriver 是怎么运行的?https://zhuanlan.zhihu.com/p/41235936
Chapter 3
测试工程师
1. 测试工程师的工作
TE在进入产品时,需要考虑以下一些问题:
1)当前软件的薄弱点在哪里?
2)有没有安全、隐私、性能、可靠性、可用性、兼容性、全球化和其他方面的问题?
3)这个产品能与其他产品(软件和硬件)互操作吗?
4)当发生问题的时候,是否容易诊断问题所在?
2. TE职责的一般性描述
1)测试计划和风险分析
测试计划:了解 产品特质、组件、能力
产品特质 是系统的形容词,代表了产品的品质和特色
组件 是构成待建系统的模块
能力 处于特质和组件的交点 最重要的一个特点是它的可测试性
eg:从购物车里增加或者删除物品。这是购物车组件在满足直观的UI特质时的一个能力
2)评审需求、设计、代码和测试
3)探索式测试
4)用户场景
5)编写测试用例
6)执行测试用例
7)众包
8)使用统计
9)用户反馈
3. 风险
4. 自动化测试在手工测试之前,这样,手工测试开始的时候,代码质量已经相当高了
5. 工具帮助越过困难、重复性的测试,将人力劳动集中在 探索性测试等更具创新性的事情上
Chapter4
测试工程经理
好的TEM:1. 了解你的产品;2. 知人善用
不允许不必要的工作存在,也不需要不产生价值的改进。
影响力 提升影响力
1) 做事之前先问 为什么 比较重要的两点:1. 因为它能够提高产品的质量; 2. 因为它能提高工程师开发产品的效率。
2) 快速迭代 and 高质量 矛盾且具挑战
3) 每一件事情都要创造价值,并且能够持续地创造价值
4) 先虚心学习,再在一线作出成绩,然后开始寻求创新的方法。
Chapter5
Google软件测试改进
Google 的测试流程可以非常简练地概括为:让每个工程师都注重质量。如果我们都诚实认真地这么做,质量就一定会提高。代码质量从一开始就能更好,早期构建版本的质量会更高,集成也不是必须的,系统测试可以关注与真正面向用户的问题。所有的工程师和项目才能从堆积如山的 bug 中解脱出来。
软件开发的最终目的不是编程,不是测试,不是文档,而是完成一个产品。
测试工程师(TE)会转型成测试设计。测试工程师会转变成像安全工程师这样的专家型角色,或者他们会变成测试活动的管理者,而那些具体的测试活动则由其他人来完成。
软件测试开发工程师(SET)本来就是开发工程师。