培养整个团队的测试能力,成为专业的测试团队。
由于测试团队独立于开发团队,测试团队成员的开发技能相对较弱,对于系统的需求、设计和代码的理解需要投入更多的工作量,而且测试人员和开发人员需要建立正式的沟通渠道,例如:需要建立更加完善的配置管理和缺陷管理系统。
5)外部测试专家基于特定的测试目标执行测试
聘请来自于组织外部的专家对特定的测试目标执行测试。外部专家并不对整个系统进行全面的测试,而只关注其中特定的领域,例如:可能只关注被测试对象的重要的质量属性(例如:易用性、安全性或性能等)。这些专家在特定的领域都有很深的造诣,可以在短时间内快速对被测试对象的特定方面进行评估,发现缺陷并提出改进意见。但是这些外部的测试专家的成本通常都很高,项目因此要有高额的投入。
6)测试由组织外的团队执行
这种形式实现了最大化的测试独立,既能够以揭露软件中的缺陷为目的开展工作,也能不受发现的缺陷的影响。组织和经济上的独立性使其有更充分的条件按测试要求去完成工作。由于专业优势,独立测试工作形成的测试结果更具信服力。由于测试结果常常和软件的质量评价联系在一起,因此,由专业化的独立测试机构进行评价权威性更强。但是这种独立性也带来一些负面影响:知识传递可能不充分、需要明确的需求定义、需要很好的沟通平台以及外部组织的质量不确定等。这些影响因素在采用这种形式的测试组织时是需要加以考虑的。
上面介绍了六种不同的测试独立性的形式。测试独立性的优点有:
● 对软件测试和软件中的错误抱着客观的态度,这种客观的态度可以解决测试中的心理学问题,既能够以揭露软件中的错误为目的进行工作,也能不受发现的错误的影响。
● 经济上的独立性使其工作有更充分的条件按测试要求去完成。
● 独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量的实践经验,形成自己的专业优势。
● 软件测试是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效用的必然途径。
● 由于专业优势,独立测试工作形成的测试结果更具信服力,而测试结果常常和对软件的质量评价联系在一起。因此,由专业化的独立测试机构进行评价的权威性更强。
● 独立测试机构的主要任务是进行独立测试工作,这使得测试工作在经费、人力和时间方面更有保证,不会因为开发的压力而减少对测试的投入,降低测试的有效性,从而可以避免开发组织侧重软件开发而对测试工作产生不利的影响。
测试的独立性并不是越高越好。随着测试独立性的提高,也会带来一些问题:
● 组织的复杂度越来越高,管理成本增加,当测试团队不属于该组织的时候,对于测试团队的测试质量无法及时监控。
● 沟通效率降低,原来可能只是需要打个招呼的问题,现在需要通过复杂的配置管理、缺陷管理和文档管理系统来解决。
● 测试人员和开发人员的距离越来越远,项目团队氛围可能会下降,某些极端情况甚至出现开发人员和测试人员的对立现象。
● 测试人员重点关注测试相关技能,对开发技能的掌握比较差,不利于发现系统需求和设计方面的缺陷。
● 独立的测试团队可能降低开发人员的质量责任感,开发人员可能会觉得产品质量应该是测试团队的事情,而不是整个项目团队的责任。
一个组织的测试活动可以采用多种测试独立性策略。不同的测试级别可以使用不同形式的测试独立性策略。低级别的测试采用独立性比较低的策略,高级别的测试采用独立性比较高的策略,例如:组件测试和集成测试由开发人员来完成,系统测试由企业内部独立的测试团队完成,验收测试由组织外引入的测试团队完成,如表1所示。具体的形式可以根据组织和项目的实际情况进行调整。