您好,欢迎访问三七文档
第5章集成测试5.1集成测试概述5.1.1集成测试的概念集成(Integration)是指把多个单元组合起来形成更大的单元。集成测试(IntegrationTesting)是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。软件测试过程单元测试单元测试单元测试单元测试…模块模块模块模块集成测试确认测试系统测试验收测试设计信息已集成的软件已测模块已确认的软件已检验的软件软件需求其它系统元素用户需求规范图1.1软件测试过程单元测试单元测试单元测试单元测试…模块模块模块模块模块模块模块模块集成测试确认测试系统测试验收测试设计信息已集成的软件已测模块已确认的软件已检验的软件软件需求其它系统元素用户需求规范图1.1软件测试过程模块中有无故障发现与接口有关的模块之间的问题增量式集成测试法是否满足软件需求结论性评价证明系统性能独立的测试机构向用户表明系统可以像用户预的那样工作5.1集成测试概述集成测试主要关注下列问题:(1)模块间的数据传递是否正确?(2)一个模块的功能是否会对另一个模块的功能产生错误的影响?(3)全局数据结构是否有问题,会不会被异常修改?(4)块组合起来的功能能否满足要求?(5)集成后,各个模块的累积误差是否会扩大,是否达到不可接受的程度?5.1集成测试概述需求分析概要设计详细设计编码单元测试集成测试系统测试需求分析概要设计详细设计编码单元测试集成测试系统测试图5.1软件开发的V模型5.1集成测试概述2/8原则模块划分遵循的几个原则:1)本次测试希望测试哪个模块。2)把与该模块最紧密的模块集成在一起。3)考虑划分后的外围模块,分析外围模块和被集成模块之间的信息流是否容易模拟和控制。5.1集成测试概述5.1.2集成测试与系统测试的区别(1)测试对象。(2)测试时间。(3)测试方法。(4)测试内容。(5)测试目的。(6)测试角度。5.1集成测试概述5.1.3集成测试与开发的关系集成测试是和软件开发过程中的概要设计阶段相对应的,而在软件概要设计中关于整个系统的体系结构就是集成测试用例输入的基础。5.1集成测试概述5.1.4集成测试的层次与原则1.集成测试的层次对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:(1)模块间集成测试(2)子系统内集成测试(3)子系统间集成测试对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次:(1)类内集成测试(2)类间集成测试5.1集成测试概述5.1.4集成测试的层次与原则2.集成测试的原则(1)所有公共接口必须被测试到;(2)关键模块必须进行充分测试;(3)集成测试应当按一定层次进行;(4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;(5)集成测试应当尽早开始,并以概要设计为基础;(6)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通;(7)当测试计划中的结束标准满足时,集成测试才能结束;(8)当接口发生修改时,涉及到的相关接口都必须进行回归测试;(9)集成测试应根据集成测试计划和方案进行,不能随意测试;(10)项目管理者应保证测试用例经过审核;(11)测试执行结果应当如实的记录。5.2集成测试策略驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口5.2集成测试策略5.2.1非渐增式集成非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。【例5.1】对如图5.3所示的程序,采用非渐增式集成方法进行集成测试。ABCDEFG图5.3程序结构图5.2集成测试策略测试A测试B测试C测试D测试E测试F测试G测试(A、B、CD、E、F、G)图5.4非渐增式集成5.2集成测试策略5.2.2渐增式集成渐增式集成与“一步到位”的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此。目前在进行集成测试时普遍采用渐增式集成方法。当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。5.2集成测试策略1.自顶向下集成自顶向下集成方法是一个日益为人们广泛采用的测试和组装软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去,或者使用深度优先的策略,或者使用宽度优先的策略。【例5.2】对如图5.3所示的程序,采用自顶向下集成方法,按照深度优先方式进行集成测试。5.2集成测试策略用以下4个步骤实现自顶向下的结合策略:1.对主控模块进行测试,测试时用桩模块代替所有直接附属于主控模块的模块;2.根据选定的结合策略,每次用一个实际模块代换一个桩模块(新结合进来的模块往往又需要新的桩模块)3.在结合进一个模块的同时进行测试4.为了保证加入模块没有引进新的错误,可能需要进行回归测试5.2集成测试策略ASBSCSD(a)测试AABSCSDSESF(b)测试BABCSDEFSG(e)测试CABCSDEFG(f)测试GABCDEFG(g)测试DABSCSDESF(c)测试EABSCSDEF(d)测试F图5.5自顶向下集成5.2集成测试策略优点:在测试过程早期,对主要的控制点或判决点进行检验。在分解得很好的软件结构中,判决需要在结构层次的较高层确定。如果主要控制点有问题,早点认识到这个问题就变得很重要。如果选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行组装和测试提供保证。此外,功能可行性较早得到证实,还能够给开发者和用户带来成功的信心。缺点:在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分5.2集成测试策略2.自底向上集成自底向上测试从“原子”模块(即在软件结构最底层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要桩模块。【例5.3】对如图5.3所示的程序,采用自底向上集成方法,按照深度优先方式进行集成测试。用以下4个步骤实现自底向上的结合策略:1.把低层模块组合成实现某个特定软件子功能的族;2.写一个驱动程序(用于测试的控制程序),以协调数据的输入和输出;3.对由模块组成的子功能族进行测试;4.去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。5.2集成测试策略测试E测试F测试G测试D测试(A、B、CD、E、F、G)图5.6自底向上集成测试(B、E、F)测试(C、G)5.2集成测试策略优点:由于驱动模块模拟了所有调用参数,测试模块返回结果不影响驱动模块,生成测试数据也没有困难。如果关键模块是在结构图的底部,自底向上的测试是有优越性的。另外自底向上的组装测试不必开发桩模块。缺点:当最后一个模块尚未测试时,还没有呈现出被测软件系统的雏形。5.2集成测试策略5.2.3三明治集成三明治集成是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。这种方法桩模块和驱动模块的开发工作都比较小,不过代价是在一定程度上增加了定位缺陷的难度。【例5.4】对如图5.3所示的程序,以B模块所在层为界,采用三明治集成方法进行集成测试。5.2集成测试策略测试E测试F测试G测试A测试(A、B、CD、E、F、G)图5.7三明治集成测试(B、E、F)测试(C、G)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集成测试过程思考题:1.在集成测试过程中,为什么要设计桩模块和驱动模块?2.何为正向测试?何为逆向测试?3.从覆盖的角度来设计用例时,集成测试和单元测试有何区别?4.对右图所示程序分别进行自顶向下、自底向上和三明治集成测试,给出测试过程。ABCDEFG
本文标题:第5章 集成测试
链接地址:https://www.777doc.com/doc-3193749 .html