质量保证与发展比率

时间:2009-09-16 18:44:25

标签: software-quality qa

我是一名软件开发人员,今天我和QA团队就以下问题争吵:

QA团队成员应该超过使用同一产品的开发人员数量?

我知道这不是关于如何编程的问题,但我认为这个问题与软件开发有很大关系。所以我希望这个问题不会被关闭。相反,我会从在SW开发公司工作的具有良好经验的专业程序员那里得到答案,这样我就可以做出很好的统计数据。

12 个答案:

答案 0 :(得分:37)

答案非常主观,但这是我的经验。

在Microsoft,我们拥有一个强大的测试开发组织。这与传统的QA略有不同,因为我们聘请程序员在设计阶段就开始测试并让他们参与进程。他们的工作是测试,特别是自动化产品测试。根据我的经验,测试人员需要大约与测试和自动化功能一样长,因为开发人员可以对产品中的错误进行编码和修复。这意味着1:1的映射。这与经验法则非常类似,即编写单元测试只需编写代码即可。

此混合将根据以下几个标准而有所不同:

  1. 开发人员正在进行多少单元测试。他们做的越多,需要的测试就越少。
  2. 开发人员从头开始编写多少内容而不是利用现有库。如果正在使用许多预先存在的代码,并且测试人员也需要验证该功能,那么1:1映射必须考虑沉没的开发成本。
  3. 发展有多动态。如果您正在编写一个UI,其中相对较小的开发人员调整会导致可测试表面发生较大变化,那么您将需要更多的测试人员进行调用。
  4. 该功能的关键任务如何。要编写类似GMail的东西,随便使用它,并且可以容忍并在现场修复错误,需要更少的测试人员。另一方面,如果您正在使用medical imaging devices,则需要进行更多测试,因为错误很难在现场修复,而且在发生时非常糟糕。

答案 1 :(得分:22)

对于公司的大多数项目,我的比例为1:1。但这可能因以下几个因素而有所不同:

  • 开发输出。我见过一个拥有大量输出并且有3个QA工作的开发人员。
  • 产品的质量标准。关键任务,高可靠性系统应具有比内部报告网站更高的QA标准,并且需要更多QA人员。
  • 某些项目必须在更多配置和方案中进行测试。开发人员可能会保持不变,但显然需要更多的质量保证来覆盖整个测试矩阵。
  • 测试的自动化程度如何。如果测试不能轻易实现自动化,则需要更多人员进行手动传递。

答案 2 :(得分:6)

根据我的经验,有两种主要的QA人员:那些只是遵循书面脚本并与应用程序交互以寻找边缘案例的人,以及那些可以自己编写自动化测试代码的人,并寻求找到新的和创新的方式(模糊测试,Selenium,编写API客户端)来打破开发团队的代码。

如果您的QA团队主要由第一类人员组成,那么与开发人员的比例为1:1或更高可能是必须的。否则,他们将难以跟上开发团队引入的任何新功能,并且经常会抵制对产品所做的任何更改,因为它会进一步使他们的测试工作流程变得复杂。

另一方面,后一种类型(即可以编码的测试工程师)是任何高效开发团队的天赐。编码人员可以作为同伴与他们进行交流,测试人员可以通过编写更智能,更抽象的测试工具和实用程序,找到自动化和改进自己流程的有用方法。一个非常优秀的测试工程师可能可以支持2-3个开发人员的工作,特别是如果这些开发人员已经编写了有用的单元和集成测试,测试人员可以将其作为起点。

答案 3 :(得分:6)

我的工作地点目前约为8:1 dev:qa。这样做的原因是我们非常重视自动化测试。所有工作都需要接近完整的单元测试覆盖率。我们还与Fitnesse进行功能测试(所有用户故事必须进行fitnesse测试),checkins触发CI服务器的完整测试运行,开发人员经常检查,我们经常发布。

这是一个巨大的应用程序,有几千个类和无数场景。优点是速度,灵活性和成本。无论开发人员(甚至是一个昂贵的人)花在编写测试上的额外时间都少于雇佣/管理更多QA人员的人力资源,或者发现生产中的错误(甚至QA员工毕竟是人类)。

我们所做的小QA员工可以花时间用Selenium编写自己的自动化测试或参与新功能。他们花费相对较少的时间一遍又一遍地重复相同的功能。

答案 4 :(得分:4)

有很多因素可以解决这个问题。

  1. 你有自动化测试吗?
  2. 您的发布周期是如何构建的?
  3. 您的单元测试覆盖率是多少?
  4. 您的员工(质量保证和开发人员)有多好?
  5. 您是否在整个项目生命周期中包含QA,或者最后是否将其转储?
  6. 您是否正在对QA进行增量发布?
  7. 我的工作地点从3:1(QA / DEV)到.5:1(QA / DEV)不等。它归结为为了充分测试产品需要多少质量保证资源,并且没有全面的答案。

答案 5 :(得分:1)

现在,我工作的每个QA人员都有3名开发人员。这有其起伏,因为QA有时会发现问题,但有代码更改之外的解决方案,例如。不要点击没有意义的地方。

有几次没有我工作过的质量保证,有时几乎就像灾难的食谱,因为客户随后成为QA,因为他们的问题会成为开发人员的问题。

答案 6 :(得分:1)

质量保证人员的数量不应取决于开发人员数量。它应该取决于产品的理想质量,而不是其他任何东西。

许多人在这里说“对QA”一个好的开发人员的工作比“QA”更糟糕的开发人员的工作更容易。见鬼,为什么这是真的? “确保质量” - 质量保证是“质量保证” - 意味着设计一个过程,标志产品“质量保证通过”和“质量保证失败”。我只知道两个依赖于代码本身的进程:静态代码检查和同行评审。虽然前者在某种程度上被使用,并且它有时需要QA人员来维护它,但是代码中称为“ quality ”的东西对于没有灵魂的机器来说并不重要。同行评审由程序员完成,而不是QA。我希望这能说服你,QA的数量不依赖于开发人员,不是吗?

在我们公司所在的领域,没有竞争,市场非常狭窄。因此,我们从错误报告和我们没有QA 获取所有必要信息,因此比率为零。所有测试均由开发人员完成。尽管如此,我们仍然活着,因为所需的质量并不需要任何QA人员。

答案 7 :(得分:1)

在我们的组织中,比率为dev:QA为5:2,为此,我们需要了解更多场景,例如

  1. 正在进行单元测试,在我们的案例中,一个人完全致力于编写单元测试计划,5个成员的团队正在执行单元测试用例并修复bug 我们的PL完全不参与编码,他只做过程/审查导向的事情

  2. 功能测试由兼职测试人员完成,您可以说是开发人员完成的半资源和一个功能测试周期

  3. 因此,这取决于项目规模,LOC编写和基于其CMM级别的公司资源

答案 8 :(得分:1)

有很多因素,最重要的是应用程序所需的质量级别,它是一个小型网站吗?还是一种主要的医疗器械?还是金融体系?为航天飞机改变一行代码可能需要数周的测试......

在渐进式开发商店中,QA资源需求(作为开发比率)应随着QA改进的实施而逐渐减少,例如TDD,代码评论等。我认为QA专注于纯手工测试是浪费,QA应该用于改进流程并帮助开发人员感到愚蠢(通过在发布之前删除错误)。

答案 9 :(得分:1)

这取决于正在开发的组织和Web / app。所有公司都根据自己的要求拥有自己的开发:QA比率。

简而言之,它取决于项目规模和组织中可用的资源。

答案 10 :(得分:0)

考虑花费的时间而不是人数。对于经过良好测试和“批准”的应用程序,完全有可能在每个开发时间内,可能需要一个小时的QA工作。我特指技术QA角色,而不是功能测试。 QA团队和开发团队需要能够紧密合作,因此QA团队可以在开发过程中编写测试用例。这意味着需要将所有内容写入实现合同(函数名称,输入参数等)。

答案 11 :(得分:-1)

这取决于当天结束时员工的素质。如果一个程序员完成两个QA的工作量,则比率为1:2,反之亦然。这里的员工质量将是#1。