1、集成测试n测试过程单元测试集成测试系统测试为什么需要集成测试?问题引入问题引入为什么总是集成不起来?主要内容主要内容n集成测试概述n基于功能分解的集成n基于调用图的集成n基于路径的集成n案例7.1 集成测试概述集成测试概述n集成测试集成测试(Integration test)也叫组装测试或联合测试;是在单元测试的基础上,将所有模块按照设计要求集成为系统或子系统,在单元组装过程中,进行测试,发现并清除在单元发现并清除在单元连接过程中出现的问题连接过程中出现的问题,确保集成到一起的各单元能共同完成预期的功能,并达到要求的性能。集成测试与单元测试的区别:集成测试与单元测试的区别:n测试对象有所区别;
2、n集成测试关注的是模块间的接口,接口之间的数据传递关系,单元组合后是否实现预计的功能。n集成测试组装的对象比单元测试的对象级别要高。集成测试与系统测试的区别:集成测试与系统测试的区别:n测试对象系统测试对象是整个系统以及与系统交互的硬件和软件平台。对系统做功能性的和非功能性验证。集成测试的对象是模块间的接口,其目的是要找出在模块接口上面的问题。n测试依据系统测试的依据来自用户的需求规格说明书和行业的已成文的或事实上的标准。集成测试的依据来自系统的高层设计(架构设计或概要设计)。集成测试目的集成测试目的n检查各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;n一个模块的功能是否会对另一个模块
3、的功能产生不利的影响;n各个子功能组合起来,能否达到预期要求的父功能;n全局数据结构是否有问题;n单个模块的误差累积起来,是否会放大?n集成测试检查内容:集成测试检查内容:功能正确性验证;接口测试;全局数据结构;计算精度等。n集成测试策略:集成测试策略:基于功能分解的集成l非渐增式集成l渐增式集成:自顶向下、自底向上、三明治集成基于调用图的集成基于路径的集成7.2 基于功能分解的集成基于功能分解的集成n实施策略实施策略非渐增式集成渐增式集成非渐增式集成非渐增式集成n定义定义又叫大棒集成(Big-bang Integration)把所有通过了单元测试的模块按设计要求,一次全部组装起来,然后进行整
4、体测试。n例例:假设要对某个系统的部分功能进行测试,其功能分解如图所示。A AB BE ED DC Cn目的目的尽可能缩短测试时间,使用最少的测试用例验证系统。n优点优点需要的测试用例少;测试方法简单易行;n缺点缺点难以保证对各个模块之间的接口进行充分测试;对全局数据结构的测试不够彻底;难以进行错误定位和修改;修改错误之后,需要集成回归测试;n适用范围适用范围功能少,模块数量不多;产品质量和单元测试质量都相当高的情况;二二.渐增式集成方式渐增式集成方式n定义定义从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题。n集成方式集成方式自顶向下集成自底向上集成三明治集成1.自
5、顶向下集成自顶向下集成n定义定义自顶向下集成(Top-down Integration)按照系统层次结构图,以主程序模块为中心,自上而下按照深度优先深度优先或者广度优先广度优先策略,对各个模块一边组装一边进行测试。n深度优先深度优先A、B、E、J、K、C、F、L、G、D、H、M、N、I深度优先集成顺序:深度优先集成顺序:ABCDHGJEFIKLMNA、B、C、D、E、F、G、H、I、J、K、L、M、N广度优先集成顺序:广度优先集成顺序:ABCDHGJEFIKLMNn广度优先广度优先n自顶向下集成步骤自顶向下集成步骤:(1)以主模块为所测模块兼驱动模块,所有直属主模块的下属模块全部用桩模块对主模
6、块进行测试;(2)依据所选的集成策略(深度优先或者广度优先),用实际模块代替相应的桩模块,每次只替代一个桩模块;(3)每集成一个模块立即测试一遍;n 自顶向下集成步骤(续)自顶向下集成步骤(续)(4)只有每组测试完成后,才着手替换下一个桩模块;(5)为避免引入新错误,须不断地进行回归测试;从第(2)步开始,循环执行上述步骤,直至整个程序结构构造完毕。例:例:ADBECF深度优先深度优先:A、B、E、C、D、F广度优先广度优先:A、B、C、D、E、F自顶向下集成自顶向下集成深度优先深度优先A加入加入E ES2S2BS3S3EA测试测试 A AS2S2S1S1S3S3A加入加入B BS2S2BS3
7、S3S4S4加入加入F FCBDEAFA加入加入C CCBS3S3E加入加入D DCBDEAS5S5n自顶向下集成的优点自顶向下集成的优点可以较早的验证主要的控制和判断点;选择深度优先模式,可以首先实现和验证一个完整的软件功能,能够较早的验证功能可行性,带来信心;只需一个驱动,减少了测试驱动程序开发费用;支持故障隔离。n自顶向下集成的缺点自顶向下集成的缺点桩模块的开发和维护费用大;底层模块验证被推迟;底层模块的需求变更可能会影响到全局组件,需要修改整个系统的多个上层模块;可能会导致底层模块,特别是被重用的模块测试不够充分。要求控制模块具有比较高的可测试性;n自顶向下集成适用范围自顶向下集成适用
8、范围控制结构比较清晰和稳定的应用程序;高层的模块接口变化比较小;底层模块接口未定义或经常可能被修改;产品中的控制模块技术风险较大,需要提前验证;需要尽早看到产品的系统功能行为;2.自底向上集成自底向上集成n定义定义自底向上集成(Bottom-up Integration)从依赖性最小的底层模块开始,按照层次结构图,逐层向上集成,验证系统。最常用的集成策略最常用的集成策略,其他方法都或多或少应用此种方法。自底向上集成步骤自底向上集成步骤n由驱动模块控制最底层模块进行测试;n用实际模块代替驱动模块,与它已测试的直属子模块集成为子系统;n为子系统配备驱动模块,进行新的测试。n判断是否已集成到达主模块
9、,是否结束测试,否则执行2;n为避免引入新错误,还需要不断地进行回归测试。举例举例:A AC CB BD DF FE EE Ed1d1C Cd3d3F Fd4d4E EB Bd2d2D Dd5d5F FA AC CB BD DF FE En自底向上集成的优点自底向上集成的优点可以尽早的验证底层模块的行为;底层模块可以并行集成,提高了测试效率;减少了桩模块的工作量;容易对错误进行定位;n自底向上集成的缺点自底向上集成的缺点驱动模块的设计工作量大;直到最后一个模块加进去之后才能看到整个系统的框架;只有到测试过程的后期才能发现时序问题和资源竞争问题;不能及时发现高层模块设计上的错误。n自底向上集成适
10、用范围自底向上集成适用范围 底层模块接口比较稳定的产品;高层模块接口变更比较频繁的产品;底层模块开发和单元测试工作完成较早的产品。3.三明治集成三明治集成n定义定义三明治集成方法(Sandwich Integration)三明治集成是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。n方法方法一般对软件结构的上层上层使用自顶向下自顶向下结合的方法;对下层下层使用自底向上自底向上结合的方法;举例举例 用三明治集成方式如何测试?ADBECFn优点优点具有自顶向下和自底向上两种集成策略的优点;运用一定的技巧,能够减少了桩模块和驱动模块的开发。n缺点缺点在被集成之前,中间层不能尽早得
11、到充分的测试。n适用范围适用于大部分软件开发项目;练习练习ABCEFGDHJIKL画出集成测试的步骤:自顶向下和自底向上。画出集成测试的步骤:自顶向下和自底向上。7.3 基于调用图的集成基于调用图的集成n调用图调用图是一种有向图,反映程序中各模块之间的调用关系。n基于调用图的集成成对集成成对集成相邻集成相邻集成1.成对集成成对集成n成对集成的思想就是在调用图的基础上,尽可能免除桩/驱动器开发工作而引入的。n成对集成的方法就是对应调用图的每一调用图的每一条边条边建立并执行一个集成测试会话。例:例:2.相邻集成相邻集成n相邻节点相邻节点有向图中,节点邻居包括所有直接前驱节点直接前驱节点和直直接后继
12、节点;接后继节点;n相邻集成相邻集成可大大降低集成测试的会话数量,并可避免桩和驱动器的开发;相邻集成具有“中爆炸”集成的缺陷:隔离困难;n调用图中邻居数量:内部节点=节点-(源节点+汇节点)邻居=内部节点+源节点邻居=节点-汇节点例:例:基于调用图的集成的优缺点基于调用图的集成的优缺点n优点优点接口关系测试充分;测试集中于衔接的功能性;免除了桩/驱动器开发工作量。n缺点缺点调用或协作的关系可能是错综复杂的;要充分测试底层模块较困难缺陷隔离问题困难。7.4 基于路径的集成基于路径的集成n源节点源节点指程序执行开始或重新开始处的语句片断。n汇节点汇节点程序执行结束处的语句片断。这里转移控制到其它单
13、元的节点也是汇节点。n模块执行路径模块执行路径以源节点开始、以汇节点结束的一系列语句,中间没有插入汇节点。A124356B1234C12345n消息消息消息是一种程序设计语言机制,通过这种机制可以把控制从一个单元转移到另一个单元。nMM-路径路径MM-路径是穿插出现模块执行路径模块执行路径和消息消息的序列;对于传统软件来说,MM-路径永远是从主程序开始,在主程序中结束;注意:MM-路径不是可执行路径,并且要跨越单元边界。nMM-路径图路径图给定一组单元,其MM-路径图是一种有向图,其中节点表示模块执行路径,边表示消息和单元之间的返回。注意:MM-路径图是按照一组单元定义的。例:例:图图1模块中
14、的调用路径模块中的调用路径模块执行路径:模块执行路径:MEP(A,1)=MEP(A,2)=MEP(A,3)=MEP(B,1)=MEP(B,2)=MEP(C,1)=MEP(C,2)=A124356B1234C12345例:例:从图从图1中导出的中导出的MM-路径图路径图MEP(A,2)MEP(B,1)MEP(C,1)MEP(B,2)MEP(C,2)MEP(A,3)MEP(A,1)实线箭头表示消息,实线箭头表示消息,虚线箭头表示返回。虚线箭头表示返回。nMM-路径的深度路径的深度MM-路径末端点有两点可观察的行为准则,即消息静止和数据静止。消息静止n当到达不发送消息的结点时,消息静止发生。例如图1
15、中的模块C。数据静止n创建不立即使用的存储数据序列。nMM-路径复杂度路径复杂度V(G)=e n+2p对于结构化过程代码,p=1。n基于基于MM-路径的测试路径的测试设计测试用例覆盖MM-路径。基于路径集成的特点基于路径集成的特点n功能性和结构性的一种混合表达上:功能性;标识方式上:结构性;n集成测试和系统测试无逢连接;n缺点:标识MM-路径的工作量很大;7.5 其它集成测试方法其它集成测试方法n1.高频集成n2.基于功能的集成n3.基于进度的集成n4.基于风险的集成n5.客户/服务器的集成n6.分布式集成n7.面向对象集成见教材见教材160页页集成测试策略的选取集成测试策略的选取n一次性集成
16、多用于系统规模较小的测试项目中;n自顶向下集成(较少使用)、自底向上集成(较常使用)、混合式集成则多用于采用结构化方法开发的软件项目中;n基于使用的集成方式用于面向对象系统中;n高频集成方式广泛地被使用于许多复杂软件项目的集成测试过程中;n应结合软件项目的具体特点和开发环境合理地选择集成测试策略,以充分发挥各方式的优点。7.6 集成测试的过程集成测试的过程 n集成测试计划n集成测试设计n集成测试实现n集成测试执行n集成测试评估1.1.制定集成测试计划制定集成测试计划n集成测试计划的内容有:确定集成测试对象和测试范围;确定集成测试阶段性时间进度;确定测试角色和分工;考虑外部技术支援的力度和深度,
17、以及相关培训安排;初步考虑测试环境和所需资源;集成测试活动风险分析和应对;定义测试完成标准;2.2.集成测试分析和设计集成测试分析和设计n具体工作内容:确定测试需求确定集成策略评估测试风险确定测试优先级确定测试方法集成代码设计集成测试用例设计集成测试工具和资源613.3.集成测试实现集成测试实现 n该阶段主要工作是依据测试大纲和详细设计分析开发测试用例、测试脚本及相应驱动程序、桩程序,如果有必要,则要开发测试工具。624.4.集成测试执行集成测试执行n搭建测试环境n执行测试用例n测试异常记录n编写测试报告635.5.集成测试评估集成测试评估n集成测试数据分析缺陷趋势;缺陷密度;缺陷分布;工作量分布。n设计与代码质量评估规模复杂度、结构复杂度、设计复杂度7.7 案例案例n拼图类游戏 小小 结结n集成测试的几种方法基于分解的集成基于调用图的集成基于路径的集成课后练习课后练习n作业教材179页第3,4,题n课外练习编程实现简单的ATM系统,并进行集成测试。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。