集成测试

概述

  集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。

  实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很有能暴露出来,影响功能的实现。

 

  ----为什么总是集成不起来?

 

集成测试目的与意义 

  考虑以下问题:

  在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;各个子功能组合起来,能否达到预期要求的父功能;一个模块的功能是否会对另一个模块的功能产生不利的影响;全局数据结构是否有问题 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度?

  要想发现并排除在模块连接中可能发生的上述问题,就需要进行集成测试。

 

集成测试有以下不可替代的特点:

  单元测试具有不彻底性,对于模块间接口信息内容的正确性、相互调用关系是否符合设计无能为力。只能靠集成测试来进行保障;

  同系统测试相比,由于集成测试用例是从程序结构出发的,目的性、针对性更强,测试项发现问题的效率更高,定位问题的效率也较高;

  定位问题较快,发现问题后比较容易定位,所以能够有效地加快进度,减少隐患。

 

集成测试、单元测试与系统测试的差别

 

由以上可以看出,整个软件系统的测试过程是:先对各个软件模块进行单元测试,然后把经过单元测试的各个模块组装起来进行集成测试,最后把经过集成测试的子系统合成软件版本,对照需求规格,在实际环境下,进行系统功能验证。  

 

集成测试的模式与方法

  先来看两个常用的概念:

   驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块。

   桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口。

  1)自顶向下法(Top-down Integration):从主控模块(主程序)开始,沿着软件的控制层次向下移动,逐渐把各个模块结合起来。 组装过程可以采用深度优先策略和宽度优先策略。

              

    优点: 不需要测试驱动程序; 能够在测试阶段的早期实现并验证系统的主要功能; 能在早期发现上层模块中的接口错误。

    缺点: 需要桩程序,要使桩模块能够模拟实际子模块的功能十分困难; 同时涉及复杂算法,真正输入/输出的模块一般在底层,他们是最容易出问题的模块,到测试和集成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。

    一个按广度优先测试进行集成测试的典型例子 

    

  2)自底向上法(Bottom-up Integration) :测试从原子模块(软件结构最底层的模块)开始集成以进行测试。

        

    优点: 不需要桩程序; 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最容易出问题的部分在早期解决; 自底向上增值的方式可以实施多个模块的并行测试,提高测试效率。

    缺点: “程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体”。也就是说,在自底向上集成和测试的过程中,对主要的控制直到最后才接触到。

 

    一个自底向上增量式集成测试的典型例子 

 

  3)混合策略(Modified Top-down Integration) :对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合。

    

 4)大棒集成方法(Big-bang Integration):采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试 。因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。只适合在规模较小的应用系统中使用。

    一个典型的非增量式集成测试方案示意图(大棒集成):

  5)三明治集成方法(Sandwich Integration):三明治集成方法自两头向中间集成。

    采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正集成之前每一个独立的模块没有完全测试过。

  6)改善的三明治集成方法(Modified Sandwich Integration):

  改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底 。

 

集成测试过程

  集成测试过程图:

  

    主要参与角色:   

    ● 项目软件经理(开发负责人):负责审批测试计划;评审测试用例。  

    ● 测试人员:负责完成测试用例设计、集成测试环境搭建、执行集成测试、记录测试、撰写测试报告。  

    ● 开发人员:将欲测试的内容集成到测试环境。负责及时修复测试出的问题。

    集成测试人员的工作过程表----

           

 

集成测试完成的标志  

  判断集成测试过程完成与否,可按以下几个方面检查:

    ★成功地执行了测试计划中规定的所有集成测试;

    ★修正了所发现的错误;

    ★测试结果通过了专门小组的评审。

  集成测试应由专门的测试小组来进行,测试小组由有经验的系统设计人员和程序员组成。整个测试活动要在评审人员出席的情况下进行。

posted @ 2014-08-21 18:39  pansfy  阅读(1742)  评论(0编辑  收藏  举报