测试的角色(Test) 要独立出来么 ?
独立出来的测试角色怎么才能发挥作用?
有些成功人士和成功的公司号称没必要有独立的测试角色 (Test), 你怎么看?
最近又看到一些关于开发人员要不要负责测试的讨论。例如:
大多数的开发团队并不需要一个独立的测试角色。即使有一个,他的所有的开发时间比上所有的测试时间应该 >20:1。
[注: 这个翻译就有错误, 原文指 开发: 测试 的比例应该 > 20:1 ]
我正好在写相关的教案, 也来凑个热闹。
[这篇文章的一些事例来自于我曾经和现在的团队。希望这些例子不足以影响相关人物和团队的伟大形象。 任何软件团队都会犯错误, 伟大的团队有勇气面对自己的错误并不断改进。]
首先, 明确两个概念:
软件测试 (Test):运用定义好的流程,工具去验证软件能实现预先设计的功能和特性, 工作的流程和结果通常是可量化的, 例如, 测试用例, bugs, 代码覆盖率, MTTF, 软件效能的参数。[注: 正因为流程和结果是可明确定义的, 可量化的, 很多测试工作可以自动化]
软件质量保证工作 (Quality Assurance):软件团队的成员为了让软件达到事先定义的质量而进行的所有活动,包括测试工作。
对于这两个术语, 不同人有不同的定义, 有人认为它们是互通的, 在《现代软件工程》的上下文中我尽量使用上述的定义.
测试的角色 (Test) 要独立出来么 ?
回答: 首先, 我相信有分工是好事, 软件团队中应该有独立的测试 (Testing) 角色。所有人都可以参与QA 的工作 (报告bug 什么的), 但是最后要有一个角色对QA 这件事负责。不但角色要独立,而且在最后软件发布的时候, 必须得到此角色的签字保证(sign off)。我在微软参与的项目都是这样做的。
在开始论证之前, 先引用斯密特 ·亚当斯的《国富论》来暖场 (我没读过这本书, 直接从网上抄的)。
分工理论
亚当斯认为,分工的起源是由人的才能具有自然差异。… 假定个人乐于专业化及提高生产力,经由剩余产品之交换行为,促使个人增加财富,此等过程将扩大社会生产,促进社会繁荣,并达私利与公益之调和。他列举制针业来说明。“如果他们各自独立工作,不专习一种特殊业务,那么他们不论是谁,绝对不能一日制造二十枚针,说不定一天连一枚也制造不出来。他们不但不能制出今日由适当分工合作而制成的数量的二百四十分之一,就连这数量的四千八百分之一,恐怕也制造不出来。”