资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,66,章 集成测试,5.1,集成测试概述,5.2,集成测试策略,5.3,集成测试用例设计,5.4,集成测试过程,5.5,面向对象的集成测试,5.1,集成测试概述,5.1.1,集成测试的概念,集成(,Integration,)是指把多个单元组合起来形成更大的单元。,集成测试(,Integration Testing,)是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。,集成测试是根据实际情况对程序模块采用适当的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确校验的测试工作。,集成测试是针对程序整体结构的测试,。,5.1,集成测试概述,集成测试主要关注下列问题:,(,1,)模块间的数据传递是否正确?,(,2,)一个模块的功能是否会对另一个模块的功能产生错误的影响?,(,3,)全局数据结构是否有问题,会不会被异常修改?,(,4,)块组合起来的功能能否满足要求?,(,5,)集成后,各个模块的累积误差是否会扩大,是否达到不可接受的程度?,5.1,集成测试概述,软件开发过程与软件测试过程对应关系:,5.1,集成测试概述,单元测试对应结构图中的叶子结点,即单元结点;,系统测试对应整个产品;,其他各个层次的测试都属于集成测试的范畴。,5.1,集成测试概述,5.1.2,集成测试与系统测试的区别,集成测试时介于单元测试与系统测试之间的过度阶段;但有时易于混淆集成测试和系统测试。,一般从以下,6,方面区别它们:,(,1,)测试对象:,(,2,)测试时间:,(,3,)测试方法:,(,4,)测试内容:,(,5,)测试目的:,(,6,)测试角度:,5.1,集成测试概述,5.1.3,集成测试与开发的关系,集成测试是和软件开发过程中的概要设计阶段相对应的,而在软件概要设计中关于整个系统的体系结构就是集成测试用例输入的基础。,5.1.4,集成测试的层次与原则,1,集成测试的层次,软件的开发过程是一个从需求到概要设计、详细设计以及编码的逐步细化的过程,那么单元测试到集成测试再到系统测试就是一个逆向求证的过程。,集成测试内部对于传统软件和面向对象的应用系统有两种层次的划分。,对于传统软件来讲,可以把集成测试划分为三个层次:,模块内集成测试;,子系统内集成测试;,子系统间集成测试。,对于面向对象的应用系统来说,可以把集成测试分为两个阶段:,类内集成测试;,类间集成测试。,5.1.4,集成测试的层次与原则,2,集成测试的原则,(,1,)所有公共接口必须被测试到;,(,2,)关键模块必须进行充分测试;,(,3,)集成测试应当按一定层次进行;,(,4,)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;,(,5,)集成测试应当尽早开始,并以概要设计为基础;,(,6,)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通;,(,7,)当测试计划中的结束标准满足时,集成测试才能结束;,(,8,)当接口发生修改时,涉及到的相关接口都必须进行回归测试;,(,9,)集成测试应根据集成测试计划和方案进行,不能随意测试;,(,10,)项目管理者应保证测试用例经过审核;,(,11,)测试执行结果应当如实的记录。,5.2,集成测试策略,模块的集成方式有两种:,(,1,)非渐增式集成,非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。,(,2,)渐增式集成,渐增式集成与,“,一步到位,”,的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此。目前在进行集成测试时普遍采用渐增式集成方法。,集成测试需要的辅助模块:,模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相关联的其它模块。这些辅助模块可分为两种:,(1),驱动模块(,driver,):相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。,(2),桩模块(,stub,):用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。,被测模块、与它相关的驱动模块以及桩模块共同,构成了一个,“,测试环境,”,,,5.2,集成测试策略,5.2.1,非渐增式集成(),非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。,【,例,5.1】,对如图,5.3,所示的程序,采用非渐增式集成方法进行集成测试。,A,B,C,D,E,F,G,图,5.3,程序结构图,5.2,集成测试策略,测试,A,测试,B,测试,C,测试,D,测试,E,测试,F,测试,G,测试,(,A,、,B,、,C,D,、,E,、,F,、,G,),图,5.4,非渐增式集成,A,B,C,D,E,F,G,图,5.3,程序结构图,一次性集成测试方式的,示例,一次性集成测试方式,先分别测试每个模块,再把所有模块按设计要求放在一起结合成所需要实现的程序。,图,2-7,是按照一次性集成测试方式的实例。图,2-7,(,a,)所示表示的是整个系统结构,共包含,6,个模块。具体测试过程如下:,如图,2-7,(,b,)所示,为模块,B,配备驱动模块,D1,,来模拟模块,A,对,B,的调用。为模块,B,配备桩模块,S1,,来模拟模块,C,被,B,调用。对模块,B,进行单元测试;,如图,2-7,(,d,)所示,为模块,D,配备驱动模块,D3,以及桩模块,S2,。对模块,D,进行单元测试;,如图,2-7,(,c,)、图,2-7,(,e,)、图,2-7,(,f,)所示,为模块,C,、,E,、,F,分别配备驱动模块,D2,、,D4,、,D5,。对模块,C,、,E,、,F,分别进行单元测试;,如图,2-7,(,g,)表示,为主模块,A,配备三个桩模块,S3,、,S4,、,S5,。对模块,A,进行单元测试;,在将模块,A,、,B,、,C,、,D,、,E,分别进行了单元测试之后,再一次性进行集成测试;,测试结束。,图,2-7,一次性集成测试方式,5.2,集成测试策略,5.2.2,渐增式集成,渐增式集成与,“,一步到位,”,的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此。目前在进行集成测试时普遍采用渐增式集成方法,当使用渐增方式把模块结合到程序中去时:,自顶向下,自底向上,两种集成策略。,5.2,集成测试策略,1,自顶向下集成,自顶向下集成方法是一个日益为人们广泛采用的测试和组装软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去,或者使用深度优先的策略,或者使用宽度优先的策略。,【,例,5.2】,对如图,5.3,所示的程序,采用自顶向下集成方法,按照深度优先方式进行集成测试。,5.2,集成测试策略,A,S,B,S,C,S,D,(,a,)测试,A,A,B,S,C,S,D,S,E,S,F,(,b,)测试,B,A,B,C,S,D,E,F,S,G,(,e,)测试,C,A,B,C,S,D,E,F,G,(,f,)测试,G,A,B,C,D,E,F,G,(,g,)测试,D,A,B,S,C,S,D,E,S,F,(,c,)测试,E,A,B,S,C,S,D,E,F,(,d,)测试,F,图,5.5,自顶向下集成,A,B,C,D,E,F,G,图,5.3,程序结构图,5.2,集成测试策略,2,自底向上集成,自底向上测试从,“,原子,”,模块(即在软件结构最底层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要桩模块。,【,例,5.3】,对如图,5.3,所示的程序,采用自底向上集成方法,按照深度优先方式进行集成测试。,5.2,集成测试策略,测试,E,测试,F,测试,G,测试,D,测试,(,A,、,B,、,C,D,、,E,、,F,、,G,),图,5.6,自底向上集成,测试,(,B,、,E,、,F,),测试,(,C,、,G,),A,B,C,D,E,F,G,图,5.3,程序结构图,5.2,集成测试策略,5.2.3,三明治集成,三明治集成是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。这种方法桩模块和驱动模块的开发工作都比较小,不过代价是在一定程度上增加了定位缺陷的难度。,【,例,5.4】,对如图,5.3,所示的程序,以,B,模块所在层为界,采用三明治集成方法进行集成测试。,5.2,集成测试策略,测试,E,测试,F,测试,G,测试,A,测试,(,A,、,B,、,C,D,、,E,、,F,、,G,),图,5.7,三明治集成,测试,(,B,、,E,、,F,),测试,(,C,、,G,),A,B,C,D,E,F,G,图,5.3,程序结构图,5.3,集成测试用例设计,1,为系统运行设计用例,可使用的主要测试分析技术有:,(,1,)等价类划分。,(,2,)边界值分析。,(,3,)基于决策表的测试。,5.3,集成测试用例设计,2,为正向测试设计用例,可是用如下几种主要测试分析技术:,(,1,)输入域测试。,(,2,)输出域测试。,(,3,)等价类划分。,(,4,)状态转换测试。,(,5,)规范导出法。,5.3,集成测试用例设计,3,为逆向测试设计用例,可使用的主要测试分析技术有:,(,1,)错误猜测法。,(,2,)基于风险的测试。,(,3,)基于故障的测试。,(,4,)边界值分析。,(,5,)特殊值测试。,(,6,)状态转换测试,。,5.3,集成测试用例设计,4,为满足特殊需求设计用例,可使用的主要测试分析技术为规范导出法。,5,为高覆盖设计用例,可使用的主要测试分析技术有:,(,1,)功能覆盖分析。,(,2,)接口覆盖分析。,5.4,集成测试过程,一个测试从开发到执行遵循一个过程,不同的组织对这个过程的定义会有所不同。根据集成测试不同阶段的任务,可以把集成测试划分为,5,个阶段:,计划阶段、设计阶段、实施阶段、执行阶段、评估阶段,。,制定集成测试计划,设计集成测试,实施集成测试,执行集成测试,评估集成测试,图,5.8,集成测试过程,5.4,集成测试过程,1,计划阶段,(,1,)确定被测试对象和测试范围。,(,2,)评估集成测试被测试对象的数量及难度,即工作量。,(,3,)确定角色分工和划分工作任务。,(,4,)表识出测试各个阶段的时间、任务、约束条件。,(,5,)考虑一定的风险分析机应急计划。,(,6,)考虑和准备集成测试需要的测试工具、测试仪器、环境等资源。,(,7,)考虑外部技术支援的力度和深度,以及相关培训安排;定义测试完成标准。,5.4,集成测试过程,2,设计阶段,(,1,)被测对象结构分析。,(,2,)集成测试模块分析。,(,3,)集成测试接口分析。,(,4,)集成测试策略分析。,(,5,)集成测试工具分析。,(,6,)集成测试环境分析。,(,7,)集成测试工作量估计和安排。,5.4,集成测试过程,3,实施阶段,(,1,)集成测试用例设计。,(,2,)集成测试规程设计。,(,3,)集成测试代码设计。,(,4,)集成测试脚本开发。,(,5,)集成测试工具开发或选择。,5.4,集成测试过程,4,执行阶段,测试人员在单元测试完成以后就可以执行集成测试。当然,须按照相应的测试规程,借助集成测试工具,并把需求规格说明书、概要设计、集成测试计划、集成测试设计、集成测试用例、集成测试规程、集成测试代码、集成测试脚本作为测试执行的依据来执行集成测试用例。测试执行的前提条件就是单元测试已经通过评审。当测试执行结束后,测试人员要记录下每个测试用例之行后的结果,填写集成测试报告,最后提交给相关人员评审。,5.4,集成测试过程,5,评估阶段
展开阅读全文