第七章 集成测试过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第七章集成测试《软件测试方法和应用》7-2本章大纲本章讨论与集成测试相关的内容,包括:集成测试过程集成策略大爆炸自顶而下自底而上三明治集成基于MM-路径的集成集成测试计划集成测试设计集成测试执行《软件测试方法和应用》7-3定义集成经过单元测试的各组件评估它们之间交互的测试过程目的在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,以至达到不能接受的程度。什么是集成测试《软件测试方法和应用》7-4集成策略集成策略在对测试对象分析的基础上,描述软件单元集成(组装)的方式和方法。是集成测试过程中各种活动的基础,集成策略包括1.基于功能分解图的集成大爆炸增式集成自顶而下自底而上混合集成2.基于MM-路径的集成《软件测试方法和应用》7-5功能分解图功能分解定义一种基于系统功能和子功能将系统分解为多个组件的模块分解方式一个简单的ATM系统的功能分解图SATM系统设备传感与控制中央银行通信终端传感与控制管理会话通道传感与控制槽传感与控制屏幕驱动器键盘传感器验证卡验证PIN取数字管理事务结束会话《软件测试方法和应用》7-6大爆炸集成定义把各个单元一次性集成为一个完整的系统中进行测试,而不是分阶段进行备注大爆炸法是一个折中的集成测试策略如果系统很小或者定位缺陷不是那么复杂,可以采用大爆炸法。不然,比较好的办法基于某种集成测试策略一步步集成各单元《软件测试方法和应用》7-7自顶而下集成定义从顶层开始,采用同设计顺序一样的思路对被测系统进行测试,一般集中于顶层的组件,然后逐步测试处于底层的组件,被上层单元调用的下层单元以桩出现自顶而下的集成方式深度优先从最顶层单元开始,持续向下到下一层,选择一个分支,自顶而下一个一个的集成这条分支上的所有单元,直到最底层,然后转向另一个分支,重复这样的集成操作直到所有的单元都集成进来广度优先从最顶层单元开始,持续向下到下一层,一个个完成下一层上所有单元集成后,再转向下面一层,重复这样的集成操作直到所有的单元都集成进来《软件测试方法和应用》7-8广度优先集成举例步骤1.从U1开始测试,被U1调用的U2,U3,U4被S1,S2,S3这3个桩模块代替集成从左向右进行2.移到下一层,将U1和U2集成,被U2调用的U5被桩模块S4代替,U3,U4被S2,S33.集成U1、U2,U3,U5被S4代替,U4被S3代替4.集成U1,U2,U3和U4,被U4调用的U6,被S5代替,U5用S4代替5.移到下一层,集成U2,U1,U3,U4和U5,用S5代替U66.将U6与其它单元集成《软件测试方法和应用》7-9U1U2U3U4U5U6U1S1S2S3U1S4S2S3U2U1S3U2U1U2U5U3U4S5U1U2U3U4U5U6Step5Step4Step3Step1Step2Step6S4U3U1U4U2S4U3S5广度优先集成举例《软件测试方法和应用》7-10深度优先集成举例步骤1.从U1开始,被U1调用的U2、U3、U4被3个桩模块S1、S2、S3代替,基于功能树,选择一个U1的分支,集成自顶而下。在本例中选择最左面的一个分支2.将U1和U2集成,被U2调用的U5用桩模块S4代替,U3、U4被S2、S3代替3.将U1、U2和U5集成,U3、U4用桩模块S2、S3代替4.转回到第二级,将U1、U2、U5和U3集成,用S3代替U45.转回到第二级,将U1、U2、U3、U5和U4集成,用S5代替U36.将U6与其它模块集成《软件测试方法和应用》7-11U1U2U3U4U5U6U1S1S2S3U1S4S2S3U2U1S2S3U2U1S3U2U3U1U2U3U4S5U1U2U3U4U5U6Step5Step4Step3Step1Step2Step6U5U5U5深度优先集成举例《软件测试方法和应用》7-12自下而上定义从最底层组件开始,按照分解树的结构,逐层向上集成,调用下层单元的上层单元以驱动出现自下而上举例步骤1.从最底层U5,U3,U6开始,开发3个驱动模块d1,d2,d3调用它们2.用U5集成U2,U6,U4被d4,d5代替3.将所有单元集成在一起《软件测试方法和应用》7-13d1d3d2自下而上举例U1U2U3U4U5U6U1U2U3U4U5U6U5U3U6d4d5U2U4U5U6Step1Step2Step3《软件测试方法和应用》7-14三明治集成定义为减少桩模块和驱动模块,在分解树的子树上进行集成举例步骤1.基于功能树,选择完全分支/子分支作为集成单元,在本例中,我选择了3个子树1.为了测试U2和U5的集成,开发一个驱动器d12.开发两个桩S1和S2测试U1和U3的集成3.为了测试U4和U6,开发一个驱动器d22.将所有的测试子树集成在一起《软件测试方法和应用》7-15三明治集成举例U1U2U3U4U5U6U1U2U3U4U5U6d1U2U5Step1Step2U1S1U3S2d2U4U6subtree1subtree2subtree3《软件测试方法和应用》7-16定义这种方法由PaulC.Jorgensen提出,MM路径法是英文Message-Method的简称MM路径可以用于描述单元之间的控制转移。基于MM路径的集成《软件测试方法和应用》7-17下图展示了一条基于调用关系的单元A,B和C的MM路径基于MM路径的集成123456123412345ABC一条MM路径《软件测试方法和应用》7-18相关概念源节点:程序执行开始时或重新开始处的语句片断。1.可能是单元中的第一个可执行语句或者是紧接着转移控制到其它单元节点之后的节点汇节点:程序执结束处的语句片断。1.可能是单元中的最后一个可执行语句或者转移控制到其它单元的节点。模块执行路径:以源节点开始,以汇节点结束的一系列语句,中间没有插入汇节点基于MM路径的集成《软件测试方法和应用》7-19基于MM路径的集成123456123412345ABCA的模块执行路径:MEP(A,1)=1,2,3,6MEP(A,2)=1,2,4MEP(A,3)=5,6B的模块执行路径:MEP(B,1)=1,2MEP(B,2)=3,4C的模块执行路径:MEP(C,1)=1,2,4,5MEP(C,2)=1,,3,4,5源节点:A模块:节点1,5;B模块:节点1,3;C模块:节点1汇节点:A模块:节点4,6;B模块:点2,4;C模块:节点5《软件测试方法和应用》7-20相关概念消息:一种程序设计语言机制,通过这种机制一个单元将控制转移给另一个单元。不同的程序设计语言消息的含义可能不同,可能是函数调用,也可能是消息接收。MM-路径是穿插出现模块执行路径和消息的序列,是描述包含在单独单元之间控制转移的模块执行路径序列。基于MM路径的集成MEP(a,2)MEP(b,1)MEP(c,1)MEP(b,2)MEP(a,3)《软件测试方法和应用》7-21应用基于系统中的调用关系、或者对象之间协作图、顺序图等建模信息和代码标识系统的MM-路径。最低要求所有消息均被覆盖至少一次。。难点MM-路径的标识基于MM路径的集成《软件测试方法和应用》7-22基于MM路径的集成举例功能说明NextDate:nextDate(month,day,year)实现输出输入日期的下一个日期,其中1≤month≤12,1≤day≤31,1900≤year≤2060NextDate由5个类实现,这5个类通过彼此发送消息交互:CalendarUnit是一个抽象类theDate是CalerdarUnit的一个子类Day是CalerdarUnit的一个子类Month是CalerdarUnit的一个子类Year是CalerdarUnit的一个子类《软件测试方法和应用》7-23CalendarUnit.java《软件测试方法和应用》7-24theDate.java《软件测试方法和应用》7-25Day.java《软件测试方法和应用》7-26Month.java《软件测试方法和应用》7-27Year.java《软件测试方法和应用》7-28测试用例设计和实现NextDate问题集成测试的关键点在于theDate类的increment()方法,为了覆盖所有的消息,设计了3个方法:1.testDayIncrement()方法执行msg7的true分支2.testMonthIncrement()方法执行msg7的false分支,msg8和msg11的true分支3.testYearIncrement()方法执行msg7的false分支,msg8,msg9,msg10的false分支通过执行这3个方法,各类间的所有消息发送都被覆盖到了《软件测试方法和应用》7-29testNextDatemaintheDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Jan.16th2007MM路径testDayIncrement()方法的MM路径,这条路径不能覆盖msg8,msg9,msg10andmsg11《软件测试方法和应用》7-30testNextDatemainDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Jan.31st2007的MM路径testMonthIncrement()方法的MM路径,这条路径不能覆盖msg9andmsg10msg8msg11《软件测试方法和应用》7-31testNextDatemainDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Dec.31st2006的MM路径testMonthIncrement()方法的MM路径,这条路径覆盖了剩余的消息msg8msg11msg9msg10《软件测试方法和应用》7-32与单元测试类似,主要的测试活动包括集成测试计划设计集成测试用例实现测试用例搭建集成测试环境执行测试测试总结评估测试工作量很多时候

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功