我是一名软件开发人员,今天我和QA团队就以下问题争吵过:
QA团队成员应该超过使用同一产品的开发人员数量多少?
我知道这不是关于如何编程的问题,但我认为这个问题与软件开发有很大关系.所以我希望这个问题不会被关闭.相反,我会从在SW开发公司工作的具有良好经验的专业程序员那里得到答案,这样我就可以做出很好的统计数据.
答案非常主观,但这是我的经验.
在Microsoft,我们拥有一个强大的测试开发组织.这与传统的QA略有不同,因为我们聘请程序员在设计阶段就开始测试并让他们参与进程.他们的工作是测试,特别是自动化产品测试.根据我的经验,测试人员需要大约与测试和自动化功能一样长,因为开发人员可以对产品中的错误进行编码和修复.这意味着1:1的映射.这与经验法则非常类似,即编写单元测试只需编写代码即可.
这种混合将根据几个标准而有所不同:
开发人员正在进行多少单元测试.他们做的越多,需要的测试就越少.
开发人员从头开始编写多少内容而不是利用现有库.如果正在使用许多预先存在的代码并且测试人员也需要验证该功能,则必须考虑1:1映射的沉没开发成本.
发展有多动态.如果您正在编写一个UI,其中相对较小的开发人员调整会导致可测试表面发生较大变化,则需要更多测试人员进行调用.
关键任务的关键性如何.要编写类似GMail的东西,随便使用它,并且可以在现场容忍和修复错误,需要更少的测试人员.在另一个极端,如果你是在工作的医疗成像设备,你需要更多的测试,因为当他们出现错误是很难在现场修复和非常糟糕.
对于公司的大多数项目,我的比例为1:1.但这可能因以下几个因素而异:
开发输出.我见过一个拥有大量输出并且有3个QA工作的开发人员.
产品的质量标准.关键任务,高可靠性系统应具有比内部报告网站更高的QA标准,并且需要更多QA人员.
某些项目必须在更多配置和方案中进行测试.开发人员可能保持不变,但显然需要更多的QA来覆盖整个测试矩阵.
测试的自动化程度如何.如果测试不能轻易实现自动化,则需要更多人进行手动传递.
根据我的经验,有两种主要的QA人员:那些只是遵循书面脚本并与应用程序交互以寻找边缘案例的人,以及那些能够自己编写自动化测试代码的人,并寻求新的和创新方式(模糊测试,Selenium,编写API客户端)来打破开发团队的代码.
如果您的QA团队主要由第一类人员组成,那么与开发人员的比例为1:1或更高可能是必须的.否则,他们将难以跟上开发团队引入的任何新功能,并且经常会抵制对产品所做的任何更改,因为它会进一步使他们的测试工作流程变得复杂.
另一方面,后一种类型(即可以编码的测试工程师)对任何高效的开发团队来说都是天赐之物.编码人员可以作为同伴与他们进行交流,测试人员可以通过编写更智能,更抽象的测试工具和实用程序,找到自动化和改进自己流程的有用方法.一个真正好的测试工程师大概可以支持2-3个开发人员的工作,特别是如果这些开发商已经写有用的单元测试和集成测试自己的测试仪可以作为一个起点使用.
我的工作地点目前约为8:1 dev:qa.这样做的原因是我们非常重视自动化测试.所有工作都需要接近完整的单元测试覆盖率.我们还与Fitnesse进行功能测试(所有用户故事必须进行fitnesse测试),checkins触发CI服务器的完整测试运行,开发人员经常检查,我们经常发布.
这是一个巨大的应用程序,有几千个类和无数的场景.优点是速度,灵活性和成本.无论开发人员(甚至是一个昂贵的人)花在编写测试上的额外时间都少于雇佣/管理更多QA人员的人力资源,或者发现生产中的错误(甚至QA员工毕竟是人类).
我们所做的小QA员工可以花时间用Selenium编写自己的自动化测试或参与新功能.他们花费相对较少的时间一遍又一遍地重复相同的功能.