写点什么

Facebook 如何提高软件质量?

  • 2012-11-04
  • 本文字数:1939 字

    阅读完需:约 6 分钟

刘彪是微软测试技术团队的一名软件设计工程师,他在自己的博客上分享了 Facebook 如何提高软件质量的原则、手段和背后的原因。

在文章开头,刘彪指出:

虽然 facebook 已经早已不是创业公司,但是不难看出它在产品研发和质量控制仍然保持着创业公司的风格。

他提到,Facebook

以小的研发团队为核心,遵循几个非常重要的原则:

  • Be there from start to ship: 每个工程师自始至终负责产品。从最开始的一个想法,到开发原型,到内部审核,反馈,到产品开发,上线和维护,全部有工程师自己搞定。
  • Show work early and often: facebook 非常看重反馈,尤其早期内部反馈。他们鼓励工程师有了想法后,尽快开发出原型,尽快得到反馈。
  • Gets your hands dirty: 动手去做,去实现。
  • Don’t fall in love: 互联网产品是不断变化的,不需要等到把一个产品设计的很完美了才发布。

接下来,他举出了 Facebook 为了遵循上述原则而采取的质量控制机制:

  • 开发对质量负责: 开发从设计,实现,测试,到部署都要自己做。其它做工具,流程的工程师通过开发工具和流程来帮助开发人员更为简单方便地做测试,做部署和做监控。每个开发人员有自己单独的测试环境,测试环境就是运行在开发本地机器上,部署非常简单快速。测试环境用的是真实的用户数据。
  • 持续集成和测试自动化:每周发布一次。星期天晚上,要发布的构建从主线上分支出来到发布分支,到星期二的中午如果没有大的问题,就可以上线了。所有的测试运行控制在 10 分钟以内,所以不需要考虑不运行哪些测试用例。运行所有测试用例。 (只是听说,没有经过考证。)
  • 内测 (dog food):发布之前,公司员工使用要发布的功能。2-3 天之内可以有几百个或上千个人在使用新功能。负责要发布功能的开发人员在星期天晚上到星期二中午之间会做大量的测试 。
  • 发布风险控制:新功能本身质量可能有问题,新功能也可能影响其它现有功能。为了减少或控制这些风险。Facebook 开发了一整套完善的发布,控制,监控流程和工具。做到:1. 测试通过后,产品质量基本有保证。2. 即使有漏测的 bug,只会影响很少量的用户。3. 及时监控到问题。4. 及时修复。
  • 产品监控:监控产品的系统的运行状态。

刘彪指出:

Facebook 之所以采取这种质量控制策略和它的产品特点密切相关:

  1. 用户对社交产品质量的容忍度相对较高。比如发微博,现在连不上,等一会在连接也可以,现在发布不出去可以等一会再发,粉丝数量统计有误,没有人太关心。其实 Facebook 并不认为自己的质量差。他们认为产品的质量高低不是有多少个 failed 测试用例, 有多少个 bug 来确定的,而是有用户对质量的期望值来决定的。如果用户对产品质量的期望值很高很高,一个 bug 漏掉了都会照成质量差的印象,用户很有可能放弃使用。相反,如果用户的期望值一般,100 个 bug 漏掉了都不会影响用户继续使用。所以 facebook 产品发布的条件是满足用户对质量的期望值即可。
  2. 相对宽松的产品发布周期。不像微软或 google 很多产品已经在市场上,用户对下一版本的发布时间和新增加功能的期望很高,这往往给产品开发组的压力很大。Facebook 基本没有这个问题,它有适合自己的发布期限,不用受到外界干扰。
  3. 产品发布和监控流程比较完善,即使有漏测的 bug,对用户的影响可以控制在最小而且可以及时发现及时修复。

“没有专职测试工程师”,刘彪认为这是 Facebook 质量控制中引以为豪而且倍受瞩目的的一点:

  1. 什么是“专职测试工程师”? 头衔里面有“测试”的工程师?专门找 bug 的工程师?专门做质量控制的工程师?等等。
  2. Facebook 的确没有带“测试”头衔的工程师,也没有专门运行产品找 bug 的工程师。每个人都是开发工程师。但是他们的实际工作有区别,有的专门做面对用户的产品,有的专门做测试,开发工具,有的专门做产品的构建和持续集成工具和流程,有的专门做发布和监控的工具和流程。如果按照传统意义上的开发和测试的划分的话,除了第一类外,其他都可以看做专职测试工程师。
  3. Facebook 不是惟一一个没有带“测试”头衔工程师的公司,很多软件公司都没有,比如 Twitter。
  4. 很多人把专职测试工程师指专门运行产品找 bug 的工程师。微软在 2005 年去掉 STE (software test engineer ) 岗位,就已经没有这一类型的专职测试工程师了。

对于专职测试工程师,刘彪的看法是:

专职测试工程师是个非常模糊的结论。尤其现在我们对产品质量控制方法的不断演变和提高,“测试”的概念不仅仅是指找 bug 了,所有围绕提高产品质量的工作都是测试。头衔上有没有“测试”不重要,有没有“测试”岗位不重要,重要的是如何有效保证和提高产品质量。

刘彪曾在多个技术大会上做过微软相关开发技术和流程的演讲,同时也主编了《详解Windows Azure 云计算平台》一书,在他的博客中,还分享了 Amazon Google 微软如何提升软件质量,感兴趣的读者可以移步一观。

2012-11-04 19:107397
用户头像

发布了 479 篇内容, 共 181.9 次阅读, 收获喜欢 53 次。

关注

评论

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

【案例】星环科技×某能源企业:数据中台实践

星环科技

分布式事务-什么是分布式事务

zarmnosaj

10月月更

报告发布|“双轮驱动”重磅升级,天猫联合瓴羊、罗兰贝格发布《天猫DTC企业经营指南 :以人为本,品牌致胜》

瓴羊企业智能服务

虚拟集群vcluster 多租户实战演练

CTO技术共享

个人成长 集群管理 10月月更

校招面试真题 | 面试官必问面试题之你有什么想问我的?

霍格沃兹测试开发学社

基金营销存量博弈时代,数字内容小程序化助力破局

Speedoooo

小程序 基金 数字内容 小程序容器 买方投顾

万物皆可集成系列:低代码通过Web API

葡萄城技术团队

集成 数据录入

阿里平头哥RISC-V补丁并入安卓系统源代码,RISC-V与安卓融合再提速

Lily

React + Springboot + Quartz,从0实现Excel报表自动化

葡萄城技术团队

React SpringB

澜舟科技机器翻译新进展:汉语与世界15 种主要语言的翻译超越谷歌

澜舟孟子开源社区

人工智能 机器翻译 nlp 澜舟科技

直击面试!Github爆火2022最新Java面试八股文+简历模板+面试软技能分享

程序员小毕

程序员 程序人生 后端 java面试 简历

6 种 K8s 协同工具,助你提高工作效率

Daocloud 道客

Kubernetes 云原生 kubectl 命令行工具

一篇带你了解如何使用纯前端类Excel表格构建现金流量表

葡萄城技术团队

管理 流量

结果公布!1024开发者狂欢季踏浪而来,参与赛道主题征文赢取精美奖品!

InfoQ写作社区官方

OpenHarmony 元宇宙 Web3.0 热门活动 “程”风破浪的开发者

新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞

Liam

前后端分离 开发 Postman API 开发效率

网络安全实战之靶场渗透技术

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

GPU在高性能仿真计算中的应用

Finovy Cloud

高性能 GPU算力

【原创】k8s 微服务滚动发布(服务持续可用)实践笔记

车江毅

k8s 不停机发布 滚动发布

业务系统发布新版本咋流量保障

CTO技术共享

个人成长 灰度发布 10月月更

WorkPlus数智化移动平台,打造政企强安全的超级门户

BeeWorks

HCI 解决方案对比:Harvester 和 OpenStack

Rancher

Kubernetes k8s rancher

校招面试真题 | 和面试官聊的很 high,但就是拿不到 offer,怎么办?

测试人

一站式移动工作平台,让企业实现运营管理全面数字化

BeeWorks

没错!在 Excel 中也能对海量数据进行明细钻取啦

Kyligence

数据分析 海量数据

锋云智慧开启“1024猿媛囤书日”活动,千锋原创教材普惠广大技术学习者

千锋IT教育

信息安全 Dapr 策略咋控制

CTO技术共享

个人成长 dapr 10月月更

Go语言入门02—运算符

良猿

Go golang 后端 10月月更

提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

葡萄城技术团队

chrome Excel 插件 扩展

图解Kafka中的数据采集和统计机制

石臻臻的杂货铺

kafka Kafka实战 10月月更

KubeCube 版本转换:K8s 升级再也不用担心影响老版本了

网易数帆

开源 Kubernetes 云原生 KubeCube 企业号十月 PK 榜

Facebook如何提高软件质量?_研发效能_郑柯_InfoQ精选文章