我是一名软件开发人员,今天我与我们的 QA 团队就以下问题发生了争执:
QA 团队成员应该超过开发同一产品的开发人员的数量?
我知道这不是关于如何编程的问题,但我认为这个问题与软件开发非常相关。所以我希望这个问题不会被关闭。相反,我会从在 SW 开发公司工作经验丰富的专业程序员那里得到答案,这样我就可以做出很好的统计。
我是一名软件开发人员,今天我与我们的 QA 团队就以下问题发生了争执:
QA 团队成员应该超过开发同一产品的开发人员的数量?
我知道这不是关于如何编程的问题,但我认为这个问题与软件开发非常相关。所以我希望这个问题不会被关闭。相反,我会从在 SW 开发公司工作经验丰富的专业程序员那里得到答案,这样我就可以做出很好的统计。
答案非常主观,但这是我的经验。
在 Microsoft,我们拥有强大的测试开发组织。这与传统的 QA 略有不同,因为我们早在设计阶段就聘请程序员进行测试并让他们参与流程。他们的工作是测试,尤其是自动化产品测试。根据我的经验,测试人员测试和自动化功能所花费的时间大约与开发人员编写和修复产品中的错误所花费的时间一样长。这意味着 1:1 映射。这与编写单元测试所花费的时间与编写代码差不多的经验法则非常相似。
这种组合将根据几个标准而有所不同:
对于我在公司工作的大多数项目,比例是 1:1。但这可能因几个因素而异:
根据我的经验,有两种主要的 QA 人员:一种是简单地遵循书面脚本并与应用程序交互以努力寻找边缘案例,另一种是实际可以自己编写自动化测试代码,并寻求新的和打破开发团队代码的创新方法(模糊测试、Selenium、编写 API 客户端)。
如果您的 QA 团队主要由第一类人员组成,那么与您的开发人员的 1:1 比例或更好的比例可能是必须的。否则,他们将难以跟上开发团队引入的任何新功能,并且通常会抵制对产品所做的任何更改,因为这会使他们的测试工作流程进一步复杂化。
另一方面,后一种类型(即可以编码的测试工程师)对于任何高效的开发团队来说都是天赐之物。编码人员可以与他们作为同行进行交流,测试人员可以通过编写更智能、更抽象的测试工具和实用程序来找到自动化和改进自己的流程的有用方法。一位真正优秀的测试工程师可能可以支持 2-3 名开发人员的工作,特别是如果这些开发人员已经在自己编写有用的单元和集成测试,测试人员可以将其用作起点。
我的工作地点目前大约是 8:1 dev:qa。原因是我们非常重视自动化测试。所有工作都需要接近完整的单元测试覆盖率。我们还使用 Fitnesse 进行功能测试(所有用户故事都必须进行 Fitnesse 测试),签入触发使用 CI 服务器的完整测试运行,开发人员经常签入,我们经常发布。
这一切都在一个拥有数千个类和无数场景的巨大应用程序上。优势在于速度、敏捷性,当然还有成本。开发人员(即使是昂贵的)编写测试所花费的额外时间都少于雇用/管理更多 QA 人员或发现生产中的错误(甚至 QA 人员毕竟也是人)的人力资本。
我们只有很少的 QA 人员可以花时间用 Selenium 编写自己的自动化测试或参与新功能。他们花相对较少的时间一遍又一遍地重新散列相同的功能。
有很多因素可以回答这个问题。
我工作过的地方从 3:1 (QA/DEV) 到 0.5:1 (QA/DEV) 不等。它归结为充分测试产品需要多少 QA 资源,并且没有包罗万象的答案。
现在我工作的地方,每个 QA 人员有 3 名开发人员。这有其起伏,因为有时 QA 会发现问题,但在代码更改之外还有解决方案,例如,不要点击没有意义的地方。
有几次我工作的地方没有质量保证,这有时几乎就像是灾难的秘诀,因为客户然后成为质量保证,因为他们的问题变成了开发人员的问题。
QA 人员的数量不应取决于开发人员的数量。它应该取决于产品的理想质量,而不是其他任何东西。
这里的许多人说“对 QA” 一个好的开发人员的工作比“对 QA” 一个更差的开发人员的工作更容易。见鬼,为什么是真的?“保证质量”——QA就是“质量保证”——是指设计一个流程,用“QA通过”和“QA失败”来标记产品。我只知道依赖于代码本身的两个过程:静态代码检查和同行评审。虽然前者有些使用,而且有时需要 QA 人员来维护它,但所谓的代码“质量”对于没有灵魂的机器来说并不重要。同行评审是由程序员完成的,而不是 QA。我希望这能让您相信 QA 的数量并不依赖于开发人员,不是吗?
在我们公司从事的领域,没有竞争,市场非常狭窄。因此,我们从错误报告中获得了所有必要的信息,并且我们没有 QA,因此比率为零。所有测试均由开发人员完成。尽管如此,我们确实生活,因为所需的质量不需要雇用任何质量检查人员。
在我们的组织中,dev:QA 的比例是 5:2,为此我们需要了解更多场景,例如
谁在进行单元测试,在我们的案例中,一个人完全致力于编写单元测试计划,由 5 名成员组成的团队正在执行单元测试用例并修复错误,我们的 PL 根本不参与编码,他只做流程/审查面向事物
功能测试由兼职测试人员完成,您可以说由开发人员完成一半资源和一个周期的功能测试
因此,这取决于项目规模、书面语言和公司资源,具体取决于他们的 CMM 级别
有很多因素,最重要的是应用程序所需的质量水平,它是一个小型网站吗?还是主要的医疗器械?还是金融系统?为航天飞机更改的一行代码可能需要数周的测试......
在渐进式开发商店中,QA 资源需求(作为开发的比率)应该随着 QA 改进的实施而减少,例如 TDD、代码审查等。我认为专注于纯手工测试的 QA 是一种浪费,QA 应该用于改进流程并帮助开发人员感到愚蠢(通过在发布之前消除错误)。
这取决于正在开发的组织和网络/应用程序。所有公司根据他们的要求都有自己的开发:质量保证比率。
简而言之,它取决于项目规模和组织中可用的资源。
考虑花费的时间而不是人数。对于经过良好测试和“批准”的应用程序,每个开发小时都可能需要一个小时的 QA 工作。我专门指的是技术 QA 角色,而不是功能测试。QA 团队和开发团队需要能够紧密合作,因此 QA 团队可以在开发的同时编写测试用例。这意味着所有内容都需要写入实现合同(函数名称、输入参数等)。
好吧,这最终取决于员工的素质。如果一个程序员的工作量与两个 QA 的工作量一样多,那么这个比例就是 1:2,反之亦然。这里的员工素质将是#1。