惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
博客园_首页
W
WeLiveSecurity
S
Secure Thoughts
S
Security @ Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hugging Face - Blog
Hugging Face - Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Hacker News: Front Page
Project Zero
Project Zero
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
U
Unit 42
N
News and Events Feed by Topic
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Forbes - Security
Forbes - Security
T
Tor Project blog
I
Intezer
B
Blog
F
Full Disclosure
Security Archives - TechRepublic
Security Archives - TechRepublic
F
Fortinet All Blogs
Schneier on Security
Schneier on Security
T
Threat Research - Cisco Blogs
AI
AI
Google DeepMind News
Google DeepMind News
L
LINUX DO - 最新话题
Cloudbric
Cloudbric
L
Lohrmann on Cybersecurity
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
P
Privacy International News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
PCI Perspectives
PCI Perspectives
Y
Y Combinator Blog
Spread Privacy
Spread Privacy
Simon Willison's Weblog
Simon Willison's Weblog
罗磊的独立博客
Vercel News
Vercel News
A
Arctic Wolf
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
H
Heimdal Security Blog
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed

博客园 - 阿龍

FW:Software Testing What is the difference between modified duration, effective duration and duration? Netezza External Tables --How to use local files in external table How to push master to QA branch in GIT FTPS Firewall Query performance optimization of Vertica (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview (转)The remote certificate is invalid according to the validation procedure Change - Why we need coding standards (转)测试用例编写规范 (转)测试用例模板(Test Case Template) 敏捷问题小结 (转)RACI模型(RACI Model) (转)Part 2 - Basic of mocking with Moq (转)MongoDB——安装篇(windows) (转)MongoDB 增加用户 删除用户 修改用户 读写权限 只读权限, (转)MongoDB设置访问权限、设置用户 赎回收益率(Yield to Call,YTC) YTC, YTM, YTW
(转)Facebook如何提高软件质量?
阿龍 · 2012-11-20 · via 博客园 - 阿龍

刘彪是微软测试技术团队的一名软件设计工程师,他在自己的博客上分享了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云计算平台》一书,在他的博客中,还分享了AmazonGoogle微软如何提升软件质量,感兴趣的读者可以移步一观。