集成测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试方法和技术 - Ch.5集成测试
杨晓花
计算机工程系
1
第五章 集成测试和系统测试
1 集成测试的目的意义 2 集成测试、单元测试与系统测试的差别 3 集成测试模式与方法 4 集成测试过程 5 集成测试完成的标志 6 集成测试的人工测试实训和操作方法
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所
•
•
5
2.集成测试、单元测试与系统测试的差别
测试类型
单元测试
对象
目的
测试依据
模块逻辑设 计,模块外 部说明 程序结构设 计 系统结构设 计,目标说 明书,需求 说明书等
测试方法
大量采用白盒测 试方法 结合使用白盒与 黑和测试方法, 采用较多黑盒方 法构造测试用例 黑盒测试
模块内部的 消除局部模块的逻辑和 程序错误 功能上的错误和缺陷 找出与软件设计相关的 模块间的集 程序结构,模块调用关 成和调用关 系,模块间接口方面的 系 问题 整个系统, 对整个系统进行一系列 包括系统中 的整体、有效性测试 的硬件等
16
一个典型的非增量式集成测试方案示意图(大棒集成):
A B E (a) d4 E (e) d5 F (f) C D F
d1
d2
d3
B
s1 (b)
D
s2 (c) A s3 s4 (g)
C
(d)
s5
17
3.5 三明治集成方法(Sandwich Integration)
注意到模块B、C、D 未被独立测试到
完成这3个单元测试后,再按(d)和(e)的形式,分别将模块B和E及模块 D和F连接起来,再配以驱动模块d4和d5实施部分集成测试。 最后按图(f)的形式完成整体的集成测试。
14
3.3. 混合策略(Modified Top-down Integration)
混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件 结构中较下层,使用的是“自底向上”法,两者相结合
集成测试
系统测试
由以上可以看出,整个软件系统的测试过程是:先对各个软件 模块进行单元测试,然后把经过单元测试的各个模块组装起来进行 集成测试,最后把经过集成测试的子系统合成软件版本,对照需求 规格,在实际环境下,进行系统功能验证。
6
3 集成测试的模式与方法
集成测试基本可以概括为以下两种: 非渐增式测试模式(一次性集成):先分别测试每个模块,再把所有模 块按设计要求放在一起结合成所要的程序,如大棒模式。 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来 进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
13
一个自底向上增量式集成测试的典型例子
d4 d1 E d2 C d3 F B E (a) (b) (c) (d)
d5 D F (e) B
A C D
E
(f)
F
首先,(a)、(b)、(c)表示树状结构图中处于最下层的叶结点模块E、C 和F,由于它们不再调用其他模块,对它们进行单元测试时,只需配 以驱动模块d1、d2和d3,用来模拟B、A和D对它们的调用。
26
27
6.4测试执行
28
6.5 记录测试结果
29
习题
(1)什么是测试桩?什么是驱动模块? 测试桩:模拟被调用单元的一次性代码。 驱动模块:用以模拟被测模块的上级模块的一次性代码。 (2)集成测试与软件开发中的____阶段相对应。 概要设计阶段 (3)在集成测试阶段,人们关注的一种主要的覆盖是 _______。 a、功能覆盖 b、语句覆盖 c、基本路径覆盖 d、条件覆盖
11
3.2. 自底向上法(Bottom-up Integration)
自底向上法,测试从原子模块 (软件结构最底层的模块)开始集 成以进行测试
12
3.2. 自底向上法——优缺点
与自顶向下法刚好相反。 优点: 不需要桩程序; 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测 试,可以把最容易出问题的部分在早期解决; 自底向上增值的方式可以实施多个模块的并行测试,提高测试效率。 缺点: “程序一直未能作为一个实体存在,直到最后一个模块加上去后才形 成一个实体”。也就是说,在自底向上集成和测试的过程中,对主要的 控制直到最后才接触到。
同时涉及复杂算法,真正输入/输出的模块一般在底层,他们 是最容易出问题的模块,到测试和集成的后期才遇到这些模块, 一旦发现问题导致过多的回归测试。
10
一个按广度优先测试进行集成测试的典型例子
A
A s3
B s4 C D s5
A
s1
s2
B
E
C
D
F
首先,对顶层的模块A进行单元测试,这时需配以被调用子模块s1、 s2、s3,以模拟被它调用的模块B、C和D。 其后,把模块B、C和D与顶层模块A连接起来,再对模块B和D配以被 调用模拟子模块s4和s5以模拟对模块E和F的调用。 最后,去掉被调用模拟子模块s4和s5,把模块E和F集成后再对软件 完整的结构进行测试。
集成测试源自文库程图
集成测试人员的工作过程表
过程 制定集成测试 计划 设计集成测试 实施集成测试 工作结果 集成测试计划 人员和职责 测试设计员负责制定集成测试计划(要 经过评审)
集成测试用例、 测试设计员依照测试计划设计集成测试 测试过程 用例,设计测试过程 测试脚本(可 选) 、 驱动 程序或桩程序 测试设计员负责编制测试脚本(可选), 搭建独立的测试环境(该环境可执行代 码) 开发人员负责将已通过的单元测试的程 序单元提交集成到测试环境中 测试员负责执行测试并记录测试结果 测试设计员负责同编码员、设计员等有 关人员评估此次测试,并生成测试评估 摘要
21 软件测试技术研究组· 中国信息大学
执行集成测试 评估集成测试
测试结果 测试评估摘要
5 集成测试完成的标志
判断集成测试过程完成与否,可按以下几个方面检查:
★成功地执行了测试计划中规定的所有集成测试; ★修正了所发现的错误; ★测试结果通过了专门小组的评审。
集成测试应由专门的测试小组来进行,测试小组由有经验 的系统设计人员和程序员组成。整个测试活动要在评审人 员出席的情况下进行。
三明治集成方法自两头向中间集成。 采用三明治方法的优点是:它将自顶向下和自底向上的集成方 法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已 经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正 集成之前每一个独立的模块没有完全测试过。
18
3.6 改善的三明治集成方法(Modified Sandwich Integration)
测试环境的搭建 说明:本集成测试是基于手机信息管理系统的主框架进行的 组装测试。在进行集成测试时,首先进行集成测试环境以 及系统主框架的搭建。 注意事项:系统框架一定要统一。例如,本测试需要对数 据库进行操作,所以在主框架中应配置连接好数据库文件, 要明确硬件软件要求。 软件硬件要求如下表:
25
6.4.测试执行
改进的三明治集成方法,不仅自两头向中间集成,而且保证 每个模块得到单独的测试,使测试进行得比较彻底 。
19
4 集成测试过程
主要参与角色: ● 项目软件经理(开发负责 人):负责审批测试计划;评审测试 用例。 ● 测试人员:负责完成测试用 例设计、集成测试环境搭建、执行 集成测试、记录测试、撰写测试报 告。 ● 开发人员:将欲测试的内容 集成到测试环境。负责及时修复测 20 试出的问题。 软件测试技术研究组·中国信息大学
有模块按照设计要求(如根据结构图)集成为子系统或系统,进行 集成测试
2
为什么总是集成不起来?
?
算法错误导致无法集成?
3
1.集成测试目的与意义
考虑以下问题: ① 在把各个模块连接起来的时候,穿越模块接口的数据是 否会丢失; ② 各个子功能组合起来,能否达到预期要求的父功能; ③ 一个模块的功能是否会对另一个模块的功能产生不利的 影响; ④ 全局数据结构是否有问题 ⑤ 单个模块的误差积累起来,是否会放大,从而达到不可 接受的程度。 要想发现并排除在模块连接中可能发生的上述问题,就需要进行 集成测试。
非渐增式测试模式优缺点:工作量较小;发现模块间接口错误较晚;发
现错误较难诊断,可以并行测试。 渐增式测试模式优缺点:要编写的软件较多,工作量较大;发现模块间 接口错误较早;测试执行更彻底;需要较多的机器时间。
7
3.1 自顶向下和自底向上集成方法
先来看两个常用的概念:
驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱 动模块在集成测试中接受测试数据,把相关的数据传送给被测模块, 启动被测模块。 桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块 工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进 行很少的数据处理,例如打印入口和返回,以便于检验被测模块与 其下级模块的接口。
8
3.1. 自顶向下法(Top-down Integration)
自顶向下法,从主控模块(主程序) 开始,沿着软件的控制层次向下移 动,逐渐把各个模块结合起来。
组装过程可以采用深度优先策略和 宽度优先策略
9
3.1. 自顶向下法——优缺点
优点: 不需要测试驱动程序; 能够在测试阶段的早期实现并验证系统的主要功能; 能在早期发现上层模块中的接口错误。 缺点: 需要桩程序,要使桩模块能够模拟实际子模块的功能十分困 难;
15
3.4 大棒集成方法(Big-bang Integration)
采用大棒集成方法,先是对每一个子模块进行测试(单元测试 阶段),然后将所有模块一次性的全部集成起来进行集成测试 。 因为所有的模块一次集成的,所以很难确定出错的真正位置、 所在的模块、错误的原因。只适合在规模较小的应用系统中使用。
30
习题
(4)以下有关集成测试的说法中错误的是_____。 a. 自底向上集成的缺点是在早期不能进行并行测试,不能充 分利用人力。 b. 自底向上集成的优点是减少了编写桩模块的工作量。 c. 自顶向下集成的优点是能够较早发现在高层模块接口、控 制等问题。 d. 自顶向下集成缺点是需要设计许多桩模块,测试开销较大。 (5)大棒法集成法把所有模块一次性集成为完整的系统后进 行测试,很容易_________。 a、通过测试 b、整体测试 c、快速查错 31 d、快速排错
4
1.集成测试目的与意义
集成测试有以下不可替代的特点: • 单元测试具有不彻底性,对于模块间接口信息内容的正确性、 相互调用关系是否符合设计无能为力。只能靠集成测试来进 行保障。 同系统测试相比,由于集成测试用例是从程序结构出发的, 目的性、针对性更强,测试项发现问题的效率更高,定位问 题的效率也较高; 定位问题较快,发现问题后比较容易定位,所以能够有效地 加快进度,减少隐患。
习题
(6)一个功能增强性项目,即其以前的产品都很稳定,并且 新增的项目只有少数及格构件被增加或修改。对这样的项 目通常选择哪种集成测试策略? a. 自底向上 b. 自顶向下 c. 三明治集成策略 d. 一次性集成测试
32
作业
P145,思考题2
33
22 软件测试技术研究组· 中国信息大学
6 集成测试的人工测试实训和操作方法
6.1.集成测试检查点
由于软件模型是基于VC++6.0 IDE集成开发的。所以 本次集成测试也是采用VC++6.0 作为开发环境进行测 试。
表:集成测试检查点
23
6.2.管理员登录的测试用例
24
6.3 实施测试
杨晓花
计算机工程系
1
第五章 集成测试和系统测试
1 集成测试的目的意义 2 集成测试、单元测试与系统测试的差别 3 集成测试模式与方法 4 集成测试过程 5 集成测试完成的标志 6 集成测试的人工测试实训和操作方法
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所
•
•
5
2.集成测试、单元测试与系统测试的差别
测试类型
单元测试
对象
目的
测试依据
模块逻辑设 计,模块外 部说明 程序结构设 计 系统结构设 计,目标说 明书,需求 说明书等
测试方法
大量采用白盒测 试方法 结合使用白盒与 黑和测试方法, 采用较多黑盒方 法构造测试用例 黑盒测试
模块内部的 消除局部模块的逻辑和 程序错误 功能上的错误和缺陷 找出与软件设计相关的 模块间的集 程序结构,模块调用关 成和调用关 系,模块间接口方面的 系 问题 整个系统, 对整个系统进行一系列 包括系统中 的整体、有效性测试 的硬件等
16
一个典型的非增量式集成测试方案示意图(大棒集成):
A B E (a) d4 E (e) d5 F (f) C D F
d1
d2
d3
B
s1 (b)
D
s2 (c) A s3 s4 (g)
C
(d)
s5
17
3.5 三明治集成方法(Sandwich Integration)
注意到模块B、C、D 未被独立测试到
完成这3个单元测试后,再按(d)和(e)的形式,分别将模块B和E及模块 D和F连接起来,再配以驱动模块d4和d5实施部分集成测试。 最后按图(f)的形式完成整体的集成测试。
14
3.3. 混合策略(Modified Top-down Integration)
混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件 结构中较下层,使用的是“自底向上”法,两者相结合
集成测试
系统测试
由以上可以看出,整个软件系统的测试过程是:先对各个软件 模块进行单元测试,然后把经过单元测试的各个模块组装起来进行 集成测试,最后把经过集成测试的子系统合成软件版本,对照需求 规格,在实际环境下,进行系统功能验证。
6
3 集成测试的模式与方法
集成测试基本可以概括为以下两种: 非渐增式测试模式(一次性集成):先分别测试每个模块,再把所有模 块按设计要求放在一起结合成所要的程序,如大棒模式。 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来 进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
13
一个自底向上增量式集成测试的典型例子
d4 d1 E d2 C d3 F B E (a) (b) (c) (d)
d5 D F (e) B
A C D
E
(f)
F
首先,(a)、(b)、(c)表示树状结构图中处于最下层的叶结点模块E、C 和F,由于它们不再调用其他模块,对它们进行单元测试时,只需配 以驱动模块d1、d2和d3,用来模拟B、A和D对它们的调用。
26
27
6.4测试执行
28
6.5 记录测试结果
29
习题
(1)什么是测试桩?什么是驱动模块? 测试桩:模拟被调用单元的一次性代码。 驱动模块:用以模拟被测模块的上级模块的一次性代码。 (2)集成测试与软件开发中的____阶段相对应。 概要设计阶段 (3)在集成测试阶段,人们关注的一种主要的覆盖是 _______。 a、功能覆盖 b、语句覆盖 c、基本路径覆盖 d、条件覆盖
11
3.2. 自底向上法(Bottom-up Integration)
自底向上法,测试从原子模块 (软件结构最底层的模块)开始集 成以进行测试
12
3.2. 自底向上法——优缺点
与自顶向下法刚好相反。 优点: 不需要桩程序; 同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测 试,可以把最容易出问题的部分在早期解决; 自底向上增值的方式可以实施多个模块的并行测试,提高测试效率。 缺点: “程序一直未能作为一个实体存在,直到最后一个模块加上去后才形 成一个实体”。也就是说,在自底向上集成和测试的过程中,对主要的 控制直到最后才接触到。
同时涉及复杂算法,真正输入/输出的模块一般在底层,他们 是最容易出问题的模块,到测试和集成的后期才遇到这些模块, 一旦发现问题导致过多的回归测试。
10
一个按广度优先测试进行集成测试的典型例子
A
A s3
B s4 C D s5
A
s1
s2
B
E
C
D
F
首先,对顶层的模块A进行单元测试,这时需配以被调用子模块s1、 s2、s3,以模拟被它调用的模块B、C和D。 其后,把模块B、C和D与顶层模块A连接起来,再对模块B和D配以被 调用模拟子模块s4和s5以模拟对模块E和F的调用。 最后,去掉被调用模拟子模块s4和s5,把模块E和F集成后再对软件 完整的结构进行测试。
集成测试源自文库程图
集成测试人员的工作过程表
过程 制定集成测试 计划 设计集成测试 实施集成测试 工作结果 集成测试计划 人员和职责 测试设计员负责制定集成测试计划(要 经过评审)
集成测试用例、 测试设计员依照测试计划设计集成测试 测试过程 用例,设计测试过程 测试脚本(可 选) 、 驱动 程序或桩程序 测试设计员负责编制测试脚本(可选), 搭建独立的测试环境(该环境可执行代 码) 开发人员负责将已通过的单元测试的程 序单元提交集成到测试环境中 测试员负责执行测试并记录测试结果 测试设计员负责同编码员、设计员等有 关人员评估此次测试,并生成测试评估 摘要
21 软件测试技术研究组· 中国信息大学
执行集成测试 评估集成测试
测试结果 测试评估摘要
5 集成测试完成的标志
判断集成测试过程完成与否,可按以下几个方面检查:
★成功地执行了测试计划中规定的所有集成测试; ★修正了所发现的错误; ★测试结果通过了专门小组的评审。
集成测试应由专门的测试小组来进行,测试小组由有经验 的系统设计人员和程序员组成。整个测试活动要在评审人 员出席的情况下进行。
三明治集成方法自两头向中间集成。 采用三明治方法的优点是:它将自顶向下和自底向上的集成方 法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已 经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正 集成之前每一个独立的模块没有完全测试过。
18
3.6 改善的三明治集成方法(Modified Sandwich Integration)
测试环境的搭建 说明:本集成测试是基于手机信息管理系统的主框架进行的 组装测试。在进行集成测试时,首先进行集成测试环境以 及系统主框架的搭建。 注意事项:系统框架一定要统一。例如,本测试需要对数 据库进行操作,所以在主框架中应配置连接好数据库文件, 要明确硬件软件要求。 软件硬件要求如下表:
25
6.4.测试执行
改进的三明治集成方法,不仅自两头向中间集成,而且保证 每个模块得到单独的测试,使测试进行得比较彻底 。
19
4 集成测试过程
主要参与角色: ● 项目软件经理(开发负责 人):负责审批测试计划;评审测试 用例。 ● 测试人员:负责完成测试用 例设计、集成测试环境搭建、执行 集成测试、记录测试、撰写测试报 告。 ● 开发人员:将欲测试的内容 集成到测试环境。负责及时修复测 20 试出的问题。 软件测试技术研究组·中国信息大学
有模块按照设计要求(如根据结构图)集成为子系统或系统,进行 集成测试
2
为什么总是集成不起来?
?
算法错误导致无法集成?
3
1.集成测试目的与意义
考虑以下问题: ① 在把各个模块连接起来的时候,穿越模块接口的数据是 否会丢失; ② 各个子功能组合起来,能否达到预期要求的父功能; ③ 一个模块的功能是否会对另一个模块的功能产生不利的 影响; ④ 全局数据结构是否有问题 ⑤ 单个模块的误差积累起来,是否会放大,从而达到不可 接受的程度。 要想发现并排除在模块连接中可能发生的上述问题,就需要进行 集成测试。
非渐增式测试模式优缺点:工作量较小;发现模块间接口错误较晚;发
现错误较难诊断,可以并行测试。 渐增式测试模式优缺点:要编写的软件较多,工作量较大;发现模块间 接口错误较早;测试执行更彻底;需要较多的机器时间。
7
3.1 自顶向下和自底向上集成方法
先来看两个常用的概念:
驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱 动模块在集成测试中接受测试数据,把相关的数据传送给被测模块, 启动被测模块。 桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块 工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进 行很少的数据处理,例如打印入口和返回,以便于检验被测模块与 其下级模块的接口。
8
3.1. 自顶向下法(Top-down Integration)
自顶向下法,从主控模块(主程序) 开始,沿着软件的控制层次向下移 动,逐渐把各个模块结合起来。
组装过程可以采用深度优先策略和 宽度优先策略
9
3.1. 自顶向下法——优缺点
优点: 不需要测试驱动程序; 能够在测试阶段的早期实现并验证系统的主要功能; 能在早期发现上层模块中的接口错误。 缺点: 需要桩程序,要使桩模块能够模拟实际子模块的功能十分困 难;
15
3.4 大棒集成方法(Big-bang Integration)
采用大棒集成方法,先是对每一个子模块进行测试(单元测试 阶段),然后将所有模块一次性的全部集成起来进行集成测试 。 因为所有的模块一次集成的,所以很难确定出错的真正位置、 所在的模块、错误的原因。只适合在规模较小的应用系统中使用。
30
习题
(4)以下有关集成测试的说法中错误的是_____。 a. 自底向上集成的缺点是在早期不能进行并行测试,不能充 分利用人力。 b. 自底向上集成的优点是减少了编写桩模块的工作量。 c. 自顶向下集成的优点是能够较早发现在高层模块接口、控 制等问题。 d. 自顶向下集成缺点是需要设计许多桩模块,测试开销较大。 (5)大棒法集成法把所有模块一次性集成为完整的系统后进 行测试,很容易_________。 a、通过测试 b、整体测试 c、快速查错 31 d、快速排错
4
1.集成测试目的与意义
集成测试有以下不可替代的特点: • 单元测试具有不彻底性,对于模块间接口信息内容的正确性、 相互调用关系是否符合设计无能为力。只能靠集成测试来进 行保障。 同系统测试相比,由于集成测试用例是从程序结构出发的, 目的性、针对性更强,测试项发现问题的效率更高,定位问 题的效率也较高; 定位问题较快,发现问题后比较容易定位,所以能够有效地 加快进度,减少隐患。
习题
(6)一个功能增强性项目,即其以前的产品都很稳定,并且 新增的项目只有少数及格构件被增加或修改。对这样的项 目通常选择哪种集成测试策略? a. 自底向上 b. 自顶向下 c. 三明治集成策略 d. 一次性集成测试
32
作业
P145,思考题2
33
22 软件测试技术研究组· 中国信息大学
6 集成测试的人工测试实训和操作方法
6.1.集成测试检查点
由于软件模型是基于VC++6.0 IDE集成开发的。所以 本次集成测试也是采用VC++6.0 作为开发环境进行测 试。
表:集成测试检查点
23
6.2.管理员登录的测试用例
24
6.3 实施测试