【文档说明】软件测试集成测试课件.pptx,共(65)页,919.317 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2520.html
以下为本文档部分文字说明:
为什么总是集成不起来?2集成测试IntegrationTesting梁瑞仕liangrs@foxmail.com3第5章集成测试什么是集成测试集成测试策略集成测试用例设计集成测试过程面向对象的集成测试4软件测试的过程被测模块单元测
试设计信息集成测试被测模块单元测试被测模块单元测试测试过的模块确认测试系统测试软件需求其它系统元素装配好的软件确认的软件可运行的软件5什么是集成测试◼也叫做组装测试、联合测试、子系统测试和部件测试。◼是在单元测试的基础上,将所有模块按照概
要设计要求组装成为子系统或系统,进行集成测试。6单元测试、集成测试与系统测试的差别集成测试系统测试单元测试灰盒测试,采用较多黑盒方法构造测试用例黑盒测试大量采用白盒测试方法测试方法模块间的集成和调用关系整个系统,包括系统软硬件等模块内部程序错误对象找出与
软件设计相关的程序结构,模块调用关系,模块间接口方面的问题对整个系统进行一系列的整体、有效性测试消除局部模块逻辑和功能上的错误和缺陷目的系统结构设计目标说明书需求说明书等程序结构设计模块逻辑设计模块外部说明测试依据7集成测试关注的重点◼在把各个模块连接起来时,穿越模块接口
的数据是否会丢失。◼各个子功能组合起来,能否达到预期要求的父功能。◼一个模块的功能是否会对另一个模块的功能产生不利的影响。◼全局数据结构是否有问题,会不会被异常修改。◼单个模块的误差积累起来,是否会放大,从而达到不可以接受的程度。8集成测试的层次◼产
品开发过程:一个分层设计和逐步细化的过程系统结构图:9软件结构图:软件模块结构图:10集成测试的层次可分成3个层次:◼模块内集成测试◼子系统内集成测试◼子系统间集成测试面向对象的应用系统来说,可分为2个层次:◼类内集成测试◼类间集成测试集
成测试的原则◼(1)所有公共接口必须被测试到;◼(2)关键模块必须进行充分测试;◼(3)集成测试应当按一定层次进行;◼(4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;◼(5)集成测试应当尽早开始,并以概要设计为基础;◼(6)在模块和接口
的划分上,测试人员应该和开发人员进行充分沟通;◼(7)当测试计划中的结束标准满足时,集成测试才能结束;◼(8)当接口发生修改时,涉及到的相关接口都必须进行回归测试;◼(9)集成测试应根据集成测试计划和方案进
行,不能随意测试;◼(10)项目管理者应保证测试用例经过审核;◼(11)测试执行结果应当如实的记录。12第5章集成测试什么是集成测试集成测试策略集成测试用例设计集成测试过程面向对象的集成测试13集成测试策略1
)非增量方式◼先测试好每一个软件单元,然后一次组装在一起再测试整个程序。2)增量方式◼逐步把下一个要被组装的软件单元或部件,同已测好的软件部件结合起来测试。◼增量方式主要包括自顶向下、自底向上、自顶向下与自底向上相结合等方法。14集成测试策略◼非增
量方式◼大爆炸(BigBang)◼增量方式◼自顶向下方法(Bottom-Up)◼自底向上方法(Top-Down)◼“三明治”方法(Sandwich)15大爆炸集成(BigBang)◼将所有系统组件一次性集合到被测系统中d1、d2、d3、d4、d5是为单元测试时建立的驱动模块s1、s2、s3、s4、
s5是为单元测试而建立的桩模块16大爆炸集成(BigBang)◼优点:◼可以迅速完成集成测试;并且只要极少数的驱动和桩模块;用例也是最少的;简单;资源利用率高◼缺点:◼一次试运行成功的可能性不大,问题定位和修改比较困
难,许多接口错误很容易躲过测试。◼适应于一个维护型项目或被测试系统较小17集成测试策略◼非增量方式◼大爆炸(BigBang)◼增量方式◼自顶向下方法(Bottom-Up)◼自底向上方法(Top-Down)◼“三明治”方法(San
dwich)18自顶向下方法(Bottom-Up)◼从顶层控制开始,采用同设计顺序一样的思路对被测系统进行测试,以验证系统的接口稳定性◼集成的方式有两种:◼深度优先组装法◼广度优先组装法19深度优先组
装方式20广度优先组装方式21集成步骤(1)以主模块为所测模块兼驱动模块,所有直属于主模块的下属模块全部用桩模块对主模块进行测试。(2)采用深度优先或广度优先的策略,用实际模块替换相应桩模块,再用桩代替它们的直接下属模块,与已测试的模块或子系统集成为新的子系统。(3)进行回归测试(即重
新执行以前做过的全部测试或部分测试),排除集成过程中引起错误的可能。(4)判断是否所有的模块都已集成到系统中,是则结束测试,否则转到(2)去执行。22优缺点分析◼优点:◼较早地验证了主要控制和判断点;◼按深度优先可以首先实现和验证一个完整的
软件功能;◼功能较早证实,带来信心;◼只需一个驱动,减少驱动器开发的费用;◼支持故障隔离。23优缺点分析◼缺点:◼桩的开发量大;◼底层验证被推迟;◼底层组件测试不充分。24适用范围◼产品控制结构比较清晰和稳定;◼高层接口变化较小;◼底层接口未定义或经常可
能被修改;◼产口控制组件具有较大的技术风险,需要尽早被验证;◼希望尽早能看到产品的系统功能行为。实例◼对如图5.3所示的程序,采用自顶向下集成方法,按照深度优先方式进行集成测试。ABCDEFG图5.3程序结构图实例ASBSCSD(a)测试AABSCSD
SESF(b)测试BABCSDEFSG(e)测试CABCSDEFG(f)测试GABCDEFG(g)测试DABSCSDESF(c)测试EABSCSDEF(d)测试F图5.5自顶向下集成27自底向上方法(Top-Down)◼从具有最小依赖性的底层组件开始,按照依赖关系树的结构
,逐层向上集成,以检验系统的稳定性。◼集成示意图:28集成步骤(1)起始于模块依赖关系树的底层叶子模块,也可以把两个或多个叶子模块合并到一起进行测试(2)使用驱动模块对步骤1选定的模块(或模块组)进行测试(3)用实际模块代替驱动模块,与它已测试的直属子模
块组装成一个更大的模块进行测试(4)重复上面的行为知道系统最顶层模块被加入到已测系统中29优缺点分析◼优点:◼对底层组件行为较早验证;◼工作最初可以并行集成,比自顶向下效率高;◼减少了桩的工作量;◼支持故障隔离。30优缺点分析◼缺点:◼驱动的开发工作量大;◼对高层的验证被
推迟,设计上的错误不能被及时发现。◼适用范围:◼适应于底层接口比较稳定;◼高层接口变化比较频繁;◼底层组件较早被完成。实例测试E测试F测试G测试D测试(A、B、CD、E、F、G)图5.6自底向上集成测试(B、E、F)测试(C、G)32“三明治”方法(Sandwich)◼混合式集成◼把系统划分成
三层,中间一层为目标层,目标层之上采用自顶向下集成,之下采用自底向上集成33三明治集成策略34集成步骤(1)首先对目标层之上一层使用自顶向下集成,因此测试A,使用桩代替B,C,D(2)其次对目标层之下一层使用自底向上集成,因此
测试E,F,使用驱动代替B,D(3)其三,把目标层下面一层与目标层集成,因此测试(B,E),(D,F),使用驱动代替A(4)最后,把三层集成到一起,因此测试(A,B,C,D,E,F)35优缺点分析◼优点:◼集合了自顶向下和自底向上两种策略的优点◼
缺点:◼中间层测试不充分◼适用范围:◼适应于大部分软件开发项目36修改过的三明治集成实例测试E测试F测试G测试A测试(A、B、CD、E、F、G)图5.7三明治集成测试(B、E、F)测试(C、G)38第5章集成测试什么是集成测试集成测试策略集成测试用
例设计集成测试过程面向对象的集成测试391、为系统运行设计用例◼目的:测试各个模块的接口是否能用,验证系统最基本功能◼可使用的主要测试分析技术有:(1)等价类划分。(2)边界值分析。(3)基于决策表的测试。402、为正向测试设计用例◼目的:验证集成后
的模块是否按照设计实现了预期的功能。◼可使用如下几种主要测试分析技术:(1)输入域测试。(2)输出域测试。(3)等价类划分。(4)状态转换测试。(5)规范导出法。正向测试是指,当你输入一个有效的输入并且期望软件能够完成一些根据说明书规定的行为。413、为
逆向测试设计用例◼目的:测试是否多余功能、接口遗漏、接口错误、接口异常。◼可使用的主要测试分析技术有:(1)错误猜测法。(2)基于风险的测试。(3)基于故障的测试。(4)边界值分析。(5)特殊值测试。(6)状态转换测试。
逆向测试是指,当你输入无效的输入时并且期望得到一个错误的信息。42集成测试用例设计4、为满足特殊需求设计用例◼可使用的主要测试分析技术为规范导出法。5.为高覆盖设计用例◼可使用的主要测试分析技术有:(
1)功能覆盖分析。(2)接口覆盖分析。43第5章集成测试什么是集成测试集成测试策略集成测试用例设计集成测试过程面向对象的集成测试44集成测试流程计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪根据项目
组提供设计模型和集成构建计划,制定出适合本项目的集成测试计划根据集成测试计划和设计模型设计集成测试用例及测试过程获取工作版本后,由测试设计员创建测试脚本(可选)、更新测试过程,由设计员负责设计驱动程序和桩,实施员负责实施驱动和桩测试人员根据测试脚本(可选)和工作版本执行集成
测试,并记录测试结果依照集成测试计划和测试结果,由测试设计员负责会同集成员、编码员、设计人员评估此次测试,并生成测试评估摘要45计划阶段◼输入◼需求规格说明书◼概要设计文档◼产品开发计划路标◼输出◼集成测试计划46
计划阶段◼活动步骤◼确定被测试对象和测试范围◼评估集成测试被测试对象的数量及难度,即工作量◼确定角色分工和划分工作任务◼标识出测试各阶段的时间、任务、约束等条件◼考虑一定的风险分析及应急计划◼考虑和准备集成测试需要的测试工具、测试仪器、环境等资源◼考虑外部技术支援的
力度和深度,以及相关培训安排◼定义测试完成标准47设计阶段◼输入◼需求规格说明书◼概要设计◼集成测试计划◼输出◼集成测试设计方案48设计阶段◼活动步骤◼被测对象结构分析◼集成测试模块分析◼集成测试接口分析◼集成测试策略分析◼集成测试工具分析◼集成测试环境分析◼集成测试工作量估计和安排49体系结
构分析◼从两个角度出发◼划分出系统实现上的结构层次图◼划分系统组件之间的依赖关系图50◼模块的大小◼驱动和桩模块数量◼消息接口的复杂度◼……51模块分析模块划分可以从以下几个角度出发考虑:◼本次测试主要
希望测试哪个模块◼这个模块与哪几个模块有最密切的关系◼把该模块与关系最密切的模块首先集成在一起◼再考虑外围模块,消息流是否容易模拟,是否方便控制52接口分析接口分析可以通过以下几个步骤来完成:◼确定系统的边
界、子系统的边界和模块的边界◼确定模块内部的接口◼确定子系统内模块间接口◼确定子系统间接口◼确定系统与操作系统的接口◼确定系统与硬件的接口◼确定系统与第三方软件的接口53环境分析可以从以下几个方面进行◼硬件环境◼操作系统环境◼数据库环境◼网络环境54集成测试环境示意图5
5实现阶段◼输入◼需求规格说明书◼概要设计◼集成测试计划◼集成测试设计◼输出◼集成测试用例◼集成测试规程◼集成测试代码、集成测试脚本、集成测试工具(如果有)56实现阶段◼活动步骤◼集成测试用例设计◼集成测试规程设计◼集成测试代码设计(如果需要)◼集成测试脚本(如果需要)◼集成测试
工具(如果需要)57执行阶段◼输入◼需求规格说明书◼概要设计◼集成测试计划◼集成测试设计◼集成测试用例◼集成测试规程58执行阶段◼集成测试代码(如果有)◼集成测试脚本(如果有)◼集成测试工具(如果有)◼详细设计◼代码◼单元测试报告◼
输出◼集成测试报告59执行阶段◼活动步骤◼执行集成测试用例◼回归集成测试用例◼撰写集成测试报告60相应过程的测试文档计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪集成测试计划集成测试设计方案集成测试用例、规程、(代码、脚本、工具)集成测试报告5.
5面向对象的集成测试5.5.1对象交互对象交互涵盖了程序中的绝大部分活动。它包括了对象及其组件的消息,还包括了对象和与之相关的其他对象之间的消息。对象的正确协作(即交互)对于程序的正确性是非常重要的。对象交
互的测试方法:原始类、汇集类、协作类,分别讨论。原始类的测试使用类的单元测试方法。5.5面向对象的集成测试◼1.汇集类测试◼可以使用测试原始类的方法来测试汇集类,测试驱动程序要创建一些实例,这些实例作为消息中的参数被传递给一个正在测试的集合。测试的目的主要是保证那些实例被正确从
集合中移出。有些测试用例会说明集合对其容量所做的限制。假如在实际应用中可能要加入40或50条信息,那么生成的测试用例至少要增加50条信息。如果无法估算出一个有代表性的上限,那么就使用集合中的大量对象进行测试。5.5面向对象的集成测
试2.协作类测试凡不是汇集类的非原始类就是协作类,该类的一个或多个操作中使用其他的对象并将其作为它们的实现中不可缺少的一部分。当类接口中的一个操作的某个后置条件引用了一具对象的实例状态,并且(或者)说明那个对象
的某个属性被使用或修改了,那么这个类就是一个协作类。协作类测试的复杂性远远高于汇集类或原始类的测试。5.5面向对象的集成测试5.5.2面向对象集成测试的常用方法1.抽样测试抽样测试提供了一种运算法则,它使我们能够从一组可能的测试用例中选择一个测试序列。但并不要求一定要首
先明确如何来确定测试用例的总体。测试过程的目的在于定义感兴趣的测试总体,然后定义一种方法,以便在这些测试用例中选择哪些被构建、哪些被执行。2.正交阵列测试正交阵列测试提供了一种特殊的抽样方法,这种方法通过
定义一组交互对象的配对方式组合,以尽力限制测试配置的组合数目激增。5.5面向对象的集成测试5.5.3分布式对象测试1.分布式对象的概念和特点•在类的层次上进行更彻底的测试。•在记录事件发生顺序的同时,执行大量的测试用例。•指定标准的测试环境。2.测试中需要注意的情况•局部故障。•超时
。•结构的动态性。•线程。•同步。