谈测试人员与开发人员的比例

标签: 技术荟萃 | 发表时间:2011-12-30 11:53 | 作者:黄言之
出处:http://blog.sina.com.cn/netreview

    在一些软件大会上,人们常常会问这样一个问题:测试人员与开发人员的比例究竟多少是合理的?而这样的问题,很难直接给出一个答案。为什么会有这样的问题,可能来自于两方面的压力:

    许多公司领导总是希望得到一个合理的比例,然后按这个比例分配招聘的名额,或者设法缩小测试队伍,减少开发成本。
    多数情况下,测试人员工作量大,比开发人员忙,所以想寻求一个数据,来说服其公司,多招些测试人员。
    有些专家说,根据调查结果发现通常的比例是1个测试人员对3个开发人员。实际上,这样的比例毫无意义。测试人员与开发人员的比例会受到很多因素的影响,因不同的业务、文化和产品而不同。如果不管公司的文化、产品的类型和责任定义等,一定要按照某个比例来分配测试人员与开发人员,这是武断的做法,缺乏科学性。有两个典型的例子能说明这个问题:

    微软公司的测试人员与开发人员比例一般为1:1,甚至在Windows 2000开发团队中,有1800个测试人员,900个开发人员,测试人员与开发人员比例为2:1。
    在Google (谷歌)公司,则测试人员与开发人员比例则很低,据谷歌公司的测试经理介绍,为1:10.
    那为什么呢?这里主要是测试人员与开发人员工作范围的定义,在这两家公司差别挺大,在微软,单元测试由测试人员(Software Development Engineer in Test, SDET)做, 相当于SDET再写一套代码来测试开发人员写的产品代码,其工作量不比开发人员低,另外,微软开发的产品都是比较复杂的操作系统、服务器软件等,自然就需要很多的测试人员。而Google的单元测试和功能测试一般都是由开发人员自己来完成,测试人员主要提供自动化测试工具的支持。软件开发人员进行了足够的单元测试,单元测试的覆盖度高达85%以上,软件在交给测试人员时,在功能上基本没有缺陷,这样测试人员主要集中精力进行性能测试、负载测试、安全性测试等,而这些都是自动化工具来完成的,自然需要较少的测试人员。

    另外,测试人员与开发人员还受所开发的产品类型、企业文化、项目环境、质量要求水平、开发人员或测试人员的自身素质等影响。例如:

    所开发的产品是操作系统、基础平台,和一般的客户端软件、简单的Web应用系统,其测试需求、范围和工作量都是不同的。如Windows操作系统要支持第3方各种应用程序、支持大量的API和各种硬件驱动程序等,还有兼容DOS、32位/64位等应用程序,系统非常复杂、用户操作也非常灵活,所以测试的工作量也大得多,需要大量测试人员的付出。
    软件设计、代码的质量,也就是企业文化、开发人员的素质和能力等直接影响了软件的阶段性成果的质量,如果软件构造质量很高,其回归测试范围有限、重复测试的次数只有1~2次,而不是4~5次,结果,测试的工作量大大降低,测试人员数量随之降低。
    例如,许多免费的网络应用产品总是将自己定位在Beta版,那么,会降低质量水平,让用户试用,并帮助发现一些缺陷(因为免费,用户也不能抱怨什么),这样的话,公司内部测试的努力会少多了。
    测试人员素质高,精兵强将,那么人数就会少些;如果测试人员定位低、待遇低,就可能靠人海战术,那么人数就会多。
    在敏捷方法中,开发人员的主导作用比较明显,测试人员对开发人员的比例会低些。如果采用测试驱动开发,测试人员对开发人员的比例会更低。这时,测试人员和开发人员的界限也变得模糊些。
    当然,针对一个具体公司,流程、产品和文化等都定型了,可以根据自己的经验、历史数据等,定出一个合适的比例,如1:2、1:3等,都是可以的。如果一个软件公司,硬要参考微软、谷歌或其它某个公司的做法,也许就不合理。一定要找相似的公司,那家公司又做得很成功,那就可以直接参考。

    也许将来某一天,测试人员和开发人员会合二为一,并没有明显的区分,只是每个人的任务会有所不同,大家都能胜任、完成某个任务中的测试和开发的工作。所以,作为测试人员,掌握良好的技术也是必要的,包括编程能力。

    在一些软件大会上,人们常常会问这样一个问题:测试人员与开发人员的比例究竟多少是合理的?而这样的问题,很难直接给出一个答案。为什么会有这样的问题,可能来自于两方面的压力:

    许多公司领导总是希望得到一个合理的比例,然后按这个比例分配招聘的名额,或者设法缩小测试队伍,减少开发成本。
    多数情况下,测试人员工作量大,比开发人员忙,所以想寻求一个数据,来说服其公司,多招些测试人员。
    有些专家说,根据调查结果发现通常的比例是1个测试人员对3个开发人员。实际上,这样的比例毫无意义。测试人员与开发人员的比例会受到很多因素的影响,因不同的业务、文化和产品而不同。如果不管公司的文化、产品的类型和责任定义等,一定要按照某个比例来分配测试人员与开发人员,这是武断的做法,缺乏科学性。有两个典型的例子能说明这个问题:

    微软公司的测试人员与开发人员比例一般为1:1,甚至在Windows 2000开发团队中,有1800个测试人员,900个开发人员,测试人员与开发人员比例为2:1。
    在Google (谷歌)公司,则测试人员与开发人员比例则很低,据谷歌公司的测试经理介绍,为1:10.
    那为什么呢?这里主要是测试人员与开发人员工作范围的定义,在这两家公司差别挺大,在微软,单元测试由测试人员(Software Development Engineer in Test, SDET)做, 相当于SDET再写一套代码来测试开发人员写的产品代码,其工作量不比开发人员低,另外,微软开发的产品都是比较复杂的操作系统、服务器软件等,自然就需要很多的测试人员。而Google的单元测试和功能测试一般都是由开发人员自己来完成,测试人员主要提供自动化测试工具的支持。软件开发人员进行了足够的单元测试,单元测试的覆盖度高达85%以上,软件在交给测试人员时,在功能上基本没有缺陷,这样测试人员主要集中精力进行性能测试、负载测试、安全性测试等,而这些都是自动化工具来完成的,自然需要较少的测试人员。

    另外,测试人员与开发人员还受所开发的产品类型、企业文化、项目环境、质量要求水平、开发人员或测试人员的自身素质等影响。例如:

    所开发的产品是操作系统、基础平台,和一般的客户端软件、简单的Web应用系统,其测试需求、范围和工作量都是不同的。如Windows操作系统要支持第3方各种应用程序、支持大量的API和各种硬件驱动程序等,还有兼容DOS、32位/64位等应用程序,系统非常复杂、用户操作也非常灵活,所以测试的工作量也大得多,需要大量测试人员的付出。
    软件设计、代码的质量,也就是企业文化、开发人员的素质和能力等直接影响了软件的阶段性成果的质量,如果软件构造质量很高,其回归测试范围有限、重复测试的次数只有1~2次,而不是4~5次,结果,测试的工作量大大降低,测试人员数量随之降低。
    例如,许多免费的网络应用产品总是将自己定位在Beta版,那么,会降低质量水平,让用户试用,并帮助发现一些缺陷(因为免费,用户也不能抱怨什么),这样的话,公司内部测试的努力会少多了。
    测试人员素质高,精兵强将,那么人数就会少些;如果测试人员定位低、待遇低,就可能靠人海战术,那么人数就会多。
    在敏捷方法中,开发人员的主导作用比较明显,测试人员对开发人员的比例会低些。如果采用测试驱动开发,测试人员对开发人员的比例会更低。这时,测试人员和开发人员的界限也变得模糊些。
    当然,针对一个具体公司,流程、产品和文化等都定型了,可以根据自己的经验、历史数据等,定出一个合适的比例,如1:2、1:3等,都是可以的。如果一个软件公司,硬要参考微软、谷歌或其它某个公司的做法,也许就不合理。一定要找相似的公司,那家公司又做得很成功,那就可以直接参考。

    也许将来某一天,测试人员和开发人员会合二为一,并没有明显的区分,只是每个人的任务会有所不同,大家都能胜任、完成某个任务中的测试和开发的工作。所以,作为测试人员,掌握良好的技术也是必要的,包括编程能力。

    转载地址: http://rdc.hundsun.com/forum.php?mod=viewthread&tid=186&extra=pageD1=

相关 [测试 开发 比例] 推荐:

谈测试人员与开发人员的比例

- - 互联网旁观者
    在一些软件大会上,人们常常会问这样一个问题:测试人员与开发人员的比例究竟多少是合理的. 而这样的问题,很难直接给出一个答案. 为什么会有这样的问题,可能来自于两方面的压力:.     许多公司领导总是希望得到一个合理的比例,然后按这个比例分配招聘的名额,或者设法缩小测试队伍,减少开发成本.     多数情况下,测试人员工作量大,比开发人员忙,所以想寻求一个数据,来说服其公司,多招些测试人员.

iOS开发进阶之单元测试

- - 博客园_首页
本文侧重讲述如何在iOS程序的开发过程中使用单元测试. 使用Xcode自带的OCUnit作为测试框架. 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代码的健康性. 其目标是证明软件能够正常运行,而不是发现bug(发现bug这一目的与开发成本是正相关的,虽然发现bug是保证软件质量的一种手段,但是很显然这与降低软件开发成本这一目的背道而驰).

是否使用TDD(测试驱动开发)进行UI开发

- - SegmentFault 最新的文章
StackOverflow上有一则 是否使用TDD(测试驱动开发)进行UI开发 的提问. 对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定. kdgregory的回答(23票赞同). 试图测试UI组件的放置是没有意义的,首先因为UI布局是主观的,所以应该由人来测试. 其次,随着UI改动,你要不断地重写测试.

BrowserSwarm:开发者兼容测试利器,节省JavaScript项目的测试时间

- - IE浏览器中文网站
今天,我们联合 appendTo 和 Sauce Labs 共同发布了 BrowserSwarm – 这是一个开源工具,可以帮助 Web 开发人员跨设备和浏览器自动测试其 JavaScript 框架和库. 质量框架是现代 Web 的基础,但框架开发人员通常没有合适的资源来执行跨浏览器测试. BrowserSwarm 可以帮助开发人员构建可互操作的优秀框架.

【外刊IT评论网】“你这不是测试驱动开发”

- iBeyond - 外刊IT评论网
本文是从 “That’s Not TDD” 这篇文章翻译而来. 几个月前,我去一个客户那里,他们在使用测试驱动开发上遇到了很多问题. “我们的单元测试用例要半个小时才能跑完,”他说. “你们这不是在做驱动测试开发,”我说. “为了让测试发挥效能,所有的测试必须在几秒钟内能跑完,否则的话,程序员不得不频繁的停下来等待测试.

如何开发高质量软件?及软件测试观点

- - 我的宝贝孙秀楠 ﹣C++, Lua, 大连,程序员
也许是因为我经常在twitter上鼓吹“代码质量来自code review和单元测试”,老赵的这篇文字 http://blog.zhaojie.me/2012/01/a-case-requirement-to-practice-unit-testing-or-tdd.html 也at我一下,抱歉的是最近欠债太多,正在着手完成答应侯伯薇的那篇关于appengine的文字.

测试驱动开发上的五大错误

- - 外刊IT评论
我曾经写过很多的糟糕的单元测试程序. 但我坚持着写,现在我已经喜欢上了些单元测试. 我编写单元测试的速度越来越快,当开发完程序,我现在有更多的信心相信它们能按照设计的预期来运行. 我不希望我的程序里有bug,很多次,单元测试在很多弱智的小bug上挽救了我. 如果我能这样并带来好处,我相信所有的人都应该写单元测试.

Eucalyptus私有云 -- 参考架构(小型开发测试云)

- - 婉兮清扬
 If the target deployment is one that will need to scale to accommodate more capacity in the future, the  Dev/Test (Large) reference architecture should be used, instead.

android gps开发必备资料(含测试demo下载)

- - CSDN博客推荐文章
int year = ca.get(Calendar.YEAR);//获取年份. int month=ca.get(Calendar.MONTH);//获取月份. int day=ca.get(Calendar.DATE);//获取日. int minute=ca.get(Calendar.MINUTE);//分.

开发者常用的10大GUI测试框架

- - CSDN博客Web前端推荐文章
1.Abbot - Java GUI 测试框架. Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面. 它提供事件自动生成和验证Java GUI组件,使您能够轻松地启动,探索和控制应用程序. 开发者可通过脚本和编译代码两种方式来使用Abbot框架,这就是为什么它被认为是在开发者的系统测试和QA的功能测试中都能用到的最完美的GUI测试工具.