资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,测试层次第集成测试,集成与系统测试,集成测试:集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单元之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单元组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。,集成与系统测试,系统测试:系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。,集成测试与系统测试的区别,测试对象,集成测试的对象是由通过了单元测试的各个模块所集成起来的组件。,系统测试的测试对象除了软件之外,还包括计算机硬件、相关外围设备以及数据传输机构等。,测试时间,集成测试是介于单元测试和系统测试之间的测试。,集成测试与系统测试的区别,测试方法,集成测试:通常采用白盒测试和黑盒测试相结合的测试方法。,系统测试:通常使用黑盒测试方法。,测试内容,集成测试:各个单元模块直接的接口,以及各个模块集成后所实现的功能。,系统测试:整个系统的功能和性能。,集成测试与系统测试的区别,测试目的,集成测试:发现单元之间接口的错误,以及发现集成后的软件同软件概要设计说明书不一致的地方,确保各个单元模块组合在一起后,能够达到软件概要设计说明的要求,协调一致地工作。,系统测试:通过与系统需求定义相比较,发现软件与系统定义不符合或矛盾的地方。,集成测试与系统测试的区别,测试角度,集成测试:更多是站在开发人员的角度上,以便发现更多的问题。,系统测试:更多是站在用户的角度来进行,以证明系统的各个组成部分能够协调一致地工作,以及验证软件在其运行的软件环境和硬件环境下都可以正常工作。,软件测试过程,软件测试过程是一种抽象的模型,用于定义软件测试的流程和方法。,软件测试过程和软件开发过程一样,都遵循软件工程原理,遵循管理学原理。,随着测试过程管理的发展,软件测试专家通过实践总结出了很多很好的,测试过程模型,。这些模型将测试活动进行了抽象,并与开发活动有机的进行了结合,是,测试过程管理,的重要参考依据。,V,模型,V,模型,V,模型最早是由,Paul Rook,在世纪年代后期提出的,旨在改进软件开发的效率和效果,反映出了,测试活动与分析设计活动的关系,。,V,模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。,但,V,模型存在一定的,局限性,,它仅仅把测试作为在编码之后的一个阶段,是针对程序进行的寻找错误的活动,而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。,传统模型下的测试层次,测试层次的传统观念,传统软件开发,V,瀑布模型,:强调测试的基本层次,一个开发阶段产生的信息,构成该层次测试用例标识的基础。,集成测试:根据功能分解树集成以前测试过的单元。,自顶向下集成:测试桩,自底向上集成:测试驱动器,大爆炸集成,传统模型下的测试层次,系统测试:客户能够理解的活动,常与客户验收测试结合一起进行。一般系统测试是功能性测试。,W,模型,W,模型由,Evolutif,公司提出,相对于,V,模型,,W,模型增加了软件各开发阶段中应同步进行的验证和确认活动。,W,模型由,两个,V,字型模型组成,分别代表测试与开发过程,,图中明确表示出了,测试与开发的并行关系,。,W,模型,W,模型,W,模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。,W,模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。,但,W,模型也存在,局限性,。在,W,模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,,W,模型并不能解除测试管理面临着困惑。,传统瀑布模型的新模型,从功能分解转向强调合成,弥补传统瀑布模型的不足。,以合成为核心,对集成和系统测试产生重要影响。,瀑布模型三种主流派生:增量开发、进化开发、螺旋模型。,回归测试:保证在前一个构建中工作正常的功能,新增加了代码之后仍工作正常。,累进测试:假设回归测试是成功的,且新功能是可测试的。,基于规格说明的生命周期模型,快速原型法:对集成测试没有特别要求,对系统测试有特殊要求。,可执行规格说明:从可执行规格说明中直接导出系统测试用例。,ASTM,系统的分析,需求规格说明的结构化分析方法,以三种互补模型为基础:功能、数据和控制,功能模型使用数据流图,数据模型使用实体,/,关系模型,控制模型使用有限状态机,最终结果:功能分解,将集成测试与系统测试分开,线索:与执行时间行为有关的构造。,结构认识,集成测试所处的层次要比系统测试细得多。,对传统的瀑布模型,集成测试考虑的是概要设计信息;系统测试是在需求规格说明层次上。,找出系统线索、集成线索。,行为认识,以系统的系统级输入、输出位置上的端口边界来考虑系统。系统端口事件为系统测试用例的“原语”。,集成线索可看作单元级线索序列,但不考虑单元线索的“内部问题”,只考虑单元线索的交互。,第,13,章 集成测试,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与,接口,有关的各种错误。,集成测试过程通常是根据具体情况采取不同的集成策略将多个模块组装成为子系统或系统,以测试各个模块能否以正确、稳定、一致的方式接口和交互,验证其是否符合软件开发过程中的概要设计说明书的要求。,集成测试关注的问题,模块间的数据传递是否正确?,一个模块的功能是否会对另一个模块的功能产生错误影响?,全局数据结构是否有问题,会不会被异常修改?,块组合起来的功能能否满足要求?,集成后,各个模块的累积误差是否会扩大,是否达到不可接受的程度?,集成测试的第一步,模块分析是集成测试的第一步,也是最重要的工作之一。模块划分的好坏直接影响集成测试工作量、进度和质量。,软件工程的,2/8,原则:测试中发现的,80%,的错误可能源于,20%,的模块。,一般将模块划分为,3,个等级:高危模块、一般模块和低危模块。高危模块应该优先测试。,集成测试与开发,集成测试与软件开发过程中的概要设计相关,概要设计中关于整个系统的体系结构是集成测试用例设计的基础。,概要设计作为软件设计的骨架,可以清晰地表示出大型系统中的组件或子系统的层次构造,软件产品的层次、组件分布、子系统分布等信息为集成测试策略的选取提供了重要的参考依据。,集成测试可以检验所设计的软件构架是否存在错误和遗漏,以及是否存在二义性。,集成测试的层次,对于传统软件来说,按集成粒度不同,可以把集成测试分为,3,个层次,即:,模块间集成测试,子系统内集成测试,子系统间集成测试,对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为,2,个层次:,类内集成测试,类间集成测试,集成测试的原则,所有公共接口必须被测试到;,关键模块必须进行充分测试;,集成测试应当按一定层次进行;,集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;,集成测试应当尽早开始,并以概要设计为基础;,在模块和接口的划分上,测试人员应该和开发人员进行充分沟通;,集成测试的原则,当测试计划中的结束标准满足时,集成测试才能结束;,当接口发生修改时,涉及的相关接口都必须进行回归测试;,集成测试应根据集成测试计划和方案进行,不能随意测试;,项目管理者应保证审核测试用例;,测试执行结果应当如实地记录。,集成测试中用到的辅助模块,驱动模块:用以模拟待测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给待测模块,启动待测模块;,桩模块:用以模拟待测模块工作过程中所调用的模块。桩模块由待测模块调用,它们一般只进行很少的数据处理。,集成测试策略,由模块组装成程序时有两种方法,先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,称为非渐增式集成;,把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完成后再把下一个应该测试的模块结合起来进行测试,每次增加一个模块,称为渐增式集成。,对两个以上模块进行集成时,用辅助模块来模拟模块间的联系。,非渐增式集成,非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。,【,例,】,对如图所示的程序,采用非渐增式集成方法进行集成测试。,A,B,C,D,E,F,G,程序结构图,非渐增式集成,测试,A,测试,B,测试,C,测试,D,测试,E,测试,F,测试,G,测试,(A、B、C,D、E、F、G),非渐增式集成,渐增式集成,渐增式集成与“一步到位”的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此,目前在进行集成测试时普遍采用渐增式集成方法。,当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。,基于功能分解的集成,基于功能分解(以功能分解树为基础),四种方式:自顶向下、自底向上、三明治、大爆炸。,所有集成顺序都假设单元已经通过单独测试。,目标:测试通过单独测试的单元接口。,模块之间的接口类型:,通信协议:两个模块之间通信采用的是标准的或者自定义的(网络)协议;,调用关系:模块,A,调用模块,B,,实际上是由模块,A,向模块,B,发出了一条控制指令,这里数据传递体现的不是很明显,往往体现为参数与返回值,它们可以认为是控制的副本。,文件、数据库、队列、第三方中间件等:表现的主要是数据的传递,其中的控制体现的不明显。,共享资源:比如共享一段,“,存储区域,”,,其中涉及的关键资源主要是,“,锁,”,了;这样的两个模块在运行时往往分布到不同的进程或者线程中,表现为对资源的竞争,以及数据的共享。,同步:一个模块的运行需要另外一个模块的触发,双方往往存在,“,信号,”,等通知机制,也可以理解为一种特殊的控制方式。,自顶向下集成,构造程序结构的一种增量式方式。,从主程序开始,所有被主程序调用的下层单元都作为“桩”出现。,自顶向下集成方法是一个日益为人们广泛采用的测试和组装软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去,或者使用深度优先的策略,或者使用宽度优先的策略。,自顶向下集成,从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。,深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,带有随意性,一般情况下是根据问题的特性确定。,自顶向下集成,以图,1,为例,若选择了最左一条路径,首先将模块,M1,、,M2,、,M5,和,M8,集成在一起,再将,M6,集成起来,然后考虑中间和右边的路径。,自顶向下集成,而广度优先策略则不然,它沿控制层次结构水平地向下移动。,仍以图1为例,它首先把M2、M3和M4与主控模块集成在一起,再将M5和M6与其他模块集成起来。,自顶向下集成,自顶向下综合测试的具体步骤为:,以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;,依据所选的集成策略,(,深度优先或广度优先,),,每次只替代一个桩模块;,每集成一个模块立即测试一遍;,只有每组测试完成后,才着手替换下一个桩模块;,对两个以上模块进行集成时,用辅助模块来模拟模块间的联系。,(7)考虑外部技术支援的力度和深度,以及相关培训安排;,对传统的瀑布模型,集成测试考虑的是概要设计信息;,同步:一个模块的运行需要另外一个模块的触发,双方往往存在“信号”等通知机制,也可以理解为一种特殊的控制方式。,集成测试应当按一定层次进行;,集成测试与系统测试的区别,桩模块由待测模块调用,它们一般只进行很少的数据处理。,(1)功能覆盖分析。,与实际系统行为密切匹配。,集成测试与系统测试的区别,(1)集成测试用例设计。,(5)考虑一定的风险分析机应急计划。,自顶向下集成,为避免引入新错误,须不断地进行回归测试,(,即全部或部分地重复已做过的测试,),。,从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。,自顶向下集成,优点:,能尽早地对程序的主要控制和决策机制进行检验,因此能够较早地发现错误。,缺点:在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。,自底向上集成,自底向上集成是从,“,原子,”,模块,(,即软件结构最低层的模块,),开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。,自底向上集成,自底向上综合测试的步骤为:,把低层模块组织成实现某个子功能的模块群,(cluster),;,开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;,对每个模块群进行测试;,删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。,从第一步开始循环执行上述各步骤,直至整个程序构造完毕。,自底向上集成,首先,“,原子,”,模块被分为三个模块群,每个模块群引入一个驱动模块进行测试。因模块群1、模块群2中的模块均隶属于模块Ma,因此在驱动模块D1、D2去掉后,模块群1与模块群2直接与Ma接口,这时可对Ma进行集成测试;D3被去掉后,Mb与模块群3直接接口,可对Mb进行集成测试;最后D4、D5被去掉后,Ma、Mb和Mc全部集成在一起进行测试。,自底向上集成,优点:,自底向上集成方法不用桩模块,测试用例的设计亦相对简单;,缺点:程序最后一个模块加入时才具有整体形象。,它与自顶向下综合测试方法优缺点正好相反,因此在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试方法,有时混和使用两种方法更为有效,上层模块用自项向下的方法,下层模块用自底向上的方法。,三明治集成,自顶向下和自底向上集成的组合。,在子树上进行大爆炸集成。,桩和驱动器的开发工作都比较小,但在一定程度上增加了定位缺陷的难度。,基于功能分解的集成,在基于分解的集成测试中尤其要注意关键模块,所谓关键模块一般都具有下述一个或多个特征:对应几条需求;具有高层控制功能;复杂、易出错;有特殊的性能要求。关键模块应尽早测试,并需反复进行回归测试。,基于功能分解的集成,优缺点,基于分解的方法在直觉上都很清晰,都用经过测试的组件构建。,只要发现失效,就怀疑最新加入的单元,错误容易定位。,集成测试很容易根据分解树跟踪。,基于分解的集成测试整个机制是根据结构集成单元,假设正确行为来自个体正确的单元和正确的接口。,桩和驱动器的开发工作量大。,基于调用图的集成,基于调用图,向程序结构性测试方向发展。,成对集成,基本思想:免除桩和驱动器开发工作。,对调用图中的每条边有一个集成测试会话。,相邻集成,相邻概念:调用图中节点的邻居,是边从给定节点引出的节点集合。包括所有直接前驱节点和所有直接后继节点。,基于调用图的集成,相邻集成,对于给定调用图,总可以计算出邻居数量。,内部节点,=,节点,(源节点,+,汇节点),邻居,=,内部节点,+,源节点,邻居,=,节点,汇节点,可以大大减少集成测试会话数量,并避免了桩和驱动器的开发,但缺陷隔离困难。,(2)基于风险的测试。,4执行阶段,在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。,同步:一个模块的运行需要另外一个模块的触发,双方往往存在“信号”等通知机制,也可以理解为一种特殊的控制方式。,(5)集成测试工具分析。,系统测试:客户能够理解的活动,常与客户验收测试结合一起进行。,当接口发生修改时,涉及的相关接口都必须进行回归测试;,(1)集成测试用例设计。,桩模块:用以模拟待测模块工作过程中所调用的模块。,集成测试与系统测试的区别,在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。,偏离了纯结构基础,转向行为基础;,V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;,缺陷隔离存在问题,缺陷难以定位。,驱动模块:用以模拟待测模块的上级模块。,模块间的数据传递是否正确?,系统端口事件为系统测试用例的“原语”。,基于调用图的集成,优缺点,偏离了纯结构基础,转向行为基础;免除了桩,/,驱动器的开发工作量;基于调用图的集成与以构建和合成为特征的开发匹配得很好。,缺陷隔离存在问题,缺陷难以定位。,基于路径的集成,对应传统集成测试关注结构,测试单元之间的接口,基于路径的测试关注行为,测试单元之间的交互。,新概念与扩展概念,程序图的扩展概念,基于路径的集成测试中的新概念:,MM-,路径,基于路径的集成,优缺点,结合功能性测试与结构性测试,可以避免结构性测试的缺点,同时又使集成测试与系统测试无缝连接;既适合瀑布过程开发,也适合某种基于合成可选的模型开发以及面向对象的开发;与实际系统行为密切匹配。,需要更多的工作量来标识,MM-,路径。,集成测试用例设计,为系统运行设计用例,可使用的主要测试分析技术有:,(,1,)等价类划分。,(,2,)边界值分析。,(,3,)基于决策表的测试。,集成测试用例设计,为正向测试设计用例,可是用如下几种主要测试分析技术:,(,1,)输入域测试。,(,2,)输出域测试。,(,3,)等价类划分。,(,4,)状态转换测试。,(,5,)规范导出法。,集成测试用例设计,为逆向测试设计用例,可使用的主要测试分析技术有:,(,1,)错误猜测法。,(,2,)基于风险的测试。,(,3,)基于故障的测试。,(,4,)边界值分析。,(,5,)特殊值测试。,(,6,)状态转换测试。,集成测试用例设计,为满足特殊需求设计用例,可使用的主要测试分析技术为规范导出法。,为高覆盖设计用例,可使用的主要测试分析技术有:,(,1,)功能覆盖分析。,(,2,)接口覆盖分析。,集成测试过程,一个测试从开发到执行遵循一个过程,不同的组织对这个过程的定义会有所不同。根据集成测试不同阶段的任务,可以把集成测试划分为,5,个阶段:计划阶段、设计阶段、实施阶段、执行阶段、评估阶段。,制定集成测试计划,设计集成测试,实施集成测试,执行集成测试,评估集成测试,集成测试过程,集成测试过程,1,计划阶段,(,1,)确定被测试对象和测试范围。,(,2,)评估集成测试被测试对象的数量及难度,即工作量。,(,3,)确定角色分工和划分工作任务。,(,4,)表识出测试各个阶段的时间、任务、约束条件。,(,5,)考虑一定的风险分析机应急计划。,(,6,)考虑和准备集成测试需要的测试工具、测试仪器、环境等资源。,(,7,)考虑外部技术支援的力度和深度,以及相关培训安排;定义测试完成标准。,集成测试过程,2,设计阶段,(,1,)被测对象结构分析。,(,2,)集成测试模块分析。,(,3,)集成测试接口分析。,(,4,)集成测试策略分析。,(,5,)集成测试工具分析。,(,6,)集成测试环境分析。,(,7,)集成测试工作量估计和安排。,集成测试过程,3,实施阶段,(,1,)集成测试用例设计。,(,2,)集成测试规程设计。,(,3,)集成测试代码设计。,(,4,)集成测试脚本开发。,(,5,)集成测试工具开发或选择。,集成测试过程,4,执行阶段,测试人员在单元测试完成以后就可以执行集成测试。当然,须按照相应的测试规程,借助集成测试工具,并把需求规格说明书、概要设计、集成测试计划、集成测试设计、集成测试用例、集成测试规程、集成测试代码、集成测试脚本作为测试执行的依据来执行集成测试用例。测试执行的前提条件就是单元测试已经通过评审。当测试执行结束后,测试人员要记录下每个测试用例之行后的结果,填写集成测试报告,最后提交给相关人员评审。,集成测试过程,5,评估阶段,当集成测试执行结束后,要召集相关人员,如:测试设计人员、编码人员、系统设计人员等队测试结果进行评估,确定是否通过集成测试。,谢谢观看,谢谢观看,
展开阅读全文