Facebook如何提高软件质量?

上一篇 / 下一篇  2012-11-09 10:43:39 / 个人分类:测试经验

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

_ v&z i6w&]j051Testing软件测试网;F5b(Z:rPN

  在文章开头,刘彪指出:

A#DtO6]smxsV0

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

g;}4c#T*YfC051Testing软件测试网_?x-d$oc-P

  他提到,Facebook51Testing软件测试网2kt,`a'is[/Q

)\o!Lg/R#|.t'Jo"r0  以小的研发团队为核心,遵循几个非常重要的原则:

:K@ zr&|h7d%Oa2[0

J1F)y1Z7Pf BA,?0  ● Be there from start to ship: 每个工程师自始至终负责产品。从最开始的一个想法,到开发原型,到内部审核,反馈,到产品开发,上线和维护,全部有工程师自己搞定。51Testing软件测试网J8I tzq'|

51Testing软件测试网"iAJ_8W;q _ t

  ● Show work early and often: facebook非常看重反馈,尤其早期内部反馈。他们鼓励工程师有了想法后,尽快开发出原型,尽快得到反馈。

#e6|7|jjd*a&h0

bF~:C1q0  ● Gets your hands dirty: 动手去做,去实现。

&W5px4^TKoXQ051Testing软件测试网6`W{+`yJro

  ● Don’t fall in love:互联网产品是不断变化的,不需要等到把一个产品设计的很完美了才发布。51Testing软件测试网eB[3Z3m6ae

51Testing软件测试网GM9gZ&N%Y

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

kJ D KE-j7k051Testing软件测试网 b)M5v@#CzP

   ● 开发对质量负责: 开发从设计,实现,测试,到部署都要自己做。其它做工具,流程的工程师通过开发工具和流程来帮助开发人员更为简单方便地做测试,做部署和做监控。每个开发 人员有自己单独的测试环境,测试环境就是运行在开发本地机器上,部署非常简单快速。测试环境用的是真实的用户数据。51Testing软件测试网!Q)tq7U8sAwD

51Testing软件测试网VM8DoH Ot

  ● 持续集成和测试自动化:每周发布一次。星期天晚上,要发布的构建从主线上分支出来到发布分支,到星期二的中午如果没有大的问题,就可以上线了。所有的测试运行控制在10分钟以内,所以不需要考虑不运行哪些测试用例。运行所有测试用例。 (只是听说,没有经过考证。)51Testing软件测试网d@+dj5rS

51Testing软件测试网 lF;k5YI0S

  ● 内测(dog food):发布之前,公司员工使用要发布的功能。2-3天之内可以有几百个或上千个人在使用新功能。负责要发布功能的开发人员在星期天晚上到星期二中午之间会做大量的测试 。

}\ ~']8Q)P#Mc6|8~0

2g+]5HF j0^9\0   ● 发布风险控制:新功能本身质量可能有问题,新功能也可能影响其它现有功能。为了减少或控制这些风险。Facebook开发了一整套完善的发布,控制,监控 流程和工具。做到:1.测试通过后,产品质量基本有保证。2.即使有漏测的bug,只会影响很少量的用户。3.及时监控到问题。4.及时修复。

&A'?A#?*Ge0

hq&my0? |0  ● 产品监控:监控产品的系统的运行状态。

&ZqQOE-]vJ%s0

"co|)uV0  刘彪指出:

7|1v]_C$W_3W0

7}s i\-d&lJjC0  Facebook之所以采取这种质量控制策略和它的产品特点密切相关:51Testing软件测试网x4gX;A#uT

~0Z#|qF,n/B(L+XQ0   1、用户对社交产品质量的容忍度相对较高。比如发微博,现在连不上,等一会在连接也可以,现在发布不出去可以等一会再发,粉丝数量统计有误,没有人太关 心。其实Facebook并不认为自己的质量差。他们认为产品的质量高低不是有多少个failed测试用例,有多少个bug来确定的,而是有用户对质量的 期望值来决定的。如果用户对产品质量的期望值很高很高,一个bug漏掉了都会照成质量差的印象,用户很有可能放弃使用。相反,如果用户的期望值一 般,100个bug漏掉了都不会影响用户继续使用。所以facebook产品发布的条件是满足用户对质量的期望值即可。51Testing软件测试网%Ce5J0AS3JN o!y9}g

J/x(^DMXo#G0  2、相对宽松的产品发布周期。不像微软或google很多产品已经在市场上,用户对下一版本的发布时间和新增加功能的期望很高,这往往给产品开发组的压力很大。Facebook基本没有这个问题,它有适合自己的发布期限,不用受到外界干扰。51Testing软件测试网`+SL` [|[ zG@

]7WY(lX3yju3R0  3、产品发布和监控流程比较完善,即使有漏测的bug,对用户的影响可以控制在最小而且可以及时发现及时修复。

Kgp#v0q@1T1L0

3?L N%mW$Z U;}0  “没有专职测试工程师”,刘彪认为这是Facebook质量控制中引以为豪而且倍受瞩目的的一点:

9P7B:wh'GNdP5H"z_0

wi4q2q5u vM0  1、什么是“专职测试工程师”? 头衔里面有“测试”的工程师?专门找bug的工程师?专门做质量控制的工程师?等等。51Testing软件测试网2A Rq| L7h q

51Testing软件测试网(u"m(P4F8Q*FaU

  2、Facebook的确没有带“测试”头衔的工程师,也没有专门运行产品找bug的工程师。每个人都是开发工程师。但是他们的实际工作有区别,有的专门做面对用户的产品,有的专门做测试,开发工具,有的专门做产品的构建和持续集成工具和流程,有的专门做发布和监控的工具和流程。如果按照传统意义上的开发和测试的划分的话,除了第一类外,其他都可以看做专职测试工程师。

3p(`'B dLVy051Testing软件测试网U b)CX2B L

  3、Facebook不是惟一一个没有带“测试”头衔工程师的公司,很多软件公司都没有,比如Twitter。

(bo;j(Xa[,|y0

%Xwo5I7f4~0  4、很多人把专职测试工程师指专门运行产品找bug的工程师。微软在2005年去掉STE (softwaretestengineer )岗位,就已经没有这一类型的专职测试工程师了。

u6x8u2b*X}u0Hy0

&]`6u?+J!N]pG0  对于专职测试工程师,刘彪的看法是:

6`;CVT(LL:q$q B p0

B^^S#x| u0p)U y.T0  专职测试工程师是个非常模糊的结论。尤其现在我们对产品质量控制方法的不断演变和提高,“测试”的概念不仅仅是指找bug了,所有围绕提高产品质量的工作都是测试。头衔上有没有“测试”不重要,有没有“测试”岗位不重要,重要的是如何有效保证和提高产品质量。51Testing软件测试网8j2gNV`


TAG:

 

评分:0

我来说两句

Open Toolbar