软件测试和开发比例

引言

这篇文章是我从*上翻译过来的,如果以后遇到好的文章我还会继续翻译。

问题

我是一个开发工程师,我与我们的测试团队在争论一个问题:在一个产品中测试团队的成员数量应该超过开发人员数量吗?

我知道这不是一道编程题,但是我想这个问题与软件开发密切相关,所以我希望这个问题不要被关闭,以便能得到专业的回答。

回复一:

这是我的个人经验。在微软我们有一只强大的测试开发组织。这和传统的QA有点不同,因为我们雇佣程序员来测试,并且在设计阶段就把他们加入进去。他们的工作是测试,特别是自动化产品测试。根据我的经验,测试和自动化测试一个功能需要测试人员大概多久的时间与开发人员在产品中编码和修复缺陷所需的时间差不多,这意味着他们的比例是1:1,这与编写单元测试所花费的时间和编写代码的时间非常相似。

这一组合将根据不同的标准而有所不同:

1、开发人员进行了多少单元测试,他们做的越多,需要测试的工作就越少。

2、开发者要编写多少代码,而不是利用现有的库。如果有许多预先写好的代码使用,测试人员也需要验证这些功能是否也是正常的,这样开发与测试所需要的比例必须是1:1。

3、开发工作的动态性。如果编写一个UI,相对较小的开发人员会对测试的表面进行大的改动的话,你讲需要更多的测试人员。

4、有多少重要功能。如果是编写GMail,它随意使用,在这个领域bug可以容忍和修复,那么需要很少的测试人员。另一个极端,如果你正在研究医疗成像设备,你需要更多的测试,因为在这个领域很难修复缺陷,而且他们出现bug会非常糟糕。


回复二:

对于大部分我工作的公司项目,他们的比例是1:1,但是可能因为以下几个因素而有所不同:

1、开发效率。我曾经讲过一个开发人员,他有很高的输出量,并且有3个QA忙于他开发的功能上。

2、产品质量标准。一个重要的,高可靠性的系统应该有一个更好的QA,并且需要更多的QA人员。

3、一些项目必须在更好数量的配置和场景中来测试,开发者可能会保持不变,但是你显示需要更多的QA来覆盖整个测试矩阵。

4、测试的自动化程度如何。如果测试不能很容易自动化,你需要更多的人来手工测试。

回复三:

我这里目前开发测试比是8:1。原因是我们非常重视自动化测试。所有的工作都需要接近完整的单元测试覆盖率。我们还使用Fitnesse进行功能测试(所有的用户故事都必须有一个Fitnesse测试),用CI(持续集成)服务器出发完整的测试,开发人员经常检查,我们经常发布。

这是一个巨大的应用程序,有几千个类和无数的场景。其优势在于速度、灵活性以及成本。无论开发人员花在编写测试上的额外时间,都少于人力资本管理部门/管理更多的QA人员,或者在产品中发现的缺陷(甚至QA人员都是普通人)。

我们很少的QA人员会花费他们的时间编写的自动化测试上,用Selenium或参与新的功能。他们花了很少的时间反复地重复同样的功能。

回复四:

根据我的经验,有两种主要的QA人员:1)那些简单地遵循书面脚本并与应用程序交互以发现边界问题,2)以及那些可以自己编写自动化测试程序的人,寻找新的和创新的方法(侦查、Selenium、编写API客户端)来打破开发团队的代码。

如果你的QA团队由第一类的人组成,那么1:1的比例或是正好的开发人员是必须的。否则他们讲难以跟上开发团队引入的任何新特性,并且会经常地址任何对产品的修改,因为这会使他们的测试工作流程变得更加复杂。

如果你的QA团队是后者(可以编写代码的测试工程师对任何有生产力的开发团队来说都是天赐之物)。程序员可以与他们进行交流,而测试人员通过编写更智能的,更抽象的测试工具来找到自动化和改进他们自己过程的有用方法。一个真正优秀的测试工程师可能会支持2~3个开发的工作,特别是如果那些开发人员已经编写了有用的单元测试和集成测试,测试人员可以将其作为起点。

最后:

说说自己看法,国内的软件测试公司的开发测试比一般是3:1,4:1甚至5:1。开发人员一般不愿意做详尽的功能测试,因为有测试人员在,单元测试覆盖率也不高,他们会将写好的程序直接塞给测试,测试人员更多在做功能测试。如果是比较稳定的项目,测试才有时间做自动化测试,以方便日后回归测试减少工作量。

做为一名测试人员,建议每一个软件测试工程师都要提高编码能力,不仅仅只限于自动化,也要了解开发中所用到的技术,在本地运行当前所测试的开发项目,熟悉开发代码,最后可以做到找的bug时知道怎么去改。可以写单元测试,成为开发测试工程师,愿我们共同进步。

上一篇:yum如何卸载已安装的rpm并安装本地rpm包


下一篇:测试项目安排