2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Google 的产品质量之道

  • 2011-03-14
  • 本文字数:2148 字

    阅读完需:约 7 分钟

James Whittaker 是 Google 的测试总监,曾任微软构架师,也是“实用软件测试指南”系列图书中好几本书的作者。他最近写了一系列的博文,介绍 Google 是如何进行测试。Google 把开发和测试紧密结合在一起,测试人员相对较少,每个产品在正式上线前都要经过好几个不同的版本。

Google 保证产品质量的方法和很多公司是不一样的。Google 没有一个庞大的测试部门,相反,部分测试工作委派给了开发人员。Whittaker 写道:

测试和开发同时进行。编写一些代码,马上进行测试和构建。接着,编写更多的代码,继续测试。更好的是,在你编码的时候或者编码之前,就计划好你的测试。测试不是一个独立分开的过程,它是开发的一部分。质量不等同于测试;要想有高质量的产品,就要把开发和测试紧密捆绑在一起,直到不分彼此。

这是因为,Google 认为要保证质量,预防胜于检查:

质量来自开发,而不是测试。为了拓宽开发环节,我们可以把测试融入到开发中去。我们已经建立了一个超高效的增量流程,只要有一个增量被证明缺陷太多,我们就可以回滚这些错误。我们不仅预防了很多产品级问题,还大大地减少了那些为确保消除“召回级别”缺陷而安排的测试人员的人数。

因此,在 Google,测试人员不用做测试是众所周知的,他们只要“确保他们【开发人员】有自动框架和相关流程”进行测试即可。开发人员进行必要的测试,他们对他们的代码质量负责。这其实就是强调了一点:“质量的重担落在那些负责交付正确产品的开发人员的肩上。”为了实现他们的质量哲学,Google 有三种类型的工程师,Whittaker 解释道:

  • SWE或者软件工程师是传统的开发角色。SWE 编写最终交付给客户的功能代码。他们编写设计文档,设计数据结构以及整体架构,花绝大部分时间编写和审查代码。SWE 会编写很多测试代码,包括测试驱动设计,单元测试,以及在未来的几篇博文中我们会具体解释的,如何参与到简单、中等甚至复杂的测试集成中去。SWE 们对他们参与的一切的质量负责,不管是他们编写的、修复的或者是修改的。
  • SET或者测试软件工程师(Software Engineer in Test)也是开发角色,只是他们专注于易测性。他们审查设计,密切关注代码质量和风险。他们重构代码,让代码更加易于测试。SET 需要编写单元测试框架和自动化测试。他们的代码也会提交到 SWE 所工作的代码库 (code base),但是他们更加关注提高质量和测试覆盖率,而不是增加新功能或者提高性能。
  • TE或者测试工程师则跟 SET 恰恰相反。他们这个角色会把测试放在首位,而把开发放其次。很多 Google 的 TE 会花很多时间来编写模拟了实际使用场景甚至是模拟了用户的自动化脚本和代码。他们也整理 SWE 和 SET 的测试工作,解读测试结果从而驱动测试,他们也会在项目后期参与到项目中去,来强力推动项目发布。TE 是产品专家,质量顾问也是风险分析员。

换句话说,SWE 负责软件功能特性和它们的质量。SET 提供代码支持,从而使 SWE 能测试这些产品特性。TE 快速地测试系统或者再次检查那些被开发人员忽略的主要缺陷。并且,他们协助用户测试,还进行性能、安全以及其他类似的测试。

在公司级别,Google 有几个关注域(Focus Areas)——搜索、广告、应用程序、移动服务、操作系统等等。其中有一个关注域是工程生产力(Engineering Productivity,EP),它包括了一些“横向和纵向的工程规范(horizontal and vertical engineering disciplines)”,测试是其中最大的一块。 EP 包括

  1. 产品团队——为整个 Google 的所有工程师提供能提高生产力的工具,包括开源项目,比如“代码分析器、IDE、测试用例管理系统、自动测试工具、构建发布系统、版本控制系统、代码审查安排系统、缺陷数据库。”
  2. 服务团队——为任何 Google 员工提供关于可靠性,安全,国际化等领域的专业知识,包括“工具、文档、测试、发布管理、培训”等等。
  3. 派遣式的工程团队(Embedded Engineers Team)——在 Google,测试人员会被借调去不同的产品团队。他们可以选择为一个团队服务很多年,但公司鼓励他们去不同的团队轮岗,从而能够“在产品知识和新鲜视野之间”保持一个良好的平衡。这些测试人员参与到产品团队中的很多不同的关注域,但是从组织关系上来说,他们汇报给 EP 管理层。这样做的理由是能够建立一个“让测试人员共享知识和信息的论坛。好的测试想法在 EP 内部很容易传播开来,从而使所有测试人员,不管他们为哪个产品服务,都能够了解到公司内最好的技术。”

这种测试策略带来的结果就是相对较少的测试人员。根据 Whittaker 的观点,这也可能是因为“我们很少尝试一次快速交付很多功能。事实上,我们的目标恰恰相反:构建一个产品的核心部分,一旦它对很多人有价值,我们就发布这个产品,随后我们收集反馈,继续迭代。”另外一个确保质量的关键元素是使用多重版本。Whittaker 以 Chrome 为例,介绍了四种不同的版本:

  1. 金丝雀版(Canary Channel)——还没有做好发布准备的代码
  2. 开发版——开发人员使用的版本
  3. 内部测试版(Test Channel)——为了准备 beta 发布的版本
  4. 测试(beta)或者发布版——这个版本的产品可供 Google 内部或者公众使用。

产品发布以后,如果发现了一个缺陷,我们会编写一个测试,并且在所有的版本中进行验证,看看这个缺陷是不是已经在某个版本里面被修复了。

简单来说,这就是 Google 用来测试他们的产品、确保代码质量的流程和组织结构。

2011-03-14 08:049260
用户头像

发布了 114 篇内容, 共 36.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Android面试必问:Handler、Bitmap,android插件化开源

android 程序员 移动开发

Android面试:来说一说Context吧,Android中的Context跟Java有什么区别

android 程序员 移动开发

Android进阶:高仿抖音上下滑动分页视频,要求页面流畅

android 程序员 移动开发

Android通用业务弹窗管理方案V2,hashmap扩容过程

android 程序员 移动开发

Android面试必问:Handler、Bitmap(1),kotlin数据库框架

android 程序员 移动开发

RabbitMQ详解——RabbitMQ服务端执行逻辑(三)

AiDaddy

RabbitMQ 服务端执行逻辑

Android面试题之Listview篇,2021Android面试心得

android 程序员 移动开发

Android进阶——解密笔记,flutter人脸识别模块

android 程序员 移动开发

Android面经:入职网易的那一天,我哭了,狂刷200道数据结构与算法

android 程序员 移动开发

Android面试回忆录:Service有几种启动方式?,大佬带你看源码

android 程序员 移动开发

Android面试必备!爆火超全的《Android性能优化全方面解析

android 程序员 移动开发

Android面试题之Java基础篇,安卓rxjava使用

android 程序员 移动开发

Android题集四大组件之Content provider、BroadcastReceiver

android 程序员 移动开发

Android进阶——解密笔记(1),分享一些行业经验

android 程序员 移动开发

Android进阶:十一、视频播放器初体验,给大家安排上

android 程序员 移动开发

Android进阶:用最详细的方式解析Android消息机制的源码

android 程序员 移动开发

Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色

android 程序员 移动开发

android面试之今日头条-字节跳动-android社招面试(附答案)

android 程序员 移动开发

Android面试必备的集合源码详解,看完之后简历上多一个技能!

android 程序员 移动开发

Android面试官装逼失败之:关于Activity的启动模式,android界面开发工具

android 程序员 移动开发

Android面试心得必备技能储备详解,已拿到offer,androidhtml5开发框架

android 程序员 移动开发

【LeetCode】最长定差子序列Java题解

Albert

算法 LeetCode 11月日更

Android进阶难题:普通公司的程序员跟BAT大公司的技术差距在哪?该如何选择

android 程序员 移动开发

Android面试吃透这一篇就够了,没有拿不到的offer!1096页Android学习笔记

android 程序员 移动开发

Android面试抱佛脚:进程间通讯学习,从Binder使用看起

android 程序员 移动开发

Android高工面试(难度:四星,Android开发三年月薪才12K

android 程序员 移动开发

Android跨进程通信导论,极致干货

android 程序员 移动开发

Android面经分享:我是如何一举拿下阿里、抖音,html5图片左右移动

android 程序员 移动开发

Android面试主题整理合集(三),Android屏幕适配很难嘛其实也就那么回事

android 程序员 移动开发

【设计模式】第十一篇 - 装饰模式 - 孙悟空的六神装

Brave

设计模式 装饰模式 11月日更

Android高工面试(难度:四星(1),真的太香了

android 程序员 移动开发

Google的产品质量之道_研发效能_Abel Avram_InfoQ精选文章