资源描述
单击此处编辑母版标题样式,12/17/2009,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2011/5/19,#,主讲人:杨晔,任务,6,集成测试,浙江警官职业学院,Copyright,by,YangYe All,rights reserved.,?,请思考基于分解的集成测试的缺点?,基于分解的集成,1,一,、自顶向下集成,优点,:,它在测试过程早期,对主要的控制点或判决点进行检验。在分解得很好的软件结构中,判决需要在结构层次的较高层确定。如果主要控制点有问题,早点认识到这个问题就变得很重要。如果选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行组装和测试提供保证。此外,功能可行性较早得到证实,还能够给开发者和用户带来成功的信心,。,缺点,:,在,测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。解决这个问题有,2,种办法:,第一是把某些测试推迟到用真实模块替代桩模块之后进行。,第二是开发能模拟真实模块的桩模块。,二、自底向上集成,自底向上,集成是自顶向下顺序的“镜像”,不同的是,桩由模拟功能分解树上一层单元的驱动器模块替代。,在自底向上集成中,首先从分解树的叶开始,并用特别编写的驱动器测试。,在自底向上集成顺序中,不需要同样数量的驱动器,不过代价是驱动模块都比较复杂。,自底向上测试的优点:,由于驱动模块模拟了所有调用参数,测试模块返回结果不影响驱动模块,生成测试数据也没有困难。如果关键模块是在结构图的底部,自底向上的测试是有优越性的。另外自底向上的组装测试不必开发桩模块。,自底向上的组装测试的缺点:,当最后一个模块尚未测试时,还没有呈现出被测软件系统的雏形。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略,有时混合使用两种策略更为有效。,二、自底向上集成,三,、三明治集成,自顶向下,和自底向上集成的组合。,三,、三明治集成,混合,渐增式集成测试,方法:,1,),衍变的自顶向下的渐增式测试,它的基本思想是强化对输入,/,输出模块和引入新算法模块进行测试,再自底向上组装成为功能相当完整且相对独立的子系统,然后由主模块开始自顶向下进行渐增式测试。,2),自底向上,自顶向下的渐增式测试,首先对含读操作的子系统自底向上直至根结点模块进行组装和测试,然后对含写操作的子系统进行自顶向下的组装与测试。,3),回归测试,这种方式采取自顶向下的方式测试被修改的模块及其子模块,然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否匹配。,基于调用图的集成,2,一、成对集成,基于,分解集成的缺点之一是以功能分解树为基础。,如果改用调用图,则可以减缓这种缺陷,并且也向结构性测试方向发展。,1.,成对集成,免除桩,/,驱动器开发工作。,40,个集成测试过程。,二、相邻集成,节点,邻居包括所有直接前驱节点和所有直接后继节点。,相邻,集成可大大降低集成测试会话数量(从,40,降至,11,),并且避免了桩和驱动器的开发。,邻居本质上是三明治,稍有不同,邻居的基本信息是调用图,而不是分解树,相邻集成测试具有“中爆炸”集成的缺陷隔离困难,。,三、优缺点,优点,:,基于调用图的集成技术偏离了纯结构基础,转向行为基础,因此底层假设是一种改进。,免除了桩,/,驱动器开发工作量。,基于调用图的集成还与以构建和合成为特征的开发匹配得很好。例如邻居系列可以用于定义构建。此外,还可以允许相邻邻居合并(村庄?),并提供一种有序的基于合成的成长路径。,缺点:,缺陷隔离问题,尤其是对有大量邻居的情况。,当出现在多个邻居中的节点中发现缺陷会出现什么情况?(例如屏幕驱动器单元出现在,11,个邻居中的,7,个中。)显然,要清楚这个缺陷,但是这意味着以某种方式修改了该单元的代码,而以前测试过的包含已变更代码的邻居,都需要重新进行测试。,当,基于调用图信息的集成测试完成后,得到系统级线索还有一定距离,。,通过,将基础从调用图信息转移到路径的特殊形式,可以解决这个问题。,基于路径的集成,3,单元级测试非常需要结构性测试和功能性测试的结合,对于集成(以及系统)测试来说,最好也有类似的能力。,用行为线索表示系统测试。,修订集成测试的目标:不是测试单独开发并通过测试的单元之间的测试接口,而是将注意力集中在这些单元的交互上。(“协同功能”)接口是结构性的,而交互是行为性的。,一、新概念与扩展概念,定义,程序中的源节点是程序执行开始或重新开始处的语句片段。,单元中的第一个可执行语句显然是源节点。源节点还会出现在紧接转移控制到其他单元的节点之后。,定义,汇节点是程序执行结束处的语句片段。,程序中的最后一个可执行语句显然是汇节点,转移控制到其他单元的节点也是汇节点。,一、新概念与扩展概念,定义,模块执行路径是以源节点开始、以汇节点结束的一系列语句,中间没有插入汇节点,。,定义,消息是一种程序设计语言机制,通过这种机制一个单元将控制转移给另一个单元。,取决于程序设计语言,消息可以被解释为子例程调用、过程调用和函数引用。消息可以向其他单元传递数据,。,定义,MM-,路径是穿插出现模块执行路径和消息的序列。,一、新概念与扩展概念,MM,路径的基本思想是,描述包含在单独单元之间控制转移的模块执行路径序列。这种转移是通过消息完成的。,在模块,A,中,节点,1,和,5,是源节点,节点,4,和,6,是汇节点。在模块,B,中,节点,1,和,3,是源节点,节点,2,和,4,是汇节点。模块,C,只有一个源节点,1,和一个汇节点,5,。,其中的节点表示模块执行路径,边表示消息。,一、新概念与扩展概念,七条模块路径:,其中的节点表示模块执行路径,边表示消息。,一、新概念与扩展概念,定义,给定一组单元,其,MM-,路径图是一种有向图,其中的节点表示模块执行路径,边表示消息和单元之间的返回。,实线箭头表示消息,相应的返回由虚线箭头表示,。,MM,路径图,考虑模块执行路径、程序路径、,DD-,路径和,MM-,路径之间的关系?,一、新概念与扩展概念,程序图是,DD-,路径序列,,MM-,路径是模块执行路径序列。两者可能相互包容,更有可能部分重叠。,MM-,路径末端点有两点可观察的行为准则:消息和数据静止。,当到达不发送消息的节点时,消息静止发生(如模块,C,)。,当处理不立即使用的存储数据的创建的序列结束时,数据静止发生(在,ValidateCard,单元中,获取账户余额,但是直到,PIN,输入成功后才使用),二,、,SATM,系统中的,MM-,路径,二,、,SATM,系统中的,MM-,路径,二,、,SATM,系统中的,MM-,路径,SATM,主程序,(,1,)源节点:,1,、,6,、,7,、,9,、,11,、,12,、,15,、,19,、,21,、,23,、,27,、,30,、,32,、,34,、,35,、,36。,(,2,)汇节点:,5,、,6,、,8,、,10,、,11,、,14,、,17,、,18,、,20,、,22,、,26,、,31,、,33,、,34,、,35,、,38。,二,、,SATM,系统中的,MM-,路径,第一次尝试正确,PIN,输入的,MM-,路径,二,、,SATM,系统中的,MM-,路径,第一次尝试正确,PIN,输入的,MM-,路径,示例,MM-,路径的时序序列图,三,、,MM-,路径复杂度,其中的节点表示模块执行路径,边表示消息。,V,(,G,),=e n+,2p,=4-3+2,=3,三,、,MM-,路径复杂度,V,(,G,),=e n+,2p,=24-6+2,=20,四、优缺点,优点,MM-,路径是功能性测试和结构性测试的一种混合。,在表达输入和输出行动上,,MM-,路径是功能性的,因此所有功能性测试技术都是潜在可使用的。,在标识方式,上,特别是,MM-,路径图的标识方式上,它是结构性的。,使集成测试与系统测试无缝连接。,既适用于采用传统瀑布过程开发的软件,也同样适用于采用某种基于合成可选的生命模型开发的软件,也适用于采用于面向对象的软件测试。,最重要的优点,它与实际系统行为密切匹配,而不是靠基于分解和调用图集成的结构性推动。,缺点,标识,MM-,路径的工作量很大。,案例研究,4,?,分解图如何改进,空,的集成过程,一、,NextDate,问题的基于分解和调用图的集成,Main,GetDate,ValidDate,LastDayOfMonth,IsLeap,IncrementDate,PrintDate,调用图,二、基于,MM-,路径的集成,MM,路径设计思路:,由于,程序是数据驱动的,因此所有,MM-,路径都要从主程序开始,并回到主程序,。,找出源节点和汇节点,画出模块执行路径。,NextDate(),伪代码,Main,函数,二、基于,MM-,路径的集成,1,2,3,4,5,6,二、基于,MM-,路径的集成,1,2,3,4,5,6,第一条,MM,路径,别忘记课后复习,The End!Thank!,
展开阅读全文