第 18 章 集成测试与确认测试

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

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

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

资源描述

2020年1月23日7时29分第‹#›页第18章集成测试与确认测试18.1集成测试概述18.2如何进行集成测试18.3集成测试策略18.4确认测试2020年1月23日7时29分第‹#›页18.1集成测试概述一般这样定义集成测试:根据实际情况对程序模块采用适当的的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性检验的测试工作。2020年1月23日7时29分第‹#›页18.1.1集成测试与系统测试的区别1、测试对象集成测试的测试对象是由通过了单元测试的各个模块所集成起来的组件。而系统测试的测试对象,除了软件之外,还有计算机硬件及相关的外围设备、数据采集和传输机构、计算机系统操作人员等的整个系统。2020年1月23日7时29分第‹#›页2、测试时间集成测试是介于单元测试和系统测试之间的测试在测试时间上,先于系统测试。3、测试方法集成测试通常会采用灰盒测试。而系统测试通常使用黑盒测试。4、测试内容集成测试的主要内容就是各个单元模块之间的接口,以及各个模块集成后所实现的功能。而系统测试的主要内容就是整个系统的功能和性能。2020年1月23日7时29分第‹#›页5、测试目的集成测试的主要目的就是发现单元之间接口的错误,以及发现集成后的软件同软件概要设计说明不一致的地方。而系统测试的主要目的就是,通过与系统需求定义相比较之后发现软件与系统定义不符合或矛盾的地方。6、测试角度集成测试工作的开展更多的是站在测试工作人员的角度上。系统测试工作的开展更多的是站在用户的角度来进行。2020年1月23日7时29分第‹#›页18.1.2集成测试与开发的关系从软件开发与测试V模型可知,集成测试是和软件开发过程中的概要设计阶段相对应的。概要设计的关于整个系统的体系结构就是集成测试的基础,而集成测试也为软件架构中是否有错误和遗漏提供了服务。两者是相辅相成的。为了使读者更好的了解集成测试与开发的关系,图4-1给出了软件基本结构图。2020年1月23日7时29分第‹#›页A产品子系统1子系统2硬件子系统1软件子系统1软件模块1软件模块2软件程序1软件程序2单元1单元2单元3单元4硬件子系统2软件子系统2软件模块3软件模块4(软件结构图)(软件模块结构)4-1软件结构图图4-1软件结构图2020年1月23日7时29分第‹#›页18.1.3集成测试的重点1、各个模块连接起来后,穿过模块接口的数据是否会丢失,是否能够按期望值传递给另外一个模块;2、各个模块连接起来后,需要判断是否仍然存在单元测试时所没发现的资源竞争问题;3、分别通过单元测试的子功能模块集成到一起能否实现所期望的父功能;2020年1月23日7时29分第‹#›页4、兼容性,检查引入一个模块后,是否对其他与之相关的模块产生负面影响;5、全局数据结构是否正确,是否被不正常的修改;6、集成后,每个模块的误差是否会累计扩大,是否会达到了不可接受的程度;2020年1月23日7时29分第‹#›页18.1.4集成测试的层次对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:-模块内集成测试-子系统内集成测试-子系统间集成测试对于面向对象应用系统来说,按集成粒度不同,可以把集成测试分为2个层次:-类内集成测试-类间集成测试2020年1月23日7时29分第‹#›页18.2如何进行集成测试一、体系结构分析首先,跟踪需求分析,对要实现的系统划分出结构层次图。其次,是对系统各个组件之间的依赖关系进行分析,然后据此确定集成测试的粒度,即集成模块的大小。2020年1月23日7时29分第‹#›页二、模块分析一般,可从以下几个角度进行模块分析:1)确定本次要测试的模块;2)找出与该模块相关的所有模块,并且按优先级对这些模块进行排列;3)从优先级别最高的相关模块开始,把被测模块与其集成到一起;4)然后依次集成其他模块。2020年1月23日7时29分第‹#›页三、接口分析接口的划分要以概要设计为基础,一般通过以下几个步骤来完成:(1)确定系统的边界、子系统的边界和模块的边界。(2)确定模块内部的接口。(3)确定子系统内模块间接口。(4)确定子系统间接口。2020年1月23日7时29分第‹#›页(5)确定系统与操作系统的接口。(6)确定系统与硬件的接口。(7)确定系统与第三方软件的接口。2020年1月23日7时29分第‹#›页四、风险分析风险通常被分为3种类型:1项目风险:包括项目管理和项目环境的风险。2商业风险:它和领域的相关概念及规则息息相关。3技术风险:这是针对应用程序的具体实现而言的,主要和代码级的测试有关。2020年1月23日7时29分第‹#›页风险分析是一个定义风险并且找出阻止潜在的问题变成现实的方法的过程。通常把风险分析分为3个阶段:风险识别、风险评估和风险处理。2020年1月23日7时29分第‹#›页五、可测试性分析必须尽可能早地分析接口的可测试性,提前为后续的测试工作做好准备。六、集成测试策略分析集成测试策略分析的主要任务就是根据被测对象选择合适的集成测试策略。2020年1月23日7时29分第‹#›页18.3集成测试策略将模块连接起来组成一个可运行的系统,有两种方法;非渐增式测试和渐增式测试。(1)非渐增式测试(Non-incrementaltesting)当每个模块都进行了单元测试后,按照软件结构要求把所有模块连接起来织成一个完整的程序,对全程序进行测试。这种测试方法叫非渐增式测试。2020年1月23日7时29分第‹#›页(2)渐增式测试(Incrementaltesting)渐增式测试是把下一个要测试的模块同已经测试过的模块连接起来,进行测试,测试完后再把下一个要测试的模块结合进来进行测试,逐步集成、组装测试整个软件程序2020年1月23日7时29分第‹#›页18.3.1非渐增式测试1.目的尽可能缩短测试时间,使用最少的测试用例验证系统。2020年1月23日7时29分第‹#›页2.定义这种集成测试策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险,也称为大爆炸集成。2020年1月23日7时29分第‹#›页3.具体方法举例来说,假设要对某个系统的部分功能(包括4个模块)进行测试,其功能分解如图4-3所示。ABDC图4-3程序结构图2020年1月23日7时29分第‹#›页具体测试过程如下:①对模块A进行测试②对模块B进行测试③对模块C和模块D进行测试④把通过单元测试的所有模块组装到一起进行集成测试。以上测试过程如图4-4所示:2020年1月23日7时29分第‹#›页Test(A;B;C;D)TestATestBTestCTestDTests◆TestA(withstubsforBandC)◆TestB(withdriverforAandstubforD)◆TestC(withdriverforA)◆TestD(withdriverforB)◆Test(A;B;C;D)图4-4大爆炸法示例图2020年1月23日7时29分第‹#›页4.优点(1)可以并行调试所有模块。(2)需要的测试用例数目少。(3)测试方法简单、易行。2020年1月23日7时29分第‹#›页5.缺点(1)不能充分对各个模块之间的接口进行充分测试。(2)不能很好的对全局数据结构进行测试。(3)如果一次集成的模块数量多,集成测试后可能会出现大量的错误。另外,修改了一处错误之后,很可能新增更多的新错误,新旧错误混杂,给程序的完善带来很大的麻烦。(4)使集成测试通过,也会遗漏很多错误2020年1月23日7时29分第‹#›页6.适用范围(1)只需要修改或增加少数几个模块的前期产品稳定的项目;(2)功能少,模块数量不多,程序逻辑简单,并且每个组件都已经过充分单元测试的小型项目;2020年1月23日7时29分第‹#›页18.3.2渐增式测试渐赠式的方法与非渐增式有所不同,它的集成是逐步实现的,集成测试也是逐步完成的。按集成的次序不同,渐赠式测试可以分为两种:自顶向下测试和自底向上测试2020年1月23日7时29分第‹#›页(一)自顶向下测试(Top—downtesting)自顶向下的结合方法是一个日益为人们广泛采用的组装软件的途径。从主控制模块(“主程序”)开始,沿着软件的控制层次向下移动,从而逐渐把各个模块结合起来。在把附属于(以及最终附属于)主控制模块的那些模块组装到软件结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。2020年1月23日7时29分第‹#›页参看下图,深度优先的结合方法先组装在软件结构的一条主控制通路上的所有模块。选择一条主控制通路取决于应用的特点,并且有很大任意性。例如,选取左通路,首先结合模块M1、M2和M5;其次,M8或M6(如果为了使M2具有适当功能需要M6的话)将被结合进来。然后构造中央的和右侧的控制通路。而宽度优先的结合方法,是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。2020年1月23日7时29分第‹#›页M1M2M5M6M8M3S7S42020年1月23日7时29分第‹#›页对于图例来说,首先结合模块M2、M3和M4(代替存根程序S4)。然后结合下一个控制层次中的模块M5、M6和M7,如此继续进行下去,直到所有模块都被结合进来为止。2020年1月23日7时29分第‹#›页1.目的从顶层控制(主控模块)开始,采用同设计顺序一样的思路对被测系统进行测试,来验证系统的稳定性。2020年1月23日7时29分第‹#›页2.定义自顶向下的集成测试就是按照系统层次结构图,以主程序模块为中心,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。2020年1月23日7时29分第‹#›页3.方法集成测试的过程如下:1把主控模块作为测试驱动,所有与主控模块直接相连的模块作为桩模块;2根据集成的方式(深度优先或者广度优先),逐渐使用实际模块替换相应的下层桩模块;再用桩代替他们的直接下属模块,与已通过测试的模块或子系统组装成新的子系统。2020年1月23日7时29分第‹#›页3在每个模块被集成时,都必须已经通过了单元测试;4进行回归测试(重新执行以前做过的全部或部分测试),以确定集成新模块后没有引入错误;5从上述过程中的第二步开始重复执行,直到所有模块都已经集成到系统中为止。图4-5给出了一个按广度优先策略进行集成测试的典型例子。2020年1月23日7时29分第‹#›页图4-5自顶向下增量式测试(广度优先策略)2020年1月23日7时29分第‹#›页4.优点1在测试的过程中,可以较早地验证主要的控制和判断点。2选择深度优先组合方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行组装和测试,检查和克服潜藏的错误和缺陷,验证其功能的正确性,为此后主要分支的组装和测试提供保证;3能够较早的验证功能可行性,给开发者和用户带来成功的信心;2020年1月23日7时29分第‹#›页4只有在个别情况下,才需要驱动程序(最多不超过一个),减少了测试驱动程序开发和维护的费用,5可以和开发设计工作一起并行执行集成测试,能够灵活的适应目标环境;6容易进行故障隔离和错误定位。2020年1月23日7时29分第‹#›页5.缺点1在测试时需要为每个模块的下层模块提供桩模块,桩模块的开发和维护费用大;2底层组件的需求变更可能会影响到全局组件,需要修改整个系统的多个上层模块。3要求控制模块具有比较高的可测试性;4可能会导致底层模块特别是被重用的模块测试不够充分.2020年1月23日7时29分第‹#›页6.适用范围1控制结构比较清晰和稳定的应用程序;2系统高层的模块接口变化的可能性比较小;3产品的低层模块接口还未定义或可能会经常因需求变更等原因被修改;4产品中的控制模块技术风险较大,需要尽可能提前验证;5需要尽早看到产品的系统功能行为;6在极限编程(ExtremeProgramming)中使用测试优先的开发方法。2020年1月23日7时29

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

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

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

×
保存成功