目前一个普遍存在的观点是测试人员应该为产品质量负责。当产品投入市场或者交付客户时,如果出现过多的缺陷,管理层首先的反应会是质疑测试团队的工作。那么,在一个项目中,测试人员是否要对产品质量负责,如果不是的话测试人员究竟承担些什么责任,或者说,测试团队在整个项目中的责任究竟是什么?

  质量的定义

  每个人对质量有自己的定义。由于本文的观点来自于开发外包软件的工作经历,我们倾向于以下对于质量的定义:“产品符合客户的要求”。当然,这并不是质量的定义,也并不一定是准确的一个。然而,当本文中使用“质量”一词时,指的是上述的定义。

  测试人员负责软件产品的质量?

  有,我的女儿让我帮她检查一下她的代数作业。我检查过以后发现几个错误,并且我也很清楚的标记上是哪里错了,为什么错了。我的女儿把她的作业本拿回去后,第二天却对我说:“多亏了你的批注,我的分数很低。”原来,由于偷懒,她前没有把批注的错误修改好直接交上去了。因此回来她试图把责任推到我的身上。

  同样,在开发项目中,测试人员可能会被抱怨说,发现了“太多”缺陷或者 “错误的缺陷”,或者是“在不恰当的时间”发现缺陷。然后项目经理决定不对所有的缺陷进行修复(或不打算对任何缺陷进行修复),这样在验收测试或终用户操作过程中,这些没有被修复的缺陷在很大几率上会被客户发现。

  因此,测试人员通常不能决定发现的缺陷是否被修复。也是说,产品的质量不能完全落入测试人员责任区。

  从这个意义上讲,有些项目经理会不赞同这种说法。原因很明显,产品出现质量问题时,不称职的项目经理希望每个人(特别是测试团队)都与他一起承担责任,如果他们能够将项目失败的责任推到别人的头上,那当然好了。然而,项目经理(不是整个团队也不是测试人员)应该是为产品质量负责的人,因为他/她是对项目的关键决策进行终拍板的人(这里的决策包括将自己的权力委托他人执行的决定)。

  测试人员的职责

  很显然,如果测试人员不对产品质量负责,而他们的服务却又是项目的需要,那么他们一定在项目中负责其他一些事情。

  一个测试人员是要为一个开发团队提供测试服务。 假设开发团队对项目中的职责有正确的认识,那么他们会期望测试人员能够对软件产品的当前状态提出实时的信息,能够从发现与修复缺陷的角度预测产品开发的成败。

  ● 从满足客户需求的角度,对产品当前状态进行了哪些定性和定量的评估?

  ● 如果按照目前发现和修复缺陷的走势,项目团队是否能够按时交付高质量的产品?

  ● 如果预测并不乐观,那么推荐采取哪些纠正措施?

  在任何时刻,如果测试人员可以向干系人提供至少上述两个问题的答案,那么他是合格的。如果他能够回答上述所有三个问题,那么他毫无疑问是一个的测试人员!

  什么原因造成了对测试人员职责的误解

  第一,我们经常把软件测试和质量保证这两个概念混为一谈,特别是当使用“质量保证”这个词的时候。

  不知道初是哪个人脑子出了问题,决定称测试人员为“质量保证专家”。另外,很显然有些人(特别是新手)可能会觉得被称为“质量保证专家”比“测试人员”更受人尊敬。还有以前经常看到的,雇主和招聘机构的网站张贴了寻求QA工程师和QA经理的广告,然而他们的职责的列表基本上是典型的测试人员/测试设计人员和典型的测试经理的职责。这证明了雇主已形成了对测试人员不正确的期望。

  事实上,我们已解释过,测试人员不直接负责产品质量,因为他们通常对有关产品质量的决策没有影响力。测试人员不会参与编码,也不会去更改代码,这是说他们不能直接改善软件代码的质量。更确切地说,测试人员的工作不是保证质量,而辅助质量。

  第二,像之前说过的,如果测试团队是在承担产品质量保证这样一种误解下工作的话,经理和其他项目参与者可以很自然地将缺陷的责任推到测试人员的身上。

  第三,有的高级管理层真的是误认为测试人员能够保证质量。本文的作者曾经遇到过这样的情况,执行官决定进行组织级或项目级的系统测试的主要原因是,他们认为测试人员能够保证质量。

  题外话

  测试人员(或测试团队)的责任是经常讨论的一个问题。项目的所有干系人都应该清楚这个问题的答案,因为这关系到项目的成败。如果干系人的期望与测试团队的目标一致,那么测试人员和开发人员之间的互动和沟通会比较顺畅,没有严重的冲突,并且不同级别的干系人都能及时获得项目状态信息并了解如何使用该信息。

  当然,一个项目的成功并不完全取决于对测试人员的职责达成共识,但我们应该明白这是一个必要的前提。