测试团队是否应该独立于开发团队

建立、组织和管理一支优秀的测试团队是做好软件测试工作的基础。测试活动的开展必须贯穿于整个软件开发生命周期,因此,测试活动应该和相关的开发活动进行协调,并统一规划。不同的组织,可能会以不同的方式组织测试团队,以达到组织和项目层面的测试目标。

   采用独立的测试人员进行测试和评审,发现缺陷的效率会明显提高,因此,独立的测试团队是一个较好的选择。独立测试的方式并不是完全的替代开发人员进行的 测试,因为开发人员也可以高效地在他们的工作产品中找出很多缺陷。因此,根据组织和项目的特点,可以选择不同的独立测试策略:

ü              非独立的测试人员(开发人员测试自己的代码)。

ü              测试由不同的开发人员执行,而不是代码的编写者本人。

ü              测试由开发团队中专门的测试人员完成。

ü              测试由独立于开发团队的测试团队完成。

ü              外部测试专家基于特定的测试目标执行测试。

ü              测试由组织外的团队执行(例如:外包)。

   对于庞大、复杂的系统或安全关键系统,最好让独立的测试人员进行多个级别的测试。开发人员也可以参与其中(特别是在测试级别比较低的时候),但是开发人 员缺少测试目的性和测试相关技能会限制他们的测试效率。独立测试人员有权要求定义测试过程及规则,但是只有在明确授权的情况下才能充当这种过程相关的角 色。在实际的项目中,可以考虑采用多种独立测试策略相结合的形式。

  1 )非独立的测试人员

   在这种情况下,没有任何的独立性。开发人员对自己开发的代码进行测试。开发人员将根据自己的理解对代码进行测试,一旦发现缺陷,开发人员能够马上进行修 复,大大缩短解决问题的时间;同时由于开发人员对代码很熟悉,知道哪些地方可能存在更多的问题,可以有针对性地进行测试。但通常情况下,开发人员愿意花费 更多的时间在开发活动上,而留给测试活动的时间很少,测试活动的质量无法得到保障。从心理学来看,让开发人员发现自己代码中存在的缺陷存在一定难度,因 此,不太容易发现缺陷。

  2 )测试由不同的开发人员执行

   测试由不同的开发人员执行,而不是代码的开发者本人。这种形式在一定程度上体现了测试的独立性。一方面,担当测试工作的开发人员对系统设计和开发的代码 比较熟悉,而且同为开发人员,沟通比较通畅;另一方面测试对象并不是自己开发的代码,这种情况下缺陷的发现率将会有一定程度的提高。开发人员兼任测试人员 的工作,没有形成独立的测试团队,整个团队的核心是开发,这种情况下,一个开发人员测试另一个开发人员的代码可能不情愿报告缺陷。同时,开发人员设计的测 试用例通常集中在正面的功能测试用例上,对于一些非功能测试以及异常情况的考虑比较少。

  3 )测试由开发团队中专门的测试人员完成

   开发团队内部有专门的测试人员或测试团队,这些测试人员或测试团队向开发经理汇报工作。该模式下,测试人员已从开发人员中独立出来,因此,测试人员具有 一定的独立性,他们可以采用和开发人员不同的视角分析和检查被测试产品;同时测试人员和开发人员联系紧密,可以和开发人员及时沟通。但是这种模式下,测试 人员仍然受到开发经理的制约,不能完全独立地从产品质量出发进行测试,由于整个项目进度和经费的关系,测试的投入可能不够,在开发任务紧张的情况下,这些 测试人员还可能负责部分开发任务,从而不能保证产品质量。

  4 )测试由独立于开发团队的测试团队完成

   这种情况下,测试团队具有相当的独立性。此时,测试团队直接向利益相关者(例如:项目经理)汇报,测试团队重点关注被测试对象的质量。发现缺陷成为测试 团队最重要的目标之一,对测试对象中出现的问题能够进行客观的分析和评价。由于整个团队都负责测试相关活动,测试团队可以集中精力培养整个团队的测试能 力,成为专业的测试团队。

  由于测试团队独立于开发团队,测试团队成员的开发技能相对较弱,对于系统的需求、设计和代码的理解需要投入更多的工作量,而且测试人员和开发人员需要建立正式的沟通渠道,例如:需要建立更加完善的配置管理和缺陷管理系统。

  5 )外部测试专家基于特定的测试目标执行测试

   聘请来自于组织外部的专家对特定的测试目标执行测试。外部专家并不对整个系统进行全面的测试,而只关注其中特定的领域,例如:可能只关注被测试对象的重 要的质量属性(例如:易用性、安全性或性能等)。这些专家在特定的领域都有很深的造诣,可以在短时间内快速对被测试对象的特定方面进行评估,发现缺陷并提 出改进意见。但是这些外部的测试专家的成本通常都很高,项目因此要有高额的投入。

  6 )测试由组织外的团队执行

   这种形式实现了最大化的测试独立,既能够以揭露软件中的缺陷为目的开展工作,也能不受发现的缺陷的影响。组织和经济上的独立性使其有更充分的条件按测试 要求去完成工作。由于专业优势,独立测试工作形成的测试结果更具信服力。由于测试结果常常和软件的质量评价联系在一起,因此,由专业化的独立测试机构进行 评价权威性更强。但是这种独立性也带来一些负面影响:知识传递可能不充分、需要明确的需求定义、需要很好的沟通平台以及外部组织的质量不确定等。这些影响 因素在采用这种形式的测试组织时是需要加以考虑的。

  上面介绍了六种不同的测试独立性的形式。测试独立性的优点有:

ü              对软件测试和软件中的错误抱着客观的态度,这种客观的态度可以解决测试中的心理学问题,既能够以揭露软件中的错误为目的进行工作,也能不受发现的错误的影响。

ü              经济上的独立性使其工作有更充分的条件按测试要求去完成。

ü              独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量的实践经验,形成自己的专业优势。

ü              软件测试是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效用的必然途径。

ü              由于专业优势,独立测试工作形成的测试结果更具信服力,而测试结果常常和对软件的质量评价联系在一起。因此,由专业化的独立测试机构进行评价的权威性更强。

ü              独立测试机构的主要任务是进行独立测试工作,这使得测试工作在经费、人力和时间方面更有保证,不会因为开发的压力而减少对测试的投入,降低测试的有效性,从而可以避免开发组织侧重软件开发而对测试工作产生不利的影响。

  测试的独立性并不是越高越好。随着测试独立性的提高,也会带来一些问题:

ü              整个组织的复杂度越来越高,管理成本增加,当测试团队不属于该组织的时候,对于测试团队的测试质量无法及时监控。

ü              沟通效率降低,原来可能只是需要打个招呼的问题,现在需要通过复杂的配置管理、缺陷管理和文档管理系统来解决。

ü              测试人员和开发人员的距离越来越远,项目团队氛围可能会下降,某些极端情况甚至出现开发人员和测试人员的对立现象。

ü              测试人员重点关注测试相关技能,对开发技能的掌握比较差,不利于发现系统需求和设计方面的缺陷。

ü              独立的测试团队可能降低开发人员的质量责任感,开发人员可能会觉得产品质量应该是测试团队的事情,而不是整个项目团队的责任。

   一个组织的测试活动可以采用多种测试独立性策略。不同的测试级别可以使用不同形式的测试独立性策略。低级别的测试采用独立性比较低的策略,高级别的测试 采用独立性比较高的策略,例如:组件测试和集成测试由开发人员来完成,系统测试由企业内部独立的测试团队完成,验收测试由组织外引入的测试团队完成,如表 1 所示。具体的形式可以根据组织和项目的实际情况进行调整。

测试团队和测试级别

独立性

级别

不同的开发人员

组织内独立的测试团队

组织外部的测试团队

组件测试

X

 

 

集成测试

X

 

 

系统测试

 

X

 

验收测试

 

 

X

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值