Facebook没有测试工程师,如何进行质量控制的?
Facebook从04年的哈佛校园的学生项目在短短的7-8年的时间中快速增长为拥有10亿用户的世界上最大的社交网络,又一次见证了互联网创业成功的奇迹。同时它的产品研发流程也成为了众多互联网产品公司的追逐对象。
在如今的互联网领域,Facebook的创新能力一点也不弱于google。上篇文章谈到Google,今天再来谈谈Facebook。首先声明,由于没有在facebook实地工作过,因此,对Facebook的质量控制体系,均来自于Facebook工作的员工及网络相关资料的论述。
在分析FB的质量控制前,还是需要先了解其文化特点及业务形态:
1、“这是《财富》500强中首家由千禧一代创建的公司,”Facebook前人力资源和产品经理莫里·格雷厄姆(Molly Graham)表示。出生在1980年以后的千禧一代,常常无拘无束,并抱有一种幻想——工作应该是一件有趣的事情。
而Facebook的CEO,接受了年轻人的特点,并为他们精心制定了管理方法。Facebook高层精心设计下“黑客“也是成为Facebook的企业文化标签。“黑客”让Facebook显得卓尔不群,它标志着Facebook始终拥有着最先进的生产力, 旨在通过不断的创新和实验来拉近世界的距离。
因此在Facebook内部主管理
强调发现员工优势
Facebook的企业文化受到了马库斯·白金汉(Marcus Buckingham)的影响。白金汉是一名出生在英国的管理专家。他呼吁人们“扬长避短”,建议经理们在分配员工职务时要迎合他们的优势。
上下层级的平等
Facebook甚至鼓励低级别员工质疑和批评经理。谷歌的管理结构更为森严,成为一名“经理”意味着拥有更大的权力。而在Facebook,“职称毫无用处,”大家只看你的工作质量、信念的力量以及影响其他人的能力。”
2、facebook的产品特点
用户对社交产品质量的容忍度相对较高。比如现在连不上,等一会在连接也可以,现在发布不出去可以等一会再发,粉丝数量统计有误,没有人太关心。其实facebook并不认为自己的质量差。他们认为产品的质量高低不是有多少个failed测试用例,有多少个bug来确定的,而是由用户对质量的期望值来决定的。
如果用户对产品质量的期望值很高很高,一个bug漏掉了都会造成质量差的印象,用户很有可能放弃使用。相反,如果用户的期望值一般,100个bug漏掉了都不会影响用户继续使用。所以facebook产品发布的条件是满足用户对质量的期望值即可。
相对宽松的产品发布周期。不想微软或google很多产品已经在市场上,用户对下一版本的发布时间和新增加功能的期望很高,这往往给产品开发组的压力很大。Facebook基本没有这个问题,它有适合自己的发布期限,不用受到外界干扰。
因此,在其产品研发团队组成上,依然可以保持小的研发团队规模,同时保留创业团队的特点。Facebook 项目的人员配比:一个项目一般是两三个设计师、5-10个工程师 ,产品经理要确保代码按时发布。
在运作中会遵循几个非常重要的原则:
每个工程师自始至终负责产品。从最开始的一个想法,到开发原型,到内部审核,反馈,到产品开发,上线和维护,全部有工程师自己搞定。
非常看重反馈,尤其早期内部反馈。他们鼓励工程师有了想法后,尽快开发出原型,尽快得到反馈。
动手去做,去实现。
互联网产品是不断变化的,不需要等到把一个产品设计的很完美了才发布。
相比较于Google,facebook确实没有测试工程师。不过,Facebook 仍然有负责质量评估的工程师,并积极鼓励每位工程师报告产品漏洞。而且各角色相比较于传统公司定位也有所差异。
1、同谷歌一样,Facebook 的企业文化同样以工程师为主。一名工程师说:“产品经理基本上在这里毫无作为。”工程师可以修改尚未正式上市的产品规格,在任何时间提出新的功能创意。
2、产品经理如果要获取开发资源,不会如很多公司通过立项评审然后组织分配,而是需要产品经理通过自己发布产品的创意,吸引有兴趣的工程师。
3、与产品经理确定产品定义的方式不同,产品经理通常不会干涉工程师的偏好,如果出现争论,工程师们会开发出原型机,用一周的时间开发某项功能并进行测试,以确定它是否值得推出成品。通常情况下,新功能都是由 Facebook 员工亲自测试。
由此,facebook采用以下质量控制手段来保证产品质量:
开发对质量负责: 开发从设计,实现,测试,到部署都要自己做。其它做工具,流程的工程师通过开发工具和流程来帮助开发人员更为简单方便地做测试,做部署和做监控。每个开发人员有自己单独的测试环境,测试环境就是运行在开发本地机器上,部署非常简单快速。测试环境用的是真实的用户数据。
持续集成和测试自动化:每周发布一次。星期天晚上,要发布的构建从主线上分支出来到发布分支,到星期二的中午如果没有大的问题,就可以上线了。所有的测试运行控制在10分钟以内,所以不需要考虑不运行哪些测试用例。运行所有测试用例。(只是听说,没有经过考证。)
严格实施代码审计:在Facebook 做 code review时间大约占50%,管理者对代码质量负有一定责任 。甚至代码质量高于一切:Facebook Code review是重点KPI考核的对象,实行连坐制,如果因为代码质量问题,那么产生的KPI责任包括领导30%、程序员50%、审核人员20%。
在代码checkin之前,都要由专人进行review。Facebook 创始人兼 CEO 马克扎克伯格会亲自对 News Feed 每个代码更新把关。在 Facebook,所有重大升级的代码都进行强制评估,任何一个改动都至少由一人把关。但是,无论工程师对 News Feed 做出任何改动,都将由扎克伯格亲自把关。
内测 (dog food):发布之前,公司员工使用要发布的功能。2-3天之内可以有几百个或上千个人在使用新功能。负责要发布功能的开发人员在星期天晚上到星期二中午之间会做大量的测试 (一边上班,一边刷微博,岂不是很爽 )。
通过灰度发布控制风险:新功能本身质量可能有问题,新功能也可能影响其它现有功能。为了减少或控制这些风险。Facebook开发了一整套完善的发布,控制,监控流程和工具。
做到:1.测试通过后,产品质量基本有保证。2.即使有漏测的bug,只会影响很少量的用户。3.及时监控到问题。4.及时修复。
产品监控:通过社区讨论的正负面舆情,及与历史应用数据的对比情况,监控产品的系统的运行状态技术修复。
Facebook质量控制中引以为豪而且倍受瞩目的就是“没有专职测试工程师”, 所以个人认为,专职测试工程师是个非常模糊的结论。尤其现在我们对产品质量控制方法的不断演变和提高,“测试”的概念不仅仅是指找bug了,所有围绕提高产品质量的工作都是测试。
头衔上有没有“测试”不重要,有没有“测试”岗位不重要,重要的是如何有效保证和提高产品质量。因此,某种意义上,开发工程师、运维人员,其实都承担了测试的职能,但没有作为专门的岗位存在而已。
大家其实也关心,这么创新的氛围下如果确保Facebook员工的质量意识呢?我认为其实有2点非常值得借鉴
1、公开透明化:Facebook的每个员工都有个积分系统,其他员工可以对其进行”点赞、踩“,当然,对工程师而言。如果在发布过程中,出现有代码bug导致无法顺利发布的、或者代码审查时发现代码质量很差的,都会被“踩“。
当然,工程师努力取得牛逼的业绩可以获其他人的“赞“。这个积分直接会影响半年一度的绩效评估。而且,透明化后如果经常被裁的员工,在公司也很难立足了。
2、严格结果考核:工程师负责质量,如果在运维时出现由于某工程师代码bug导致发布回退,或严重质量事故的,会导致该工程师被“解雇“
因此,Facebook在质量控制过程上有一套方法,在考核激励上,也确保每个工程师必须重视自己代码的质量。因为,除了自己没有其他人为你的代码负责,而且一旦出错就是工程师的全责,无可推卸。保证考核制度简单,易于实施。
Facebook确实对员工赋予足够的信任,但由此对立面。每个员工一旦违反规则,必须承担严重的后果与责任。所以,对于很多人来说其实facebook的氛围其实压力非常大,而不像外界想的那么好“混“,创新企业的工作压力不大,其实是误解。因此,也印证一句话话,“天道酬勤”,创新也是如何啊。
如果对python自动化测试、web自动化、接口自动化、移动端自动化、大型互联网架构技术、面试经验交流等等感兴趣的老铁们,可以关注我。欢迎分享,评论,转发。
Facebook没有测试工程师,如何进行质量控制的?的更多相关文章
- 与谷歌测试工程师的对话 - from Google Testing Blog
Conversation with a Test Engineer by Alan Faulner Alan Faulner谷歌的一名测试工程师,他工作在DoubleClick Bid Manager ...
- 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)
对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...
- 功能测试很low?不能升级到高级测试工程师?
功能测试很low?不能升级到高级测试工程师? 功能测试很low?功能测试很简单?功能测试就是黑盒测试?功能测试没有技术含量?功能测试工资低?只会功能测试没有竞争力?功能测试这活初中生都可以干?功能测试 ...
- CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲
CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲 都是图.. 不足之处,欢迎补充
- 【招聘】.NET高级开发、前端高级开发、测试工程师
.NET架构师 工作地点:厦门-湖里区 工作年限:5年及以上 学历要求:大专或以上 工资范围:15000元 - 25000元 福利待遇:五险一金,带薪年休假,年度旅游,丰富的员工团队活动:生日会.中秋 ...
- python测试工程师高端基础面试题整理
面试总括篇 技术技能 开发语言:python 数据库:mysql 操作系统;linux 网络协议基础 测试技能:自动化(UIselenium+接口)+性能 业务知识 测试工程师执业规划 初级--> ...
- 随心测试_软测基础_002_<测试工程师_核心技能体系>
测试工程师核心技能体系构成 测试基础体系:[对象——>方法——>流程].[测试活动类型——>质量] 测试分析体系:[测试对象分析]——>[测试设计(计划.数据.用例.文档)] ...
- 【测试工程师面试】在BOSS直聘上和面试官的一问一答
岗位描述: 信用卡核心系统功能测试,负责测试计划制定,测试设计,测试执行,测试进度掌控,自动化工具建设等工作.有责任心,执行力强,工作认真细致,逻辑思维强熟悉linux,oracle或者IBM大型机操 ...
- [面试]中高级测试工程师必备,月薪15K+
1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求 ...
随机推荐
- Java 14带来了许多新功能
本文是作者翻译自java magazine的文章,我也将回持续的关注java的最新消息,即时和大家分享.如有翻译不准确的地方,欢迎大家留言,我将第一时间修改. Java 14包含比前两个发行版更多 ...
- JVM生命周期与运行过程
1. Java虚拟机的生命周期 Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会 ...
- v-model指令的学习(双向绑定)
v-bind 只能实现数据的单项绑定,从data到view,无法实现双向绑定 v-model可以实现表单元素和model中数据的双向绑定 注意:model只能运用到表单元素中 如:input sele ...
- ObjectOutputStream和ObjectInputStream对对象进行序列化和反序列化
1 Java序列化和反序列化简介 Java序列化是指把对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为java对象的过程. 我们把对象序列化成有序字节流,保存到本地磁盘或者Redis等 ...
- 向强大的SVG迈进
作者:凹凸曼 - 暖暖 SVG 即 Scalable Vector Graphics 可缩放矢量图形,使用XML格式定义图形. 一.SVG印象 SVG 的应用十分广泛,得益于 SVG 强大的各种特性. ...
- 利用EasyMock生成数据库连接简单测试示例
package demo.mock; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Re ...
- 新来的"大神"用策略模式把if else给"优化"了,技术总监说:能不能想好了再改?
本文来自作者投稿,原作者:上帝爱吃苹果 目前在魔都,贝壳找房是我的雇主,平时关注一些 java 领域相关的技术,希望你们能在这篇文章中找到些有用的东西.个人水平有限,如果文章有错误还请指出,在留言区一 ...
- linux中神奇的命令alias
在linux中大家应该都知道,有些命令和参数特别繁琐,而且还是大量输入这些命令,这个时候我们就可以使用linux中的alias命令来给这些繁琐的命令起别名,但是,alias 命令只对当前终端有效,当终 ...
- 入门大数据---Spring+Mybatis+Phoenix整合
一.前言 使用 Spring+Mybatis 操作 Phoenix 和操作其他的关系型数据库(如 Mysql,Oracle)在配置上是基本相同的,下面会分别给出 Spring/Spring Boot ...
- .Net: C#中的委托(Delegate)和事件(Event)
委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 是太容易了,而没有过去的人每次 ...