对于测试团队而言,测试中途接手的项目和产品,存在很多的风险和挑战。本文首先从测试的角度阐述中途接手项目测试可能存在的风险和挑战;然后根据笔者的经验和知识,提出测试方面的建议,以帮助测试人员更好的开展此类条件下的测试活动。
1)风险和挑战
(1)项目测试经验欠缺
对于中途接手的项目,测试团队首先面临的一个挑战是缺少当前项目的测试经验,至少是不熟悉项目,例如:系统的整体设计架构、实现的主要功能、客户的关注重点、系统的测试平台、系统使用的测试工具、系统配置和管理的命令、系统中主要的缺陷分布等。项目中这些信息和知识,都需要测试团队花费很多的时间进行学习和理解。测试团队中尽管有的成员可能对系统功能有些经验和知识储备,但是对于该项目而言,测试经验方面肯定是欠缺的,或者是缺乏经验的。
(2)开发测试文档不全
中途接手的项目,测试团队面临的第二个问题是:原有的需求文档和测试文档可能不全,甚至没有,例如:由于软件开发的成熟度低下,或者由于项目移交的时候没有将相关的文档成功交接。而后续的测试工作需要详细了解以前项目版本的需求和相关的测试文档,从而可以深入学习和理解以前项目的基本功能。
对开发团队而言,没有原始的需求文档也是一个非常大的挑战。首先,开发人员只能通过研究软件的代码来理解系统的功能和实现。而对系统各种可能的数据输入都进行研究是不现实的,并且也很容易遗漏一些复杂的功能实现。其次,开发人员在面对特定输入情况下系统产生令人迷惑的输出,开发人员可能会想当然的认为系统就是这样实现的。令情况更糟的是,开发人员在确定系统正确的输出和工作方式过程中,并没有进行相应的文档化,而是在这基础上直接进行代码设计,导致这种猜测循环经常持续,从而使需求的收集和文档化更加困难。
而对于测试团队来说,同样面临严峻的挑战。虽然从表面上看,在已有系统上进行测试,测试人员可以通过比较以前软件的输出和新的软件输出结果进行对比。但是,基于不同版本输出结果进行判断并不总是安全的,例如:原来系统的输出就是错误的。基于这样的判断,测试人员就会遗漏系统中的一些缺陷。或者,原来系统实现的功能是不正确的,而在新的系统中,由于增加或升级了软件修改了原来代码的缺陷,其输出是正确的。基于两者之间的比较,测试人员会认为新的系统由于代码的修改引入了缺陷,而提交了不应该提交的缺陷报告。假如开发人员修改了本来是正确的代码,新的软件中又引入了新的缺陷。原本应该在需求阶段确定的预期结果的判断,落到了测试人员头上。
(3)不稳定的测试对象
在很多时候,项目在移交之前可能已经交付给客户使用了,后续的开发和测试会在用户版本的基础之上进行一些维护工作,例如:新功能的添加、缺陷的修改、系统架构的更改、新技术代替老技术等。在这种情形下,整个系统看起来更象是移动的不稳定的实体,这样导致的结果是新的系统一直处于多种开发状态的混合体,它们会经历不同的生命周期阶段,是个不稳定的测试对象。
(4)测试工作量的估算
由于中途接手的项目经常处于不稳定的状态,导致测试工作量、测试进度、测试人员和资源的估算更加困难。测试工作量的估算只能是基于对系统功能的粗略理解,而所谓的系统功能甚至可能是错误的,或者系统在维护过程中功能经常发生变更。对于测试估算而言,即使有详细的需求文档的情况下,也是一件非常困难的事情。因此,对中途接手的项目,由于其不稳定的特点,进行测试工作量的估算,将是难上加难的事情。
(5)回归测试用例选择
对于中途接手的项目,后续的开发和测试是基于前面的软件版本而展开的。针对开发活动而言,后续的开发主要是指软件版本新功能的增加、版本的升级、平台的升级,以及前面版本中遗留的缺陷的修改等。而对于测试活动而言,后续的活动主要是验证新增功能是否符合系统的要求、确认是否满足客户的要求、确定缺陷是否已经修复以及新增加的功能和缺陷修复没有在原来系统中引入新的缺陷。因此,对于中途接手的项目,测试团队的很多测试工作将关注在由于软件变更而进行的回归测试。
在中途接手的项目中,回归测试在整个测试活动中会占有很大的比重。因此如何选择每次测试的回归测试用例,对于测试团队而言,也是一个很大的挑战。由于前面提到的测试项目经验欠缺和开发测试文档的不全,导致测试团队很难进行测试风险的估算,从而很难确定回归测试的重点和优先级,影响回归测试用例的选择。
(6)项目知识的转移
中途接手的项目,还有一个很大的挑战是项目相关知识的转移,例如:系统、开发和测试相关知识的转移。项目是从一个研发中心转移到另外一个研发中心,由于语言、文化和习惯的差异,在知识转移过程中,很难实现无缝的转移。由于测试团队中本身对项目的测试经验的不足,导致相关知识交流方面会更加困难。
2)经验和对策
从测试的角度,上面谈了中途接手项目中存在的7个主要风险和挑战。虽然存在比较多的困难和不确定因素,测试人员还是可以利用已有的测试经验和知识,采取一些合适的手段和方法来应对这些问题。
下面根据笔者在中途接手测试项目方面的经验,对上面提到的这些问题提供一些参考的信息和建议。这些建议并不是肯定适合的,在进行具体项目的时候,还需要考虑不同企业组织和不同项目的背景。同时,下面的经验并不是对应解决上面的每个风险和挑战,而是从整体上对如何进行中途接手项目的测试提供了一些实践。
(1)合适的测试经理或专家
对于测试工作而言,测试经理应该是整个测试团队的灵魂,对于中途接手项目的测试中体现的尤为明显。中途接手项目中,测试团队的测试经验相对欠缺,因此测试工作的计划、估算、执行以及控制等尤为重要,因此需要更加慎重的选择合适的测试经理来领导这样的项目。合适的测试经理,除了需要具备的一些能力和知识外,例如:熟悉测试过程、具备测试管理能力等,针对中途接手的项目测试,测试经理具备下面几个方面的能力也非常重要:
ü 测试经理应该对项目产品相关的功能、协议等有很深厚的经验和知识,能够从全局上把握软件产品的风险、测试的重点和优先级。在项目测试初期,最好能够在测试团队中能够起到知识方面的引路人;
ü 测试经理应该有良好的沟通能力,包括对内沟通和对外沟通。由于项目是从国外研发中心转移过来,因此需要测试经理有很熟练的英语沟通能力。
对于有的组织和项目而言,测试经理并不是技术方面的专家。那么,在面对中途接手的项目测试中,测试经理需要选择产品相关的测试技术专家(测试领域的专家,例如:数据通信领域的专家)对整个测试过程中的技术进行把关。协助测试经理进行测试活动的计划、估算、协调和控制,同时帮助测试经理进行测试团队的构建和发展,使得测试团队能够胜任中途接手项目的测试。
(2)合适的软件测试过程
选择了合适的测试经理或者测试专家,基本上可以保证测试团队对测试工作的适应性。测试质量中除了人的因素外,另外一个很重要的因素是过程的因素。测试质量的提高和保证,需要一个完善的测试过程来控制和保证。
当然,软件测试过程的选择,需要考虑企业组织的成熟度和测试项目的特性。一般来说,测试过程包含下面几个阶段:测试计划和控制、测试分析和设计、测试实现和执行、测试出口评估和报告以及测试结束活动。
测试过程定义中,需要明确每个测试过程阶段的输入和输出、每个测试阶段的主要测试活动以及每个测试阶段中的质量检查点。明确定义软件测试过程以及相关的测试活动和输出,可以从制度上保证测试工作的顺利进行,并且可以有针对性的进行测试活动的控制。软件开发的产品质量是通过整个开发过程的质量控制来保证的。同样,测试质量也需要测试过程质量来保证。