《《集成测试过程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《集成测试过程》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。
1、第6章 集成测试,本章大纲,本章讨论与集成测试相关的内容,包括:集成测试过程集成策略大爆炸自顶而下自底而上三明治集成基于MM-路径的集成集成测试计划集成测试设计集成测试执行,定义集成经过单元测试的各组件评估它们之间交互的测试过程集成测试(Integration Testing)在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。,什么是集成测试,目的在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的
2、父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,以至达到不能接受的程度。,集成测试必要性,(1)一个模块可能对另一个模块产生不利的影响(2)可能会发现单元测试中未发现的接口方面的报告(3)将子功能合成时不一定产生所期望的主功能(4)独立可接受的误差,在组装后可能会超过可接受的误差程度(5)在单元测试中无法发现时序问题(6)在单元测试中无法发现资源竞争问题,集成测试的层次,传统软件:按集成粒度不同,可分为:模块间集成测试,子系统内集成测试,子系统间集成测试;面向对象的应用系统:类内集成测试,类间集成测试,集成策略,集成策略在对测试对象分析的基础上,描述软件单元集成(组装)的方
3、式和方法。是集成测试过程中各种活动的基础,集成策略包括基于功能分解图的集成大爆炸渐增式集成自顶而下自底而上混合集成基于MM-路径的集成,功能分解图,功能分解定义一种基于系统功能和子功能将系统分解为多个组件的模块分解方式,SATM系统,设备传感与控制,中央银行通信,终端传感与控制,管理会话,通道传感与控制,槽传感与控制,屏幕驱动器,键盘传感器,验证卡,验证PIN,取数字,管理事务,结束会话,大爆炸集成,定义把各个单元一次性集成为一个完整的系统中进行测试,而不是分阶段进行备注大爆炸法是一个折中的集成测试策略如果系统很小或者定位缺陷不是那么复杂,可以采用大爆炸法。不然,比较好的办法基于某种集成测试策
4、略一步步集成各单元,自顶而下集成,定义从顶层开始,采用同设计顺序一样的思路对被测系统进行测试,一般集中于顶层的组件,然后逐步测试处于底层的组件,被上层单元调用的下层单元以桩出现自顶而下的集成方式深度优先从最顶层单元开始,持续向下到下一层,选择一个分支,自顶而下一个一个的集成这条分支上的所有单元,直到最底层,然后转向另一个分支,重复这样的集成操作直到所有的单元都集成进来广度优先从最顶层单元开始,持续向下到下一层,一个个完成下一层上所有单元集成后,再转向下面一层,重复这样的集成操作直到所有的单元都集成进来,广度优先集成举例,步骤从U1开始测试,被U1调用的U2,U3,U4被S1,S2,S3这3个桩
5、模块代替 集成从左向右进行移到下一层,将U1和U2集成,被U2调用的U5被桩模块S4代替,U3,U4被S2,S3集成U1、U2,U3,U5被S4代替,U4被S3代替集成U1,U2,U3和U4,被U4调用的U6,被S5代替,U5用S4代替移到下一层,集成U2,U1,U3,U4和U5,用S5代替U6将U6与其它单元集成,U1,U2,U3,U4,U5,U6,U1,S1,S2,S3,U1,S4,S2,S3,U2,U1,S3,U2,U1,U2,U5,U3,U4,S5,U1,U2,U3,U4,U5,U6,Step 5,Step 4,Step 3,Step 1,Step 2,Step 6,S4,U3,U1,
6、U4,U2,S4,U3,S5,广度优先集成举例,深度优先集成举例,步骤从U1开始,被U1调用的U2、U3、U4被3个桩模块S1、S2、S3代替,基于功能树,选择一个U1的分支,集成自顶而下。在本例中选择最左面的一个分支将U1和U2集成,被U2调用的U5用桩模块S4代替,U3、U4被S2、S3代替将U1、U2和U5集成,U3、U4用桩模块S2、S3代替转回到第二级,将U1、U2、U5和U3集成,用S3代替U4转回到第二级,将U1、U2、U3、U5和U4集成,用S5代替U3将U6与其它模块集成,U1,U2,U3,U4,U5,U6,U1,S1,S2,S3,U1,S4,S2,S3,U2,U1,S2,S
7、3,U2,U1,S3,U2,U3,U1,U2,U3,U4,S5,U1,U2,U3,U4,U5,U6,Step 4,Step 3,Step 1,Step 2,Step 6,U5,U5,U5,深度优先集成举例,自下而上,定义从最底层组件开始,按照分解树的结构,逐层向上集成,调用下层单元的上层单元以驱动出现自下而上举例步骤从最底层U5,U3,U6开始,开发3个驱动模块d1,d2,d3调用它们用U5集成U2,U6,U4被d4,d5代替将所有单元集成在一起,d1,d3,d2,自下而上举例,U1,U2,U3,U4,U5,U6,U1,U2,U3,U4,U5,U6,U5,U3,U6,d4,d5,U2,U4,U
8、5,U6,Step 1,Step 2,Step 3,三明治集成,定义为减少桩模块和驱动模块,在分解树的子树上进行集成举例步骤基于功能树,选择完全分支/子分支作为集成单元,在本例中,我选择了3个子树为了测试U2和U5的集成,开发一个驱动器d1开发两个桩S1和S2测试U1和U3的集成为了测试U4和U6,开发一个驱动器d2将所有的测试子树集成在一起,三明治集成举例,U1,U2,U3,U4,U5,U6,U1,U2,U3,U4,U5,U6,d1,U2,U5,Step 1,Step 2,U1,S1,U3,S2,d2,U4,U6,subtree1,subtree2,subtree3,定义这种方法由Paul
9、C.Jorgensen提出,MM路径法是英文Message-Method的简称MM路径可以用于描述单元之间的控制转移。,基于MM路径的集成,下图展示了一条基于调用关系的单元A,B和C的MM路径,基于MM路径的集成,1,2,3,4,5,6,1,2,3,4,1,2,3,4,5,A,B,C,一条MM路径,相关概念源节点:程序执行开始时或重新开始处的语句片断。可能是单元中的第一个可执行语句或者是紧接着转移控制到其它单元节点之后的节点汇节点:程序执结束处的语句片断。可能是单元中的最后一个可执行语句或者转移控制到其它单元的节点。模块执行路径:以源节点开始,以汇节点结束的一系列语句,中间没有插入汇节点,基于
10、MM路径的集成,基于MM路径的集成,1,2,3,4,5,6,1,2,3,4,1,2,3,4,5,A,B,C,A的模块执行路径:MEP(A,1)=MEP(A,2)=MEP(A,3)=B的模块执行路径:MEP(B,1)=MEP(B,2)=C的模块执行路径:MEP(C,1)=MEP(C,2)=,源节点:A模块:节点1,5;B模块:节点1,3;C模块:节点1 汇节点:A模块:节点4,6;B模块:点2,4;C模块:节点5,相关概念消息:一种程序设计语言机制,通过这种机制一个单元将控制转移给另一个单元。不同的程序设计语言消息的含义可能不同,可能是函数调用,也可能是消息接收。MM-路径是穿插出现模块执行路径
11、和消息的序列,是描述包含在单独单元之间控制转移的模块执行路径序列。,基于MM路径的集成,MEP(a,2),MEP(b,1),MEP(c,1),MEP(b,2),MEP(a,3),应用基于系统中的调用关系、或者对象之间协作图、顺序图等建模信息和代码标识系统的MM-路径。最低要求所有消息均被覆盖至少一次。难点MM-路径的标识,基于MM路径的集成,基于MM路径的集成举例,功能说明NextDate:nextDate(month,day,year)实现输出输入日期的下一个日期,其中1month 12,1day 31,1900year 2060NextDate由5个类实现,这5个类通过彼此发送消息交互:C
12、alendarUnit是一个抽象类theDate是CalerdarUnit的一个子类Day是CalerdarUnit的一个子类Month是CalerdarUnit的一个子类Year是CalerdarUnit的一个子类,CalendarUnit.java,theDate.java,Day.java,Month.java,Year.java,测试用例设计和实现,NextDate问题集成测试的关键点在于 theDate类的increment()方法,为了覆盖所有的消息,设计了3个方法:testDayIncrement()方法执行msg7的true分支testMonthIncrement()方法执行m
13、sg7的false分支,msg8和msg11的true分支testYearIncrement()方法执行msg7的false分支,msg8,msg9,msg10的false分支通过执行这3个方法,各类间的所有消息发送都被覆盖到了,testNextDate,main,theDate,printDate(),Day,Day(),Month,Month(),Year,Year(),Date(),Increment(),setCurrentPos(),Increment(),setDay(),getDay(),setCurrentPos(),Increment(),getYear(),isLeap()
14、,setCurrentPos(),Increment(),setMonth(),getMonth(),getMonthSize(),Jan.16th 2007 MM路径,testDayIncrement()方法的MM路径,这条路径不能覆盖msg8,msg9,msg10 and msg11,testNextDate,main,Date,printDate(),Day,Day(),Month,Month(),Year,Year(),Date(),Increment(),msg1,msg4,setCurrentPos(),Increment(),setDay(),getDay(),msg21,set
15、CurrentPos(),Increment(),getYear(),isLeap(),setCurrentPos(),Increment(),setMonth(),getMonth(),getMonthSize(),msg5,msg18,msg19,msg6,msg15,msg16,msg7,msg17,msg20,msg12,msg14,msg13,msg2,msg3,Jan.31st 2007 的MM路径,testMonthIncrement()方法的MM路径,这条路径不能覆盖msg9 and msg10,msg8,msg11,testNextDate,main,Date,printDa
16、te(),Day,Day(),Month,Month(),Year,Year(),Date(),Increment(),msg1,msg4,setCurrentPos(),Increment(),setDay(),getDay(),msg21,setCurrentPos(),Increment(),getYear(),isLeap(),setCurrentPos(),Increment(),setMonth(),getMonth(),getMonthSize(),msg5,msg18,msg19,msg6,msg15,msg16,msg7,msg17,msg20,msg12,msg14,msg
17、13,msg2,msg3,Dec.31st 2006 的MM路径,testMonthIncrement()方法的MM路径,这条路径覆盖了剩余的消息,msg8,msg11,msg9,msg10,与单元测试类似,主要的测试活动包括集成测试计划设计集成测试用例实现测试用例搭建集成测试环境执行测试测试总结评估测试工作量很多时候采用黑盒和白盒相结合被称为灰盒测试的测试方法集成测试可由开发人员也可由测试人员承担,集成测试过程,集成测试环境中的要素执行集成测试的硬件和软件数据库环境网络环境接口仿真器集成测试用例、桩和驱动集成测试报告与单元测试报告类似,搭建集成测试环境,不要过份区分单元测试、集成测试和系统测试的界限关键单元尤先集成,关键单元可能是:系统的基础单元与多个其它单元关系密切的单元如果测试人员执行集成测试,最好在开发人员指导下进行采用适合组织结构的缺陷跟踪过程确保修改缺陷不引入新的问题报告集成测试缺陷并保存缺陷报告基线化集成测试过程资产,建议,小结,集成测试是评估单元间交互的测试过程常用的集成策略包括大爆炸自顶而下自底而上三明治集成基于MM-路径的集成,
链接地址:https://www.31ppt.com/p-5618506.html