浅谈:软件外包测试管理与实践
2008-11-25  作者:佚名 

  本文围绕这一主题,主要从软件外包测试服务提供商的角度,探讨软件外包测试项目的管理方法及实践经验。为了便于读者阅读和理解,笔者将分计划、组织、领导、控制四个篇章来展开论述。

  1.软件外包测试管理之计划篇

  1.1灵活选择外包测试服务的方式及合同类型

  实施软件外包测试首先要确定采取什么样的形式。目前外包测试服务提供商(以下简称“外包公司”)提供的服务方式主要包括“现场测试”和“外部测试”。“现场测试”是指外包公司派遣测试人员到发包方的公司现场工作,开展测试业务。而“外部测试”是指在外包公司将发包方的单子(相关待测产品)拿回本公司,组织测试人员开展测试业务。

  二者看上去虽然只是场地差异,但如何选择另有深意。比如,“现场测试”一般适用于软件测试环境非常复杂、有极高的保密性要求、需要与开发团队密切配合的场合。而“外部测试”一般适用于开发商对外包服务商管理能力非常信任、软件功能相对稳定、开发和测试可以独立进行的场合。

  除了要合理选择合作的形式外,选择适当的合同类型也是重中之重。适用于外包测试项目的合同类型一般有两种,即物料工时合同和固定总价合同。物料工时合同适用于范围不确定、进度不明确的外包测试项目,固定总价合同适用于范围、进度、技术要求均清晰明了的外包测试项目。读者朋友可以根据外包项目的特点酌情选择。此外,对于项目管理能力不成熟的外包企业笔者建议尽量多地选择物料工时合同,规避可能的风险。

  总而言之,外包公司需要分析被测试软件的功能特点、测试要求、外包测试的成熟度,以及本公司的服务能力,与发包方协商选择最有效的外包测试服务方式,降低测试风险,提高测试的质量。

  1.2制定切合实际的外包测试计划

  大型软件开发商具有成熟的软件外包测试管理能力,他们通常制订出外包测试计划。一些刚刚开始把软件测试外包的软件公司,他们经常希望外包公司为他们提供外包测试计划、设计测试用例、执行测试和报告测试结果等全部测试服务。

  对于第一种情况,开发商已经制定了测试计划,外包公司需要全面理解测试计划的内容,根据外包测试的经验和被测项目的特点,提出测试计划的改进建议。包括测试范围、测试阶段的划分、测试资源、测试过程质量跟踪等方面。

  对于第二种情况,外包公司需要开发商提供软件需求文档、软件设计规格说明、测试需求等文档,根据开发商的项目进度、外包费用、质量要求,结合本公司的服务能力(软件、硬件、团队和测试经验),制定切实可行的外包测试计划。根据客户对测试计划的评价和反馈进行更新修改,最终获得双方的正式审批。

  2.软件外包测试管理之组织篇

  2.1组建有“战斗力”的测试团队

  外包测试是智力密集型工作,测试团队的能力决定了测试的质量。测试团队的建设要考虑两个问题:第一是组织结构,包括需要多少测试经理、测试组长、测试工程师。第二是每个岗位需要的技能,例如测试技术经验、项目管理经验等。

  由于软件外包测试受到项目成本和资源的制约,由测试专家构成的“梦幻团队”是不切实际的。有“战斗力”的团队是现实目标,由具有测试管理经验的人员担任测试经理,掌握测试技术和熟悉被测软件的人员担任测试组长,高级测试工程师、测试工程师和测试新人执行测试。

  团队的“战斗力”指的整体的测试能力。具有“战斗力”的团队既可以保证测试质量,又可以控制测试成本,同时可以锻炼新人。测试团队的“战斗力”要靠测试经理、测试组长的有效交流,测试知识的有效传承,积极学习和总结实现。

  2.2合理组织外包测试工作的流程

  任何软件外包测试项目都需要执行一系列紧密联系的过程,包括测试计划、测试策略、测试设计、测试执行、过程跟踪、测试验收、项目总结等环节。软件外包公司需要协助开发商明确每个流程的内容、任务、目标、方法。确定每个环节双方的任务,评估方法和提交方式。

  测试流程的管理是软件外包测试管理的“重中之重”,根据管理的内容不同,可以分为:文档管理、配置管理、缺陷管理、进度管理、质量管理、资源管理、成本管理、变更管理等方面。外包测试流程管理需要开发商和外包公司共同制定和遵守测试流程,明确流程变更的条件和方法,杜绝测试的随意性和失控性,保证测试进度和质量的目标。

  2.3注意常规测试与随机测试相结合

  本文的“常规测试”是指根据测试用例执行的测试,“随机测试”是指根据测试者的经验和软件的测试需求执行的测试。由于软件测试的复杂性,单纯靠执行测试用例发现缺陷,对于保证测试的覆盖性经常是不够的。因此,适当加强随机测试的方法,可以发现常规测试难以发现的缺陷,是对常规测试的有效补充

  随机测试在什么阶段执行,执行多长时间,这些将影响测试的进度和成本,外包公司需要与开发商在测试计划阶段进行讨论,取得共识。一般在执行完测试用例之后,可以进行适当的随机测试。另外,在软件发布前的最后测试阶段,也需要执行随机测试。执行随机测试的人员通常是具有丰富测试经验,熟悉被测试软件的高级技术人员。