生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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:106789
用户头像

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

关注

评论

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

AI老师的作者:17岁的高中生,可能是你想要孩子成为的样子

无人之路

AI 教育 ChatGPT

不愧是阿里P8出手的并发编程笔记!颠覆了我以往"正确"的认知

程序知音

Java 并发编程 java架构 Java进阶 后端技术

NFTScan 成为 CMC 官方 NFT 数据合作伙伴

NFT Research

crypto NFT

【Clickhouse】ReplaceingMergeTree引擎final实现合并去重探索 | 京东云技术团队

京东科技开发者

OLAP final clickhosue 企业号 6 月 PK 榜 合并去重

世界500强潍柴动力携手用友BIP全球司库打造资金管理系统,正式启动!

用友BIP

全球司库

“站在后天看明天”:华为给金融广厦架起数字栋梁

脑极体

金融 数字化 智能化

Mybatis的parameterType造成线程阻塞问题分析 | 京东云技术团队

京东科技开发者

mybatis CPU告警 企业号 6 月 PK 榜 线程阻塞

最强攻略 | 1分钟带你了解内测,成为BUG小能手!

百度Geek说

百度 测试 企业号 6 月 PK 榜 6 月 优质更文活动

2023年数智人力管理不容错过的2大神器

用友BIP

人力资源 数智人力

Openjob 1.0.2 重磅发布,新一代分布式任务调度框架

stelin

分布式架构 Java 分布式

GreptimeDB v0.3 正式发布|分布式能力全面提升

Greptime 格睿科技

数据库 rust 云原生 分布式数据库 时序数据库

软件测试 | Web自动化测试

测吧(北京)科技有限公司

测试

软件测试 | Selenium验证页面元素

测吧(北京)科技有限公司

测试

金融集团企业资金管理难度加倍,用友BIP如何破解这个难题?

用友BIP

资金管理

技术赋能-混流编排功能,助力京东618直播重保 | 京东云技术团队

京东科技开发者

监控 直播技术 直播推流 企业号 6 月 PK 榜 重保

Kubernetes 集群管理:Kurator or Kubespray

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

祝贺!Databend 入选 ICT 中国可信云优秀云原生创新案例

Databend

2022百度ESG报告发布:年度答卷展现安全信任承诺

百度安全

揭秘阿里云Flink智能诊断利器——Fllink Job Advisor

阿里云大数据AI技术

大数据 flink 企业号 6 月 PK 榜

服务型企业为什么要做财务共享中心?

用友BIP

让ChatGPT来写今年的高考作文,能得几分?

楚少AI

ChatGPT4 2023高考 ChatGPT写作

主动发现系统稳定性缺陷:混沌工程 | 京东云技术团队

京东科技开发者

混沌工程 系统 系统工程 混沌工程实践 企业号 6 月 PK 榜

横空出世!京东技术专家狂推的Redis笔记,实战和原理两开花

程序知音

Java 数据库 redis Java进阶 后端技术

2022 中国开源创新大赛,时序数据库 TDengine 榜上有名

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

阿里云 EMAS & 魔笔:5月产品动态

移动研发平台EMAS

阿里云 DevOps 消息推送 低代码平台

黑盒不黑:跨端 C/C++ 库一键源码调试方案

阿里技术

调试

苹果MR Vision Pro将会带动哪些零部件出货?

元器件秋姐

苹果 AR 交互 vr MR

TiDB 7.1 LTS 发版:为关键业务提供业务稳定性和多租户场景支持

编程猫

TiDB pingCAP

理论+示例,详解GaussDB(DWS)资源管理

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

中国银行开启数智人力管理新征途

用友BIP

人力资源 数智人力

this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(一)

控心つcrazy

JavaScript this指针 this

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