《软件测试技术韩永国第七章集成测试》由会员分享,可在线阅读,更多相关《软件测试技术韩永国第七章集成测试(46页珍藏版)》请在金锄头文库上搜索。
1、Software Testing集成测试软件测试课程组西南科技大学计算机学院西南科技大学计算机学院Software Testingw测试过程单元测试集成测试系统测试为什么需要集成测试? 问题引入Software Testing为什么总是集成不起来?Software Testing7.1集成测试概述w集成测试(Integration test)也叫组装测试或联合测试是在单元测试的基础上,将所有模块按照设计要求集成为系统或子系统,并进行测试。验证程序和概要设计说明的一致性Software Testing7.2 基于功能分解的集成w实施策略非渐增式集成渐增式集成Software Testing非渐增
2、式集成w定义又叫大棒集成(Big-bang Integration)把所有通过了单元测试的模块按设计要求,一次全部组装起来,然后进行整体测试。Software Testingw目的尽可能缩短测试时间,使用最少的测试用例验证系统。w特点“急于求成”Software Testingw具体方法例:假设要对某个系统的部分功能进行测试,其功能分解如图所示:A AB BD DC CSoftware Testing二.渐增式集成方式w定义从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题。w集成方式自顶向下集成自底向上集成三明治集成Software Testing1.自顶向下集成w定
3、义自顶向下集成(Top-down Integration)按照系统层次结构图,以主程序模块为中心,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。Software Testingw自顶向下集成的两种类型自顶向下集成的两种类型广度优先深度优先ABCDHGJEFIKLMNA、B、E、J、K、C、F、L、G、D、H、M、N、I深度优先:深度优先:A、B、C、D、E、F、G、H、I、J、K、L、M、N广度优先:广度优先:Software Testingw自顶向下集成步骤:(1)以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代(2)依据所选的集成
4、策略,每次只替代一个桩模块(3)每集成一个模块立即测试一遍Software Testing自顶向下集成步骤(续)(4)只有每组测试完成后,才着手替换下一个桩模块(5)为避免引入新错误,须不断地进行回归测试从第(2)步开始,循环执行上述步骤,直至整个程序结构构造完毕。Software Testing举例:ADBECF深度优先深度优先: :A、B、E、C、D、F广度优先广度优先: :A、B、C、D、E、F自自顶顶向向下下集集成成深度优先A加入加入ES2S2BS3S3EA测试测试 AS2S2S1S1S S3 3A加入加入BS2S2BS3S3S4S4加入加入FCBDEAFA加入加入CCBS3S3E加入
5、加入DCBDEAS5S5Software Testing2.自底向上集成w定义自底向上集成(Bottom-up Integration) 从系统层次结构图的最底层模块开始进行组装和集成测试的方式。 Software Testingw自底向上集成步骤 从最底层的模块开始组装,组合成一个能够完成某个子功能的构件; 编制驱动程序,协调测试用例的输入与输出; 测试集成后的构件; 使用实际模块代替驱动程序,按程序结构向上组装测试后的构件; 重复上面的第二步,直到系统的最顶层模块被加入到系统中为止。Software Testing举例举例: :A AC CB BD DF FE EE Ed d1 1C Cd
6、 d3 3F Fd d4 4E EB Bd d2 2D Dd d5 5F FA AC CB BD DF FE ESoftware Testingw优点可以尽早的验证底层模块的行为。 提高了测试效率;对实际被测模块的可测试性要求较少;减少了桩模块的工作量; 容易对错误进行定位。Software Testingw缺点直到最后一个模块加进去之后才能看到整个系统的框架;只有到测试过程的后期才能发现时序问题和资源竞争问题;驱动模块的设计工作量大;不能及时发现高层模块设计上的错误。Software Testingw适用范围 底层模块接口比较稳定的产品;高层模块接口变更比较频繁的产品;底层模块开发和单元测试
7、工作完成较早的产品。Software Testing3. 三明治集成w定义三明治集成方法(Sandwich Integration)三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法的优点。Software Testingw方法一般对软件结构的上层使用自顶向下结合的方法;对下层使用自底向上结合的方法;Software Testing举例w用三明治集成方式如何测试?C CB BD DE EF FA ASoftware Testing三明治集成步骤w首先,确定以哪一层为界来决定使用三明治集成策略。我们确定以B模块为界;w其次,对模块B及其所在层下面的各层使用自底向上的集成策略
8、;w再次,对模块B所在层上面的层次使用自顶向下的集成策略; w然后,把模块B所在层各模块同相应的下层集成;w最后,对系统进行整体测试。Software TestingSoftware Testingw优点除了具有自顶向下和自底向上两种集成策略的优点之外,运用一定的技巧,能够减少了桩模块和驱动模块的开发。 w缺点在被集成之前,中间层不能尽早得到充分的测试。Software Testing7.3 基于调用图的集成w基于调用图的集成有两种:成对集成相邻集成Software Testing1、成对集成w成对集成的思想就是免除桩/驱动器开发工作,使用实际代码来代替桩/驱动器。w成对集成的方法就是对应调用
9、图的每一个边建立并执行一个集成测试会话。Software Testing2. 相邻集成w相邻节点有向图中,节点邻居包括所有直接前驱节点和直接后继节点 w相邻集成可大大降低集成测试的会话数量,并可避免桩和驱动器的开发相邻集成本质上是三明治集成相邻集成具有“中爆炸”集成的缺陷:隔离困难Software Testing基于调用图的集成的优缺点w优点基于调用图的集成偏离了纯结构集成,转向行为基础。免除了桩/驱动器开发工作量。w缺点缺陷隔离问题Software Testing7.4 基于路径的集成w概念源节点(P197)汇节点模块执行路径消息Software TestingwMM-路径MM-路径是穿插出
10、现模块执行路径和消息的序列对于传统软件来说,MM-路径永远是从主程序开始,在主程序中结束。注意:MM-路径不是可执行路径,并且要跨越单元边界Software Testing例:13-8 跨三个单元的跨三个单元的MM-路径路径A124356B1234C12345A124356B1234C12345模块执行路径:MEP(A,1)=MEP(A,2)=MEP(A,3)=MEP(B,1)=MEP(B,2)=MEP(C,1)=MEP(C,2)=1,3,4,5Software TestingwMM-路径图给定一组单元,其MM-路径图是一种有向图,其中节点表示模块执行路径,边表示消息和单元之间的返回。注意:M
11、M-路径图是按照一组单元定义的。Software Testing例:从图从图13-8中导出的中导出的MM-路径图路径图MEP(A,2)MEP(B,1)MEP(C,1)MEP(B,2)MEP(C,2)MEP(A,3)MEP(A,1)实线箭头表示消息,实线箭头表示消息,虚线箭头表示返回。虚线箭头表示返回。Software TestingwMM-路径的深度MM-路径末端点有两点可观察的行为准则,即消息静止和数据静止消息静止当到达不发送消息的结点时,消息静止发生。例如图13-8中的模块C数据静止当处理不立即使用的存储数据的创建序列结束时,数据静止发生。Software TestingwMM-路径图的特
12、点优点功能性和结构性的一种混合表达上:功能性标识方式上:结构性集成测试和系统测试无逢连接缺点标识MM-路径的工作量很大Software TestingMM-路径复杂度路径复杂度wV(G)= e n + 2pwV(G)= e n + 2 (对于结构化过程代码,p=1)Software TestingMM-路径有向图路径有向图ABCMainValidatePINGetPINforPANScreenDriverGetPINKeySensorwV(G1)= 4-3+2 =3wV(G2) =24-6+2 =20Software Testingw优点:MM-路径是功能性测试和结构性测试的一种混合。基于路径的集成测试既适用于采用传统瀑布过程开发的软件,也适用于采用基于合成可选的生命周期模型开发的软件。w缺点:需要更多的工作量标识MM-路径。基于路径集成的优缺点Software Testing7.5 案例w拼图类游戏 Software Testing小 结w集成测试的几种方法基于分解的集成基于调用图的集成基于路径的集成Software Testingw作业教材196页第1,2,3,4, 题