第五章 集成测试
合集下载
软件质量保证与测试 第五章 单元测试与集成测试

测试用例的编 写 驱动模块、桩 模块的设计 执行测试用例 记录缺陷
单元测试用例
《缺陷跟踪报 告》
评估 阶段
完备性评估 代码覆盖率评 估
《单元测试报 告》
5.6 单元测试常用工具简介
1. JUnit介绍
2. 在Eclipse中JUnit应用举例
3. Junit+Ant构建自动的单元测试
4. CheckStyle/PMD与FindBug的使用
5.2.1 编码的标准和规范
标准: 建立起来必须遵守的规则 规范: 建议最佳做法,推荐更好方式 实施代码规范的原因: 可靠性 可读性和可维护性 可移植性
C语言编码规范
规范 规范内容 编号 1 一行代码只做一件事情 2 3 代码行的最大长度宜控制在70-80个字 函数与函数之间,说明语句和执行语句 之间最好加空行 在程序开头加注释,说明基本信息;在 重要函数处加注释,说明其功能 不要漏掉函数的参数和返回值,如果没 有,用void表示 是否 通过
检查要点是代码是否符合标准和规范,是否有 逻辑错误
审查(Inspection)
以会议形式,制定目标、流程和规则
按缺陷检查表(不断完善)逐项检查
发现问题适当记录,避免现场修改
发现重大缺陷,改正后会议需要重开。
走查与审查的比较
准备 走 查 审 查 通读设计和编码 事先准备Spec、程序设计 文档、源代码清单、代码 缺陷检查表等 非正式会议 正式会议 开发人员为主 项目组成员包括测试人员 无 缺陷检查表 会议记录 代码标准规范 无逻辑错误 静态分析错误报告 代码标准规范 无逻辑错误
单元测试的过程与文档管理时间依据任务成果计划阶段详细设计阶段后软件需求规格说明书详细设计说明制定测试计划单元测试计划设计阶段单元测试计划提交后单元测试计划软件详细设计说明驱动模块桩模块的设计单元测试用例执行阶段编码完成单元测试用例软件需求规格说明书详细设计说明执行测试用例记录缺陷缺陷跟踪报评估阶段单元测试用例缺陷跟踪报告缺陷检查表完备性评估代码覆盖率评阿迪达斯三条纹标志是由阿迪达斯的创办人阿迪达斯勒设计的三条纹的阿迪达斯标志代表山区指出实现挑战成就未来和不断达成目标的愿望
第5章 集成测试

8
5.1 集成测试概述
5.1.4 集成测试的层次与原则
2.集成测试的原则
(1)所有公共接口必须被测试到; (2)关键模块必须进行充分测试; (3)集成测试应当按一定层次进行; (4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关 系; (5)集成测试应当尽早开始,并以概要设计为基础; (6)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通; (7)当测试计划中的结束标准满足时,集成测试才能结束; (8)当接口发生修改时,涉及到的相关接口都必须进行回归测试; (9)集成测试应根据集成测试计划和方案进行,不能随意测试; (10)项目管理者应保证测试用例经过审核; (11)测试执行结果应当如实的记录。
价
图1.1 软件测试过程
独立 的测 试机
构
向用户 表明系 统可以 像用户 预的那 样工作
用 户 需 求 规 范
验收测试
2
5.1 集成测试概述
集成测试主要关注下列问题: (1)模块间的数据传递是否正确? (2)一个模块的功能是否会对另一个模块 的功能产生错误的影响? (3)全局数据结构是否有问题,会不会被 异常修改? (4)块组合起来的功能能否满足要求? (5)集成后,各个模块的累积误差是否会 扩大,是否达到不可接受的程度?
第5章 集成测试
5.1 集成测试概述 5.1.1 集成测试的概念 集成(Integration)是指把多个单 元组合起来形成更大的单元。 集成测试(Integration Testing)是 在假定各个软件单元已经通过了单元测 试的前提下,检查各个软件单元之间的 相互接口是否正确。
1
模块中 有无故
9
5.2 集成测试策略
驱动程序/驱动模块(driver),用以模拟被 测模块的上级模块。驱动模块在集成测试中接 受测试数据,把相关的数据传送给被测模块, 启动被测模块,并打印出相应的结果。
5.1 集成测试概述
5.1.4 集成测试的层次与原则
2.集成测试的原则
(1)所有公共接口必须被测试到; (2)关键模块必须进行充分测试; (3)集成测试应当按一定层次进行; (4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关 系; (5)集成测试应当尽早开始,并以概要设计为基础; (6)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通; (7)当测试计划中的结束标准满足时,集成测试才能结束; (8)当接口发生修改时,涉及到的相关接口都必须进行回归测试; (9)集成测试应根据集成测试计划和方案进行,不能随意测试; (10)项目管理者应保证测试用例经过审核; (11)测试执行结果应当如实的记录。
价
图1.1 软件测试过程
独立 的测 试机
构
向用户 表明系 统可以 像用户 预的那 样工作
用 户 需 求 规 范
验收测试
2
5.1 集成测试概述
集成测试主要关注下列问题: (1)模块间的数据传递是否正确? (2)一个模块的功能是否会对另一个模块 的功能产生错误的影响? (3)全局数据结构是否有问题,会不会被 异常修改? (4)块组合起来的功能能否满足要求? (5)集成后,各个模块的累积误差是否会 扩大,是否达到不可接受的程度?
第5章 集成测试
5.1 集成测试概述 5.1.1 集成测试的概念 集成(Integration)是指把多个单 元组合起来形成更大的单元。 集成测试(Integration Testing)是 在假定各个软件单元已经通过了单元测 试的前提下,检查各个软件单元之间的 相互接口是否正确。
1
模块中 有无故
9
5.2 集成测试策略
驱动程序/驱动模块(driver),用以模拟被 测模块的上级模块。驱动模块在集成测试中接 受测试数据,把相关的数据传送给被测模块, 启动被测模块,并打印出相应的结果。
第5章集成测试

举例: 举例:
B E
A C D F A B C D E F
d1 E
d2 B E
d3 C
d4 F
d5 D F
优点
可以尽早的验证底层模块的行为。 可以尽早的验证底层模块的行为。 提高了测试效率; 提高了测试效率; 对实际被测模块的可测试性要求较少; 对实际被测模块的可测试性要求较少; 减少了桩模块的工作量; 减少了桩模块的工作量 容易对错误进行定位。 容易对错误进行定位。
二、基于功能分解的集成
实施策略
非渐增式集成 渐增式集成
非渐增式集成
定义
又叫大爆炸集成( 又叫大爆炸集成(Big-bang Integration) ) 把所有通过了单元测试的模块按设计要求, 把所有通过了单元测试的模块按设计要求,一次 全部组装起来,然后进行整体测试。 全部组装起来,然后进行整体测试。
举例: 举例:
自 顶 向 下 集 成
A B E C D F
A B E C D F A B C D E F
深度优先
A S1 S2 测试 A A B E C S3 B E S 3 B S4 A S2 S3 B E A S2 S3
加入B 加入 A C D
加入E 加入 A
B E
C 加入F 加入
D F
加入C 加入
F L
G M
自顶向下集成步骤: 自顶向下集成步骤:
(1)以主控模块作为测试驱动模块,把对主控模块进 以主控模块作为测试驱动模块, 以主控模块作为测试驱动模块 行单元测试时引入的所有桩模块用实际模块替代 (2)依据所选的集成策略,每次只替代一个桩模块 依据所选的集成策略, 依据所选的集成策略 (3)每集成一个模块立即测试一遍 每集成一个模块立即测试一遍 (4)只有每组测试完成后,才着手替换下一个桩模块 只有每组测试完成后, 只有每组测试完成后 (5)为避免引入新错误,须不断地进行回归测试 为避免引入新错误, 为避免引入新错误 从第(2)步开始,循环执行上述步骤, 从第 步开始,循环执行上述步骤,直至整个程序 步开始 结构构造完毕。 结构构造完毕。
软件测试(集成测试)

集成旳方式有两种: 深度优先组装法 广度优先组装法
18
深度优先组装方式
19
广度优先组装方式
20
集成环节
(1)以主模块为所测模块兼驱动模块,全部直属于主 模块旳下属模块全部用桩模块对主模块进行测试。
(2)采用深度优先或广度优先旳策略,用实际模块替 代相应桩模块,再用桩替代它们旳直接下属模块, 与已测试旳模块或子系统集成为新旳子系统。
集成
确认
系统
测试
测试
测试
装配好
确认
可运
测试过 旳软件 旳模块
旳软件
行旳 软件
4
什么是集成测试
也叫做组装测试、联合测试、子系统测试和 部件测试。
是在单元测试旳基础上,将全部模块按照概 要设计要求组装成为子系统或系统,进行集 成测试。
5
单元测试、集成测试与系统测试旳差别
对象
目旳
测试根据 测试措施
单元 测试
模块内部 程序错误
消除局部模块逻辑 和功能上旳错误和
缺陷
模块逻辑设计 模块外部阐明
大量采用白 盒测试措施
集成 测试
模块间旳 集成和调 用关系
找出与软件设计有
关旳程序构造,模 块调用关系,模块
程序构造设计
间接口方面旳问题
灰盒测试, 采用较多黑 盒措施构造 测试用例
系统 测试
整个系统, 涉及系统 软硬件等
从具有最小依赖性旳底层组件开始,按照依赖 关系树旳构造,逐层向上集成,以检验系统旳 稳定性。
集成示意图:
27
集成环节
(1)起始于模块依赖关系树旳底层叶子模块,也能 够把两个或多种叶子模块合并到一起进行测试
(2)使用驱动模块对环节1选定旳模块(或模块组) 进行测试
18
深度优先组装方式
19
广度优先组装方式
20
集成环节
(1)以主模块为所测模块兼驱动模块,全部直属于主 模块旳下属模块全部用桩模块对主模块进行测试。
(2)采用深度优先或广度优先旳策略,用实际模块替 代相应桩模块,再用桩替代它们旳直接下属模块, 与已测试旳模块或子系统集成为新旳子系统。
集成
确认
系统
测试
测试
测试
装配好
确认
可运
测试过 旳软件 旳模块
旳软件
行旳 软件
4
什么是集成测试
也叫做组装测试、联合测试、子系统测试和 部件测试。
是在单元测试旳基础上,将全部模块按照概 要设计要求组装成为子系统或系统,进行集 成测试。
5
单元测试、集成测试与系统测试旳差别
对象
目旳
测试根据 测试措施
单元 测试
模块内部 程序错误
消除局部模块逻辑 和功能上旳错误和
缺陷
模块逻辑设计 模块外部阐明
大量采用白 盒测试措施
集成 测试
模块间旳 集成和调 用关系
找出与软件设计有
关旳程序构造,模 块调用关系,模块
程序构造设计
间接口方面旳问题
灰盒测试, 采用较多黑 盒措施构造 测试用例
系统 测试
整个系统, 涉及系统 软硬件等
从具有最小依赖性旳底层组件开始,按照依赖 关系树旳构造,逐层向上集成,以检验系统旳 稳定性。
集成示意图:
27
集成环节
(1)起始于模块依赖关系树旳底层叶子模块,也能 够把两个或多种叶子模块合并到一起进行测试
(2)使用驱动模块对环节1选定旳模块(或模块组) 进行测试
集成测试PPT课件

(4)缺点:
➢增加桩模块的开发和维护成本。 ➢容易出现回归测试或多次回归。 ➢可能会导致底层模块特别是被重用的或被多个模块调用的模块测试不够充分。
(5)适用范围:
➢软件的体系结构控制比较清晰。
➢软件的体系结构的高层模块接口变化少。
集成测试控制 驱动
已 集 成 模 块
新 增 模 块
桩
桩
桩
.
图5.2 一个系统的集成测试环境示意图
6
5.2集成测试环境及过程(续)
➢ 集成测试过程 计划阶段
用例分析和设计阶段 实施阶段
分析评估阶段
一般把集成测试过程分为以上5个阶段,但是在实际的集成过程可能其阶段有所不同,
可以参考IEEE制定的相关标准。
(2)集成方法与过程:
➢以主模块为所测模块兼驱动模块,所有直属主模块的下属模块全部用桩模块对主模块进行测试。
A
➢采用深度遍历或广度遍历的策略,用实际源代码模块替换相应桩模块,再用桩代替它们的下属模块,
与已经测试的模块或子系统集成为新的子系统,每次只替换一个桩为源代码。
B
C
D
➢进行回归测试(即重新执行以前的全部测试或部分测试用例),排除集成过程中引起错误的可能。 E
➢各个模块集成起来后,通过模块接口的交互的参数数量,参数数据类型,参数顺序等是否一致, 是否会有数据丢失,是否能够按期望的要求传递给另外一个模块。
➢各个模块集成起来后,是否仍然存在单元测试时所没发现的问题。
➢通过单元测试的子功能模块集成到一起能否实现所期望的父功能。例如,在ATM系统中,卡检验 模块、密码验证模块、存款处理模块、显示打印模块集成后是否能实现正常的取款功能。
H
➢判断是否所有的模块都已经集成到系统中,是则结束测试,否则转到第2步去继续执行。
➢增加桩模块的开发和维护成本。 ➢容易出现回归测试或多次回归。 ➢可能会导致底层模块特别是被重用的或被多个模块调用的模块测试不够充分。
(5)适用范围:
➢软件的体系结构控制比较清晰。
➢软件的体系结构的高层模块接口变化少。
集成测试控制 驱动
已 集 成 模 块
新 增 模 块
桩
桩
桩
.
图5.2 一个系统的集成测试环境示意图
6
5.2集成测试环境及过程(续)
➢ 集成测试过程 计划阶段
用例分析和设计阶段 实施阶段
分析评估阶段
一般把集成测试过程分为以上5个阶段,但是在实际的集成过程可能其阶段有所不同,
可以参考IEEE制定的相关标准。
(2)集成方法与过程:
➢以主模块为所测模块兼驱动模块,所有直属主模块的下属模块全部用桩模块对主模块进行测试。
A
➢采用深度遍历或广度遍历的策略,用实际源代码模块替换相应桩模块,再用桩代替它们的下属模块,
与已经测试的模块或子系统集成为新的子系统,每次只替换一个桩为源代码。
B
C
D
➢进行回归测试(即重新执行以前的全部测试或部分测试用例),排除集成过程中引起错误的可能。 E
➢各个模块集成起来后,通过模块接口的交互的参数数量,参数数据类型,参数顺序等是否一致, 是否会有数据丢失,是否能够按期望的要求传递给另外一个模块。
➢各个模块集成起来后,是否仍然存在单元测试时所没发现的问题。
➢通过单元测试的子功能模块集成到一起能否实现所期望的父功能。例如,在ATM系统中,卡检验 模块、密码验证模块、存款处理模块、显示打印模块集成后是否能实现正常的取款功能。
H
➢判断是否所有的模块都已经集成到系统中,是则结束测试,否则转到第2步去继续执行。
《集成测试》课件

4
系统测试
测试整个软件系统的完整性和功能。
5
回归测试
重新执行以前的测试用例,以确保系统在进行更改后仍保持正常运行。
集成测试的方法
静态集成测试
通过检查代码和设计文档等静态元素来检测潜在问 题。
动态集成测试
通过执行软件系统来验证其功能和性能。
集成测试的工具
JUnit
一个用于Java开发的广泛使用的单元测试框架。
集成测试的缺点
1 测试用例的设计难度较高
设计涵盖不同组件之间交互和协作的测试用例是一项挑战。
2 集成测试需要较高的人力和物力资源
进行集成测试需要投入大量的人力和物力资源。
3 集成测试工作量大,耗时长
进行全面的集成测试需要耗费大量的时间和努力。
结论
1 集成测试是软件测试的重要环节
集成测试能够发现系统中的缺陷,确保软件的质量。
《集成测试》PPT课件
欢迎大家来到今天的课程!在本节课中,我们将学习关于集成测试的重要性 以及相关的分类、过程、方法、工具和注意事项。让我们一起探索集成测试 的世界吧!
什么是集成测试
集成测试是一种测试方法,旨在验证软件系统在组件之间进行正确的交互和协作,并确保整体系统的功能和性 能达到预期。
集成测试的分类
2 应遵测试计划
制定和遵守详细的测试计 划以确保测试的完整性和 准确性。
3 需要充分的测试数据
使用各种类型的测试数据 来测试各种情况和边界值。
集成测试的优点
可以发现系统缺陷
通过集成测试,我们可以发现系统中的潜在问题和缺陷。
可以减少维护成本
及早检测和修复问题可以减少软件维护的成本。
可以提升系统质量
高质量的集成测试可以确保系统的功能和性能达到预期。
集成测试方法

实用 软件测试方法与应用(集成测试)
第5章 集成测试
本章着重讲述集成测试的整个过程——集成 测试的基本理论、测试计划的编制、测试过程 中的注意事项。
集成测试,也叫组装测试或联合测试。在单 元测试的基础上,将所有模块按照设计要求 (如根据结构图)集成为子系统或系统,进行 集成测试。
2006-9-19
2006-9-19
5.1.3 集成测试、单元测试与系统测试的差别
测试类型 对象 模块内部的 程序错误 模块间的集 成和调用关 系 整个系统, 包括系统中 的硬件等 目的 消除局部模块的逻辑和 功能上的错误和缺陷 找出与软件设计相关的 程序结构,模块调用关 系,模块间接口方面的 问题 对整个系统进行一系列 的整体、有效性测试 测试依据 模块逻辑设 计,模块外 部说明 程序结构设 计 系统结构设 计,目标说 明书,需求 说明书等 测试方法 大量采用白盒测 试方法 结合使用白盒与 黑和测试方法, 采用较多黑盒方 法构造测试用例 黑盒测试
单元测试
集成测试
系统测试
由以上可以看出,整个软件系统的测试过程是:先对各个软件模块进行单元测 试,然后把经过单元测试的各个模块组装起来进行集成测试,最后把经过 集成测试的子系统合成软件版本,对照需求规格,在实际环境下,进行系 统功能验证。
2006-9-19
5.2 集成测试的基本方案
一般来说,按测试过程中组合模块的方式,有两种不同的集成方式:一次性 集成方式和增值式集成方式。 1.一次性集成方式 一次性集成方式是一种非增殖集成方式,也叫整体拼装。 按这种集成方 式,首先对每个模块分别进行模块测试,然后再把所有模块集成在一起进 行测试,最终得到要求的软件系统。例如,有一块系统结构,如图(a) 所示,其单元测试和集成顺序如图(b)所示。
第5章 集成测试
本章着重讲述集成测试的整个过程——集成 测试的基本理论、测试计划的编制、测试过程 中的注意事项。
集成测试,也叫组装测试或联合测试。在单 元测试的基础上,将所有模块按照设计要求 (如根据结构图)集成为子系统或系统,进行 集成测试。
2006-9-19
2006-9-19
5.1.3 集成测试、单元测试与系统测试的差别
测试类型 对象 模块内部的 程序错误 模块间的集 成和调用关 系 整个系统, 包括系统中 的硬件等 目的 消除局部模块的逻辑和 功能上的错误和缺陷 找出与软件设计相关的 程序结构,模块调用关 系,模块间接口方面的 问题 对整个系统进行一系列 的整体、有效性测试 测试依据 模块逻辑设 计,模块外 部说明 程序结构设 计 系统结构设 计,目标说 明书,需求 说明书等 测试方法 大量采用白盒测 试方法 结合使用白盒与 黑和测试方法, 采用较多黑盒方 法构造测试用例 黑盒测试
单元测试
集成测试
系统测试
由以上可以看出,整个软件系统的测试过程是:先对各个软件模块进行单元测 试,然后把经过单元测试的各个模块组装起来进行集成测试,最后把经过 集成测试的子系统合成软件版本,对照需求规格,在实际环境下,进行系 统功能验证。
2006-9-19
5.2 集成测试的基本方案
一般来说,按测试过程中组合模块的方式,有两种不同的集成方式:一次性 集成方式和增值式集成方式。 1.一次性集成方式 一次性集成方式是一种非增殖集成方式,也叫整体拼装。 按这种集成方 式,首先对每个模块分别进行模块测试,然后再把所有模块集成在一起进 行测试,最终得到要求的软件系统。例如,有一块系统结构,如图(a) 所示,其单元测试和集成顺序如图(b)所示。
软件测试过程自顶向下和自底向上集成

在输入/输出模块接入系统以前,在桩 模块中表示测试数据有一定困难;
软件单元实现之前完成核心软件部件 的集成测试;
由于桩模块不能模拟数据,如果模块 整个程序(系统)的框架要后期才能
间的数据流不能构成有向的非环状图, 看到;
一些模块的测试数据难于生释测试输出往往也是困难的。 问题和资源竞争问题。
本节内容就讲到这里,谢谢,再见!
动; ② 根据集成的路径(深度优先或广度有限),每次加入一个
或者几个已经完成了单元测试的下级模块,其它相关模块 均用桩模块代替; ③ 进行集成测试,测试集成新模块后有没有产生错误; ④ 上述过程从第2步重复进行,直到所有单元都集成测试完毕 。 以深度优先为例,自顶向下增量式集成的过程如下图所示
自顶 向下 增量式 集成 (深度 优先)
自底向上增量式集成
自底向上的增量式集成优点如下: ① 多组底层叶节点的测试和集成可以并行进行 ② 不限制可测试性,对底层模块的调用和测试较为分 ③ 实现方便,不需要桩模块 ④ 测试人员能较好地锁定软件故障所在位置
自底向上增量式集成
自底向上的增量式集成缺点如下: ① 驱动模块的开发成本较大 ② 高层构件的可操作性和互操作性测试得不够充分 ③ 对于某些开发模式不适用,如使用XP开发方法,它会 要求测试人员在全部软件单元实现之前完成核心软件部件 的集成测试。
自顶向下增量式集成
自顶向下增量式集成是指,依据程序结构图,从 顶层开始,按照层次由上到下的顺序逐步扩大集成的 范围,增加集成的模块,来进行集成测试。
在逐步扩大集成范围,增加集成模块的具体路径 选择上,又可以分为广度优先和深度优先。
自顶向下增量式集成
具体步骤如下: ① 从软件结构图的树根开始,将程序的主控模块作为测试驱
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自顶向下集成和自底向上集成法的优缺点: 自顶向下集成的方式和自底向上集成的方式各有优缺点。一般来讲, 一种方式的优点是另一种方式的缺点。 1.自顶向下集成方式的缺点是需要建立桩模块。要使桩模块能够模 拟实际子模块的功能十分困难,同时涉及复杂算法,真正输入/输 出的模块一般在底层,他们是最容易出问题的模块,到测试和集 成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。 优点是能够较早地发现在主要控制方面的问题。 2.自底向上集成方式的缺点是“程序一直未能作为一个实体存在, 直到最后一个模块加上去后才形成一个实体”。就是说,在自底 向上集成和测试的过程中,对主要的控制直到最后才接触到。 优点是不需要桩模块,而建立驱动模块一般比建立桩模块容易, 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和 测试,可以把最容易出问题的部分在早期解决。此外,自底向上 集成的方式可以实施多个模块的并行测试,提高测试效率。
第5章 集成测试
1
目· 录
集成测试策略
集成测试用例设计
基本概念
集成(Integration):指把多个单元组合起来形成更大 的单元。 集成测试(Integration Testing): 也叫组装测试或联合测试是在假定各个软件单元已经 通过了单元测试的前提下,检查各个软件单元之间的 相互接口是否正确。 一般情况,都采用黑盒测试,但随着软件复杂度的增 加,常常使用灰盒测试。
36
实例——ATM
例子——一个SATM的实现及测试
一个SATM(simplify ATM),其功能有: 1、验证用户 的密码 收据 2、取款 卡入口 操作显示屏幕 3、存款 B1 4、查余额
B2 B3 现金出口 存款入口
ATM 操作界面示意图
界面
1欢迎
2输入密码
3密码错误
21
深度优先方式: ——首先集成在结构中的一个主控路径下的所有 模块,主控路径的选择是任意的。 广度优先方式: ——首先沿着水平方向,把每一层中所有直接隶 属于上一层的模块集成起来,直到底层。
例子
【例5.2】对如图5.3所示的程序,采用自顶向下集成方法,按照深度优先方 式进行集成测试。
A
A
A
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
优点: 集合了自顶向下和自底向上两种策略的优点 缺点: 中间层测试不充分 适用范围: 适应于大部分软件开发项目
3
模块划分 ——产品开发过程
系统结构图:
软件结构图: 模块结构图:
配用电监测与管理系统由很多个子系统组成,如通 讯子系统、数据采集子系统、报警服务子系统、前 臵机应用子系统等。 而每个子系统又由多个功能模块组成,如数据采集 子系统由档案参数模块、任务处理模块、规约解析 模块等组成
TCP通讯模块 规约过滤模块 档案参数 模块 任务处理模块 规约解析模块 通讯日志, 文件输出
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.渐增式测试方法测试更彻底 5.渐增式测试方法需要较多的机器时间 6.使用非渐增式测试方法,可以并行测试。
测试 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
优点: 对底层组件行为较早验证; 工作最初可以并行集成,比自顶向下效率高; 减少了桩的工作量; 能较好锁定软件故障所在位臵。 缺点: 驱动的开发工作量大; 对高层的验证被推迟,设计上的错误不能被及时发现。 适用范围: 适应于底层接口比较稳定; 高层接口变化比较频繁; 底层组件较早被完成。
数据库输出模块 数据库接口
集成测试的层次
对于传统软件来说,按集成粒度不同,可以把集成测试 分为3个层次,即: (1)模块间集成测试 (2)子系统内集成测试 (3)子系统间集成测试 对于面向对象的应用系统来说,按集成粒度不同,可以 把集成测试分为2个层次: (1)类内集成测试 (2)类间集成测试
模块划分的原则
10
我们已经知道,集成测试是把功能模块或程序单 元组合起来进行测试,发现模块在组合过程中的 缺陷。那么,系统中的各个模块如何组合呢?是 全部同时组装还是逐渐组装模块?这是集成策略 将要解答的问题。
集成测试策略
集成的基本策略比较多,分类比较复杂,但是都可以归结 为以下两类: 非渐增式集成策略——一步到位 Non-Incremental Testing 渐增式集成策略——逐步实现 Incremental Testing
管理会话
通道
槽
屏幕
键盘
管理会话功能分解树
管理会话
验证卡
验证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卡槽
26
步骤:1.把低层模块组合成实现某个特定软 件子功能的族; 2.写 一个驱动程序,协调测试数据的输入 和输出; 3.对由模块组成的子功能族进行测试; 4.去掉驱动程序,沿软件结构自下向上移动, 把子功能族组合起来形成更大的子功能族。
27
例子
【例5.3】对如图5.3所示的程序,采用自底向上集成方法, 按照深度优先方式进行集成测试。
自顶向下增量式集成适用范围:
产品控制结构比较清晰和稳定; 高层接口变化较小; 底层接口未定义或经常可能被修改; 产口控制组件具有较大的技术风险,需要尽早被验证; 希望尽早能看到产品的系统功能行为。
2.自底向上集成 自底向上测试从“原子”模块(即在软件结 构最底层的模块)开始组装和测试。因为是 从底部向上结合模块,总能得到所需的下层 模块处理功能,所以不需要桩模块。
集成测试的原则
(1)所有公共接口必须被测试到; (2)关键模块必须进行充分测试; (3)集成测试应当按一定层次进行; (4)集成测试策略选择应当综合考虑质量、成本和进度 三者之间的关系; (5)集成测试应当尽早开始,并以概要设计为基础; (6)在模块和接口的划分上,测试人员应该和开发人员 进行充分沟通; (7)当测试计划中的结束标准满足时,集成测试才能结 束; (8)当接口发生修改时,涉及到的相关接口都必须进行 回归测试; (9)集成测试应根据集成测试计划和方案进行,不能随 意测试; (10)项目管理者应保证测试用例经过审核; (11)测试执行结果应当如实的记录。
30
三明治集成
三明治集成是一种混合增量式测试策略,综合 了自顶向下和自底向上两种集成方法的优点。 这种方法桩模块和驱动模块的开发工作都比较 小,不过代价是在一定程度上增加了定位缺陷 的难度。
31
基本过程: 1.确定以哪一层为界来进行集成(如例中所示, 确定以B模块为界); 2.对模块B及其所在层下面的各层使用自底向上的 集成策略; 3.对模块B所在层上面的层次使用自顶向下的集成 策略; 4.对模块B所在层各模块同相应的下层集成; 5.对系统进行整体测试。
单元 编号 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 取账户状态 发出每日事务处理
4卡无效
5选择交易类型
6选择账户类型
7输入取款金额