第五章 集成测试_第1页
第五章 集成测试_第2页
第五章 集成测试_第3页
第五章 集成测试_第4页
第五章 集成测试_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第5 5章章 集成测试集成测试1目目录录l集成测试策略l集成测试用例设计3集成(集成(IntegrationIntegration): :指把多个单元组合起来形成更大的单元。集成测试(集成测试(Integration TestingIntegration Testing):也叫组装测试或联合测试是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。 一般情况,都采用黑盒测试,但随着软件复杂度的增加,常常使用灰盒测试。基本概念基本概念模块划分产品开发过程系统结构图:软件结构图:模块结构图:配用电监测与管理系统由很多个子系统组成,如通配用电监测与管理系统由很多个

2、子系统组成,如通讯子系统、数据采集子系统、报警服务子系统、前讯子系统、数据采集子系统、报警服务子系统、前置机应用子系统等。置机应用子系统等。 而每个子系统又由多个功能模块组成,如数据采集而每个子系统又由多个功能模块组成,如数据采集子系统由档案参数模块、任务处理模块、规约解析子系统由档案参数模块、任务处理模块、规约解析模块等组成模块等组成 集成测试的层次集成测试的层次 对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次: (1)类内集成测试

3、 (2)类间集成测试 模块分析是集成测试的第一步。模块划分的好坏直接影响集成测试的工作量,进度和质量。模块划分的原则:1)本次测试希望测试那个模块;2)把与该模块最紧密的模块集成在一起;3)再考虑划分后的外围模块,并考虑外围模块和被集成模块之间的信息流是否容易模拟和控制。8模块划分的原则模块划分的原则集成测试的层次集成测试的层次 对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次: (1)类内集成测试 (2)类间集成测试 集成测试的原则集

4、成测试的原则10 (1)所有公共接口必须被测试到; (2)关键模块必须进行充分测试; (3)集成测试应当按一定层次进行; (4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系; (5)集成测试应当尽早开始,并以概要设计为基础; (6)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通; (7)当测试计划中的结束标准满足时,集成测试才能结束; (8)当接口发生修改时,涉及到的相关接口都必须进行回归测试; (9)集成测试应根据集成测试计划和方案进行,不能随意测试; (10)项目管理者应保证测试用例经过审核; (11)测试执行结果应当如实的记录。 我们已经知道,集成测试是把功能模块

5、或程序单元组合起来进行测试,发现模块在组合过程中的缺陷。那么,系统中的各个模块如何组合呢?是全部同时组装还是逐渐组装模块?这是集成策略将要解答的问题。集成测试策略集成测试策略 集成的基本策略比较多,分类比较复杂,但是都可以归结 为以下两类: 非渐增式集成策略非渐增式集成策略一步到位一步到位 NonIncremental Testing 渐增式集成策略渐增式集成策略逐步实现逐步实现 Incremental Testingl驱动模块(driver):用以模拟待测模块的上级模块。l桩模块(stub):也称存根模块,用以模拟待测模块工作过程中所调用的模块。14两个概念:两个概念:非渐增式集成非渐增式集

6、成15 非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。此方法只适合于规模较小的应用系统。 又叫大爆炸式集成又叫大爆炸式集成 例题例题l【例5.1】 对如图5.3所示的程序,采用非渐增式集成方法进行集成测试。16ABCDEFG 图5.3 程序结构图 定位和改正错误非常困难。17测试A测试B测试C测试D测试E测试F测试G测试(A、B、CD、E、F、G) 图5.4 非渐增式集成 这种一次性集成方式将所测模块连接起来进行测试,但是一次试运行成功地可能性并不大。其结果发现有错误,但茫然找不到原因,差错和改错都会遇到困难。 优点:优点:l方法简单l允

7、许多测试人员同时并行工作,人力物力资源利用率较高 缺点缺点: :l必须为每个模块设定桩模块和驱动模块l一旦集成后包含多种错误,难以纠正。渐增式集成渐增式集成19 渐增式集成与“一步到位”的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;对接口可以进行更彻底的测试;可以使用系统化的测试方法。因此。目前在进行集成测试时普遍采用渐增式集成方法。 当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。 201 1自顶向下集成自顶向下集成 自顶向下集成方法是一个日益为人们广泛采用的测试和组装软件的途径。从主控制模块(主程序),(主程序),开始,沿着

8、程序的控制层次向下移动,逐渐把各个模块结合起来。再把附属于(及最终附属于)主控制模块的那些模块组装到程序结构中去,或者使用深度优先的策略,或者使用宽度优先的策略。 1.对主控模块进行测试,测试时用桩模块代替所有直接附属于主控模块的模块;2.根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个桩模块;3.在结合进一个模块的同时进行测试;4.为了保证加入模块没有引进新的错误,可能需要进行回归测试。从2开始不断重复进行上述过程,直到构造起完整的软件结构为止。21步骤:步骤:l深度优先方式: 首先集成在结构中的首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。,主控路

9、径的选择是任意的。 l广度优先方式: 首先沿着水平方向,首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。,直到底层。例子例子23ASBSCSD(a)测试AABSCSDSESF (b)测试BABCSDEFSG (e)测试CABCSDEFG (f)测试GABCDEFG(g)测试DABSCSDESF (c)测试EABSCSDEF (d)测试F图5.5 自顶向下集成【例例5.2】对如图5.3所示的程序,采用自顶向下集成方法,按照深度优先方式进行集成测试。 自顶向下增量式集成适用范围:自顶向下增量式集成适用范围:26 2自底向上集成自底向上集成 自底向上测试从“原子”模块(即在

10、软件结构最底层的模块)开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要桩模块。 l步骤:1.把低层模块组合成实现某个特定软件子功能的族;l2.写 一个驱动程序,协调测试数据的输入和输出;l3.对由模块组成的子功能族进行测试;l4.去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。27例子例子28测试E测试F测试G测试D测试(A、B、CD、E、F、G) 图5.6 自底向上集成测试(B、E、F)测试(C、G)【例例5.3】对如图5.3所示的程序,采用自底向上集成方法,按照深度优先方式进行集成测试。ABCDEFG 图5.3 程序结构图自顶

11、向下集成和自底向上集成法的优缺点:自顶向下集成和自底向上集成法的优缺点:自顶向下集成的方式和自底向上集成的方式各有优缺点。一般来讲,一种方式的优点是另一种方式的缺点。1.自顶向下集成方式的缺点是需要建立桩模块。要使桩模块能够模拟实际子模块的功能十分困难,同时涉及复杂算法,真正输入/输出的模块一般在底层,他们是最容易出问题的模块,到测试和集成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。 优点是能够较早地发现在主要控制方面的问题。2.自底向上集成方式的缺点是“程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体”。就是说,在自底向上集成和测试的过程中,对主要的控制直到最后

12、才接触到。 优点是不需要桩模块,而建立驱动模块一般比建立桩模块容易,同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最容易出问题的部分在早期解决。此外,自底向上集成的方式可以实施多个模块的并行测试,提高测试效率。30三明治集成三明治集成31 三明治集成是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。这种方法桩模块和驱动模块的开发工作都比较小,不过代价是在一定程度上增加了定位缺陷的难度。 l基本过程: l1.确定以哪一层为界来进行集成(如例中所示,确定以B模块为界);l2.对模块B及其所在层下面的各层使用自底向上的集成策略;l3.对模块B所在层上面的层

13、次使用自顶向下的集成策略;l4.对模块B所在层各模块同相应的下层集成;l5.对系统进行整体测试。32例子例子33测试E测试F测试G测试A测试(A、B、CD、E、F、G) 图5.7 三明治集成测试(B、E、F)测试(C、G)【例5.4】对如图5.3所示的程序,以B模块所在层为界,采用三明治集成方法进行集成测试。ABCDEFG 图5.3 程序结构图集成测试策略小结:集成测试策略小结:l非渐增式集成和渐增式集成方法的比较:1.非渐增式测试方法需要编写的软件较多,工作量较大;渐增式测试方法开销小。2.渐增式测试方法发现模块间接口错误早;而非渐增式测试方法晚。3.非渐增式测试方法发现错误,较难诊断;而使

14、用渐增式测试方法,如果发生错误则往往和最近加进来的那个模块有关。4.渐增式测试方法测试更彻底5.渐增式测试方法需要较多的机器时间6.使用非渐增式测试方法,可以并行测试。36实例实例ATM例子例子一个一个SATM的实现及测试的实现及测试l一个SATM(simplify ATM),其功能有:l1、验证用户的密码l2、取款l3、存款l4、查余额 操作显示屏幕 现金出口 存款入口 B1 B2 B3 收据 卡入口 ATM 操作界面示意图 界面界面1欢迎2输入密码3密码错误4卡无效5选择交易类型6选择账户类型7输入取款金额8余额不足9金额输入错误13进行存款10无法取款11提取现金12无法存款15操作结束

15、14打印收据SATM的语境图的语境图键盘银行服务器终端槽(卡、收据出入口)终端通道(现金出入口)屏幕SATM系统功能分结数功能分结数SATM系统终端接受与控制银行通信管理会话键盘屏幕槽通道设备接受与控制管理会话功能分解树管理会话功能分解树管理会话管理事务验证pin结束会话验证卡余额取款接受输入存款单元编号层次编号单元名称单元编号层次编号单元名称11SATM系统61.1.2.2取存款槽状态A1.1设备功能与控制71.1.2.3控制ATM卡传送器D1.1.1通道功能与控制81.1.2.4控制存款放入槽21.1.1.1取通道状态91.1.2.5读ATM卡磁条31.1.1.2控制通道101.2银行通信

16、41.1.1.3付现金111.2.1取PAN的PINE1.1.2槽功能与状态121.2.2取账户状态51.1.2.1检查ATM卡槽131.2.3发出每日事务处理单元编号层次编号单元名称单元编号层次编号单元名称11SATM系统61.1.2.2取存款槽状态A1.1设备功能与控制71.1.2.3控制ATM卡传送器D1.1.1通道功能与控制81.1.2.4控制存款放入槽21.1.1.1取通道状态91.1.2.5读ATM卡磁条31.1.1.2控制通道101.2银行通信41.1.1.3付现金111.2.1取PAN的PINE1.1.2槽功能与状态121.2.2取账户状态51.1.2.1检查ATM卡槽131.

17、2.3发出每日事务处理110ABDCE2345678911 12 1314 15161718F2224 25 262120192327自顶向下集成自顶向下集成110ABDCE2345678911 12 1314 15161718F2224 25 262120192327自底向上集成自底向上集成110ABDCE2345678911 12 1314 15161718F2224 25 262120192327三明治集成三明治集成110ABDCE2345678911 12 1314 15161718F2224 25 262120192327桩桩(stub)和驱动器和驱动器(driver)l桩:模拟被调

18、用单元的一次性代码;l例如用下列程序代替一个取密码的程序Int GetPINforPAN(Int PAN)If (PAN=1123) return 8876;If (PAN=1234) return 8765;If (PAN=8765) return 1545;l驱动器:模拟调用单元的一次性代码;集成测试用例设计集成测试用例设计5253 集成测试需要合适的功能覆盖率和接口覆盖率。要做到这一点,需要从多个角度进行测试用例的设计。 1 1为系统运行设计用例为系统运行设计用例 (保证系统运行的测试用例,即验证最基本功能)可使用的主要测试分析技术有:(1)等价类划分。(2)边界值分析。(3)基于决策表

19、的测试。 54 2 2为正向测试设计用例(验证集成后的模块是否按为正向测试设计用例(验证集成后的模块是否按照设计实现了预期的功能)照设计实现了预期的功能)可使用如下几种主要测试分析技术: (1)输入域测试。 (2)输出域测试。 (3)等价类划分。 (4)状态转换测试。(是根据状态转换来设计测试用例的一种方法。一个系统或组件的两个允许状态之间的切换。 ) (5)规范导出法。(根据相应的规范描述来设计测试用例。每个测试用例被用来测试一个或多个规范陈述句。基本上是根据陈述规范所用语句的顺序来相应地为被测断言设计测试用例。 ) 55 3 3为逆向测试设计用例(分析测试接口是否实现了需为逆向测试设计用例

20、(分析测试接口是否实现了需求规格没有描述的功能,检查规格说明中可能出现的接求规格没有描述的功能,检查规格说明中可能出现的接口遗漏等)口遗漏等) 可使用的主要测试分析技术有: (1)错误猜测法。 (2)基于风险的测试。(软件产品的风险度可以通过出错的严重程度和出现的概率来计算,测试可以根据不同的风险度来决定测试的优先级和测试的覆盖率。 ) (3)基于故障的测试。 (4)边界值分析。 (5)特殊值测试。 (6)状态转换测试。 56 4为满足特殊需求设计用例 可使用的主要测试分析技术为规范导出法。 5为高覆盖设计用例 可使用的主要测试分析技术有: (1)功能覆盖分析。 (2)接口覆盖分析。 集成测试

21、主要由系统部的系统设计人员、软件评测部完成,开发人员也参与集成测试。集成测试相对来说是挺复杂的,而且对于不同的技术、平台和应用差异也比较大,更多是和开发环境融合在一起。集成测试所确定的测试的内容,主要来源于设计模型。58计划阶段设计阶段实施阶段执行阶段分析评估缺陷跟踪根据项目组提供设计模型和集成构建计划,制定出适合本项目的集成测试计划根据集成测试计划和设计模型设计集成测试用例及测试过程获取工作版本后,由测试设计员创建测试脚本(可选)、更新测试过程,由设计员负责设计驱动程序和桩,测试员负责测试驱动和桩测试人员根据测试脚本(可选)和工作版本执行集成测试,并记录测试结果依照集成测试计划和测试结果,由

22、测试设计员负责会同集成员、编码员、设计人员评估此次测试,并生成测试评估摘要 集成测试完成标准集成测试完成标准 怎样判定集成测试过程完成了, 可按以下几个方面检查:1、成功地执行了测试计划中规定的所有集成测试;2、修正了所发现的错误;3、测试结果通过了专门小组的评审。集成测试应由专门的测试小组来进行,测试小组由有经验的系统设计人员和程序员组成。整个测试活动要在评审人员出席的情况下进行。在完成预定的组装测试工作之后,测试小组应负责对测试结果进行整理、分析,形成测试报告。测试报告中要记录实际的测试结果、在测试中发现的问题、解决这些问题的方法以及解决之后再次测试的结果。此外还应提出目前不能解决、还需要

23、管理人员和开发人员注意的一些问题,提供测试评审和最终决策,以提出处理意见。 59集成测试特点:集成测试特点:60 集成测试主要关注下列问题: (1)模块间的数据传递是否正确? (2)一个模块的功能是否会对另一个模块的功能产生错误的影响? (3)全局数据结构是否有问题,会不会被异常修改? (4)块组合起来的功能能否满足要求? (5)集成后,各个模块的累积误差是否会扩大,是否达到不可接受的程度? 具体体现在:具体体现在:接口测试:对函数接口的测试,应关注函数接口参数的类型和个数的一应关注函数接口参数的类型和个数的一致性、输入致性、输入/ /输出属性的一致性、范围的一致性。输出属性的一致性、范围的一

24、致性。对消息接口的测试,应关注收发双方对消息参数的定义是否应关注收发双方对消息参数的定义是否一致、消息和消息队列长度是否满足设计要求、消息的完一致、消息和消息队列长度是否满足设计要求、消息的完整性如何、消息的内存是否在发送过程中被非法释放、有整性如何、消息的内存是否在发送过程中被非法释放、有无对消息队列阻塞进行处理等。无对消息队列阻塞进行处理等。全局数据:全局数据结构的值在两次被访问的间隔是可预知的;全局数据结构的值在两次被访问的间隔是可预知的;全局数据结构的各个数据段的内存不应被错误释放;全局数据结构的各个数据段的内存不应被错误释放;多个全局数据结构间是否存在缓存越界;多个全局数据结构间是否

25、存在缓存越界;多个软件单元对全局数据结构的访问应采用锁保护机制。多个软件单元对全局数据结构的访问应采用锁保护机制。资源访问(数据库):是否存在死锁现象;是否存在死锁现象;是否存在过度利用情况;是否存在过度利用情况;是否存在对共享资源的破坏性操作;是否存在对共享资源的破坏性操作;公共资源访问锁机制是否完善。公共资源访问锁机制是否完善。集成测试有以下不可替代的特点:l单元测试具有不彻底性,对于模块间接口信息内容的正确性、相互调用关系是否符合设计无能为力。只能靠集成测试来进行保障。l同系统测试相比,由于集成测试用例是从程序结构出发的,目的性、针对性更强,测试项发现问题的效率更高,定位问题的效率也较高

26、;l能够较容易地测试到系统测试用例难以模拟的特殊异常流程,从纯理论的角度来讲,集成测试能够模拟所有实际情况;l定位问题较快,由于集成测试具有可重复强、对测试人员透明的特点,发现问题后容易定位,所以能够有效地加快进度,减少隐患。63集成测试、单元测试与系统测试的差别集成测试、单元测试与系统测试的差别测试类型对象对象目的目的测试依据测试依据测试方法测试方法单元测试模块内部的程序错误消除局部模块的逻辑和功能上的错误和缺陷模块逻辑设计,模块外部说明大量采用白盒测试方法集成测试模块间的集成和调用关系找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题程序结构设计结合使用白盒与黑盒测试方法,采

27、用较多黑盒方法构造测试用例 系统测试整个系统,包括系统中的硬件等对整个系统进行一系列的整体、有效性测试系统结构设计,目标说明书,需求说明书等黑盒测试64集成测试与系统测试的区别集成测试与系统测试的区别65 (1)测试对象。(通过单元测试的模块组成的组件)(2)测试时间。(3)测试方法。(4)测试内容。(单元模块之间的接口及各模块集成的功能)(5)测试目的。(发现各个单元模块之间接口错误)(6)测试角度。 (开发人员的角度)测试用例设计方法(补充)测试用例设计方法(补充)1:面向对象的测试常用方法: 状态转化法 正交试验法状态转换法(黑盒测试)状态转换法(黑盒测试)l状态迁移图法简介:状态迁移图

28、法简介:l1.许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等l2.通过构造能导致状态迁移的事件来测试状态之间的转换,常用于协议测试l3.用这种方法可以设计逆向的测试用例,如状态和事件的非法组合状态图状态图l状态树每一条路径就是一个测试用例正交试验法正交试验法l正交阵列测试系统(Orthogonal Array Testing System,OATS)提供了一种特殊的抽样方法 通过定义一组交互对象的配对方式的组合,以尽力限制测试配置的组合数目的激增。l特点:均衡搭配,整齐划一SNLq 正交表是一种特别的表格,是正交设计的基本工具。正交表是一种特别的表格,是正交设计的基本工具。我们只介绍它的记号、特点和使用方法。我们只介绍它的记号、特点和使用方法。 正交表的记号及含义正交表的记号及含义记号及含义记号及含义 正交表的列数正交表的列数(最多能安排的因素个数,(最多能安排的因素个数,包括交互作用、误差等)包括交互作用、误差等)S正交表的行数正交表的行数(需要做的试验次数)(需要做的试验次数)N各因素的水平数各因素的水平数(各因素的水平数相等)各因素的水平数相等)q正交表正交表的代号的代

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论