第五章 集成测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
26
步骤:1.把低层模块组合成实现某个特定软 件子功能的族; 2.写 一个驱动程序,协调测试数据的输入 和输出; 3.对由模块组成的子功能族进行测试; 4.去掉驱动程序,沿软件结构自下向上移动, 把子功能族组合起来形成更大的子功能族。
27
例子
【例5.3】对如图5.3所示的程序,采用自底向上集成方法, 按照深度优先方式进行集成测试。
集成测试的原则
(1)所有公共接口必须被测试到; (2)关键模块必须进行充分测试; (3)集成测试应当按一定层次进行; (4)集成测试策略选择应当综合考虑质量、成本和进度 三者之间的关系; (5)集成测试应当尽早开始,并以概要设计为基础; (6)在模块和接口的划分上,测试人员应该和开发人员 进行充分沟通; (7)当测试计划中的结束标准满足时,集成测试才能结 束; (8)当接口发生修改时,涉及到的相关接口都必须进行 回归测试; (9)集成测试应根据集成测试计划和方案进行,不能随 意测试; (10)项目管理者应保证测试用例经过审核; (11)测试执行结果应当如实的记录。
A
SB
SC
SD
B
SC
SD
B
SC
SD
B
SC
SD
SE
(a)测试A A
SF
(b)测试B
E
SF
(c)测试E
E
F
(d)测试F A
A
B
C
SD
B
C
SD
B
C
D
E
F
SG
E
F
G
E
F
G
(e)测试C
(f)测试G 图5.5 自顶向下集成
(g)测试D
23
优点: 较早地验证了主要控制和判断点; 按深度优先可以首先实现和验证一个完整的软件功能; 功能较早证实,带来信心; 只需一个驱动,减少驱动器开发的费用; 支持故障隔离。 缺点: 桩的开发量大; 底层验证被推迟; 底层组件测试不充分。
1.对主控模块进行测试,测试时用桩模块代替所有 直接附属于主控模块的模块; 2.根据选定的结合策略(深度优先或宽度优先), 每次用一个实际模块代换一个桩模块; 3.在结合进一个模块的同时进行测试; 4.为了保证加入模块没有引进新的错误,可能需要 进行回归测试。 从2开始不断重复进行上述过程,直到构造起完整的 软件结构为止。
36
实例——ATM
例子——一个SATM的实现及测试
一个SATM(simplify ATM),其功能有: 1、验证用户 的密码 收据 2、取款 卡入口 操作显示屏幕 3、存款 B1 4、查余额
B2 B3 现金出口 存款入口
ATM 操作界面示意图
界面
1欢迎
2输入密码
3密码错误
测试 E
测试 F
测试 (B、E、 F)
测试 G
测试 D
测试 (C、G)
测试 (A、B、C D、E、F、 G)
A
B
C
D
E
F
G
图5.6 自底向上集成
图5.3 程序结构图
28
优点: 对底层组件行为较早验证; 工作最初可以并行集成,比自顶向下效率高; 减少了桩的工作量; 能较好锁定软件故障所在位臵。 缺点: 驱动的开发工作量大; 对高层的验证被推迟,设计上的错误不能被及时发现。 适用范围: 适应于底层接口比较稳定; 高层接口变化比较频繁; 底层组件较早被完成。
30
三明治集成
三明治集成是一种混合增量式测试策略,综合 了自顶向下和自底向上两种集成方法的优点。 这种方法桩模块和驱动模块的开发工作都比较 小,不过代价是在一定程度上增加了定位缺陷 的难度。
31
基本过程: 1.确定以哪一层为界来进行集成(如例中所示, 确定以B模块为界); 2.对模块B及其所在层下面的各层使用自底向上的 集成策略; 3.对模块B所在层上面的层次使用自顶向下的集成 策略; 4.对模块B所在层各模块同相应的下层集成; 5.对系统进行整体测试。
数据库输出模块 数据库接口
集成测试的层次
对于传统软件来说,按集成粒度不同,可以把集成测试 分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以 把集成测试分为2个层次: (1)类内集成测试 (2)类间集成测试
模块划分的原则
19
1.自顶向下集成
自顶向下集成方法是一个日益为人们广泛采用的 测试和组装软件的途径。从主控制模块(主程序), 开始,沿着程序的控制层次向下移动,逐渐把各 个模块结合起来。再把附属于(及最终附属于) 主控制模块的那些模块组装到程序结构中去,或 者使用深度优先的策略,或者使用宽度优先的策 略。
20
步骤:
第5章 集成测试
1
目· 录
集成测试策略
集成测试用例设计
基本概念
集成(Integration):指把多个单元组合起来形成更大 的单元。 集成测试(Integration Testing): 也叫组装测试或联合测试是在假定各个软件单元已经 通过了单元测试的前提下,检查各个软件单元之间的 相互接口是否正确。 一般情况,都采用黑盒测试,但随着软件复杂度的增 加,常常使用灰盒测试。
15
例题
【例5.1】 对如图5.3所示的程序,采用非渐增式集成方法 进行集成测试。
A
B
C
D
E
F
G
图5.3 程序结构图
16
测试 B 测试 D
测试 A 测试 C 测试 E 测试 F 测试 (A、B、C D、E、F、G)
测试 G
Fra Baidu bibliotek
图5.4 非渐增式集成
定位和改正错误非常困难。
17
这种一次性集成方式将所测模块连接起来进行测试,但是 一次试运行成功地可能性并不大。其结果发现有错误,但 茫然找不到原因,差错和改错都会遇到困难。 适应于 一个维护型或被测试系统较小的项目 优点: ①方法简单 ②允许多测试人员同时并行工作,人力物力资源利用率较 高 缺点: ①必须为每个模块设定桩模块和驱动模块 ②一旦集成后包含多种错误,难以纠正。
集成测试策略小结:
集成测试策略
非增量式集成
增量式集成
大爆炸式集成
自顶向下集成
自底向上集成
混合式集成
深度优先
广度优先
三明治集成
改进的三明治 集成
非渐增式集成和渐增式集成方法的比较:
1.非渐增式测试方法需要编写的软件较多,工作量较大;渐增 式测试方法开销小。 2.渐增式测试方法发现模块间接口错误早;而非渐增式测试方 法晚。 3.非渐增式测试方法发现错误,较难诊断;而使用渐增式测试 方法,如果发生错误则往往和最近加进来的那个模块有关。 4.渐增式测试方法测试更彻底 5.渐增式测试方法需要较多的机器时间 6.使用非渐增式测试方法,可以并行测试。
10
我们已经知道,集成测试是把功能模块或程序单 元组合起来进行测试,发现模块在组合过程中的 缺陷。那么,系统中的各个模块如何组合呢?是 全部同时组装还是逐渐组装模块?这是集成策略 将要解答的问题。
集成测试策略
集成的基本策略比较多,分类比较复杂,但是都可以归结 为以下两类: 非渐增式集成策略——一步到位 Non-Incremental Testing 渐增式集成策略——逐步实现 Incremental Testing
21
深度优先方式: ——首先集成在结构中的一个主控路径下的所有 模块,主控路径的选择是任意的。 广度优先方式: ——首先沿着水平方向,把每一层中所有直接隶 属于上一层的模块集成起来,直到底层。
例子
【例5.2】对如图5.3所示的程序,采用自顶向下集成方法,按照深度优先方 式进行集成测试。
A
A
A
自顶向下集成和自底向上集成法的优缺点: 自顶向下集成的方式和自底向上集成的方式各有优缺点。一般来讲, 一种方式的优点是另一种方式的缺点。 1.自顶向下集成方式的缺点是需要建立桩模块。要使桩模块能够模 拟实际子模块的功能十分困难,同时涉及复杂算法,真正输入/输 出的模块一般在底层,他们是最容易出问题的模块,到测试和集 成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。 优点是能够较早地发现在主要控制方面的问题。 2.自底向上集成方式的缺点是“程序一直未能作为一个实体存在, 直到最后一个模块加上去后才形成一个实体”。就是说,在自底 向上集成和测试的过程中,对主要的控制直到最后才接触到。 优点是不需要桩模块,而建立驱动模块一般比建立桩模块容易, 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和 测试,可以把最容易出问题的部分在早期解决。此外,自底向上 集成的方式可以实施多个模块的并行测试,提高测试效率。
4卡无效
5选择交易类型
6选择账户类型
7输入取款金额
8余额不足
9金额输入错误
10无法取款
11提取现金
12无法存款
13进行存款
14打印收据
15操作结束
SATM的语境图
键盘 屏幕
终端槽 (卡、收据出 入口)
SATM 系统
终端通道 (现金出入口)
银行服务器
功能分结数
SATM系统
设备接受与控制
银行通信
终端接受与控制
管理会话
通道
槽
屏幕
键盘
管理会话功能分解树
管理会话
验证卡
验证pin
管理事务
结束会话
接受输入
存款
取款
余额
单元 编号 1 A D 2 3 4 E 5
层次 编号 1 1.1 1.1.1 1.1.1.1 1.1.1.2 1.1.1.3 1.1.2 1.1.2.1
单元名称 SATM系统 设备功能与控制 通道功能与控制 取通道状态 控制通道 付现金 槽功能与状态 检查ATM卡槽
两个概念:
驱动模块(driver):用以模拟待测模块的上级模块。 桩模块(stub):也称存根模块,用以模拟待测模块工作 过程中所调用的模块。
14
非渐增式集成
非渐增式集成方法首先对每个子模块进行测试 (即单元测试),然后将所有模块全部集成起来一 次性进行集成测试。此方法只适合于规模较小的应 用系统。 又叫大爆炸式集成(Big Bang)
自顶向下增量式集成适用范围:
产品控制结构比较清晰和稳定; 高层接口变化较小; 底层接口未定义或经常可能被修改; 产口控制组件具有较大的技术风险,需要尽早被验证; 希望尽早能看到产品的系统功能行为。
2.自底向上集成 自底向上测试从“原子”模块(即在软件结 构最底层的模块)开始组装和测试。因为是 从底部向上结合模块,总能得到所需的下层 模块处理功能,所以不需要桩模块。
渐增式集成
渐增式集成与“一步到位”的非渐增式集成相反,它把 程序划分成小段来构造和测试,在这个过程中比较容易定位 和改正错误;对接口可以进行更彻底的测试;可以使用系统 化的测试方法。因此。目前在进行集成测试时普遍采用渐增 式集成方法。 当使用渐增方式把模块结合到程序中去时,有自顶向下 和自底向上两种集成策略。
3
模块划分 ——产品开发过程
系统结构图:
软件结构图: 模块结构图:
配用电监测与管理系统由很多个子系统组成,如通 讯子系统、数据采集子系统、报警服务子系统、前 臵机应用子系统等。 而每个子系统又由多个功能模块组成,如数据采集 子系统由档案参数模块、任务处理模块、规约解析 模块等组成
TCP通讯模块 规约过滤模块 档案参数 模块 任务处理模块 规约解析模块 通讯日志, 文件输出
单元 编号 6 7 8 9 10 11 12 13
层次编 号 1.1.2.2 1.1.2.3 1.1.2.4 1.1.2.5 1.2 1.2.1 1.2.2 1.2.3
单元名称 取存款槽状态 控制ATM卡传送器 控制存款放入槽 读ATM卡磁条 银行通信 取PAN的PIN 取账户状态 发出每日事务处理
32
例子
【例5.4】对如图5.3所示的程序,以B模块所在层为界, 采用三明治集成方法进行集成测试。
测试 E 测试 F 测试 G 测试 A 图5.7 三明治集成
测试 (B、E、 F) 测试 (C、G)
测试 (A、B、C D、E、F、 G)
A
B
C
D
E
F
G
图5.3 程序结构图
33
优点: 集合了自顶向下和自底向上两种策略的优点 缺点: 中间层测试不充分 适用范围: 适应于大部分软件开发项目
模块分析是集成测试的第一步。模块划分的好坏 直接影响集成测试的工作量,进度和质量。 模块划分的原则: 1)本次测试希望测试那个模块; 2)把与该模块最紧密的模块集成在一起; 3)再考虑划分后的外围模块,并考虑外围模块和被 集成模块之间的信息流是否容易模拟和控制。
8
集成测试的层次
对于传统软件来说,按集成粒度不同,可以把集成测试 分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以 把集成测试分为2个层次: (1)类内集成测试 (2)类间集成测试