第7章 集成测试(wbl)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


缺点
错误难以定位 即使通过测试,许多接口错误也会隐藏

应用
小的、良构的系统,其模块已接受了充分的测试
一个已经存在的系统,只是做了少量的修改 通过复用可信赖的模块构造系统
Three Level Call Hierarchy
A
Level I
B
C
D
Level II
E
F
G
H
Level III
内容
集成测试的必要性 集成测试的方法

基于功能分解的集成 基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试

SATM系统:简单的自动柜员机

SATM系统:

功能:存款、取款和余额查询, 帐户:支票和储蓄帐户。 15个屏幕
SATM系统:简单的自动柜员机
SATM终端

改进的自顶向下集成测试(续)

改进的自顶向下集成测试,基本使用自顶向 下法,但在测试早期,使用自底向上法测试 少数的关键模块。
在进行控制结构的集成测试时,关键模块和测试
驱动模块一起被执行

关键模块和所有其它模块都要经过单元测试 。对于一个特定的模块,很难区分单元测试 和改进的自顶向下测试
对于关键模块,在进行单元测试时,把注意力集

缺点



适用范围

自底向上集成

目的
从具有最少的相依性模块开始,按照相依性的
次序将模块加入,以证实稳定性

策略
从功能分解树的叶结点开始,向根的方向移动 编写叶结点的驱动器
为上一级模块编码
整个系统使用根一级的模块测试
自底向上结合方式举例
自底向上集成测试的优点

集成测试的必要性 集成测试的方法

基于分解的集成 基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试

模块间相互依赖关系分析
相依性分析 相依性是模块以各种方式相互依赖的关系

关联(association)和聚集(aggregation) 继承 全局变量 调用API 服务器对象 被用作消息参数的对象
目的
从顶层开始,以控制层次的顺序增加模块以论证
系统的稳定性

策略
从主程序(树根)开始,所有主程序的下层单元
都作为“桩”(stub,存根) 继续在每一层按宽度优先进行,用完全的实现替 代桩,并为下层设计桩 直到所有模块被集成
自顶向下集成(续)

模块测试结合顺序:
深度优先:
A、B、E、C、D、F 宽度优先: A、B、C、D、E、F
自顶向下集成测试的特点

优点

测试和集成可以较早的开始 减少了驱动(driver)的开发 如果底层接口未定义或可能修改,则可以避免提交不稳定 的接口 桩的开发代价较大 在底层模块中一个无法预料的需求可能迫使顶层模块的修 改 要充分测试底层模块可能比较困难 增量式开发 并行软件开发 框架开发
计划阶段

概要设计完成评审之后,开始进入到集成测试的计划 阶段

准备需求规格说明书、概要设计文档等 确定测试范围和测试对象,准备测试工具和环境,进
行人员组织,考虑风险及应急计划,外部技术支援的
力度和深度及相关培训

该阶段以完成集成测试计划书结束,并通过评审。
集成测试的过程

设计阶段

第一阶段:详细分析被测对象结构、集成测试模块、集成

集成测试的必要性

良好的软件测试充分性准则应具有的基本 性质
非复合性:即使一个测试数据集对于软件所
有的成分是充分的,也不能保证它对于整个 软件是充分的 非分解性:即使一个测试数据集对于整个软 件是充分的,也不能保证它对于软件所有的 成分是充分的
集成测试的必要性(续)

一个模块可能对另一个模块产生不利的影响
模块组装的策略
非渐增式 渐增式

非渐增式集成测试:急于求成

大爆炸集成测试 (big-bang testing)
一下子把几十个甚 至上百个模块莽撞 地联接在一起 “big bang”描述了 这种联接的声音效 果“咣”


目的:通过少数测 试运行检测整个系 统来论证系统的稳 定性
Big-Bang Integration Testing
优点
自底向上方式虽然需要构造驱动模块,但是它不需要 构造桩模块,而构造驱动模块比构造桩模块更容易, 因为驱动模块具有某种统一性,而桩模块千差万别 涉及复杂算法和真正输入、输出的模块一般在底层, 它们是最容易出现问题的模块,而这些模块在自顶向 下的组装测试的后期才遇到,如果此时才发现错误, 那么改正它所需要花费的代价就更大 采用自底向上的组装方式,随着测试层次的提高,剩 下的被测模块越来越少,为测试一个模块只需为该模 块构造唯一的一个驱动模块,而采用自顶向下方式, 则可能要构造若干个桩模块,这无疑也增加了费用 叶结点的测试和集成可以并行
第7章 集成测试
内容
集成测试的必要性 集成测试的过程 集成测试的方法

基于分解的集成
基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试
百度文库
什么是集成测试
集成测试亦称组装测试或联合测试 集成测试将经过单元测试的模块逐步进行 组装和测试 集成测试验证程序和概要设计说明的一致 性 集成测试在模块组装后查找模块间接口、 全局数据结构、计算精度等的错误
Test B, E, F Test F
自顶向下结合方式举例(深度优先)
为SATM系统执行自顶向下集成测试



第一步是要为被主程序调用的所有单元,即 WatchCardSlot(检查ATM卡槽)、 ControlCardRoller(控制ATM卡传送器)、 ScreenDriver(屏幕驱动器)、ValidateCard(验证 ATM卡)、ValidatePIN(验证PIN)、 ManageTransaction(管理事务)和 NewTransactionRequest(新事务请求)开发桩 一旦提供了SATM主程序的所有桩之后,可开始 测试主程序,就像它是一个独立单元一样。可以 使用合适的功能性测试和结构性测试技术,并查 找缺陷 在确信主程序的逻辑正确之后,我们将逐渐采用 实际代码取代这些桩
集成测试的过程

执行阶段

单元测试完成后开始集成测试。 依据软件需求规格说明书、概要设计、详细 设计、代码和单元测试报告,执行所有的集 成测试用例、回归集成测试用例。

记录和撰写集成测试报告。
集成测试的过程

评估阶段

所有测试需要由测试结果评估小组或评估人 员对测试结果进行评测、分析,并输出分析 结果。
1.3 Terminal sense and control(终端传感与控制) 1.3.1 Screen driver(屏幕驱动器) 1.3.2 Key sensor(键盘传感器) 1.4 Manage session(管理会话) 1.4.1 Validate card(验证卡) 1.4.2 Validate PIN(验证PIN) 1.4.3 Close session(关闭会话) 1.4.3.1 New transaction request 1.4.3.2 Print receipt 1.4.3.3 Post transaction local 1.4.4 Manage transaction(管理事务/交易) 1.4.4.1 Get transaction type 1.4.4.2 Get account type 1.4.4.3 Report balance 1.4.4.4 Process deposit 1.4.4.5 Process withdrawal
测试接口。确定集成测试策略、测试工具、集成测试环境 ,以估计和安排集成测试工作量。

第二阶段:根据软件需求、概要设计、集成测试计划来设
计集成测试。在集成测试的设计过程中,部分测试用例可 能需要进行集成测试代码设计,部分测试用例需要借助测
试工具。

输出集成测试用例、集成测试规程、集成测试代码、集成 测试脚本,最后输出集成测试设计报告,并通过评审。
功能概述

屏幕显示
15个屏幕
功能概述(续)

功能键
数字键盘(含“取消”键) 打印凭条和插入ATM卡的槽 存款和提现的通道(door)

结构化分析方法

该技术基于三种互补的模型:
功能模型:使用数据流图 数据模型:使用E/R模型
控制模型:有限状态机
SATM系统的功能分解
1 SATM(SATM系统) 1.1 Device Sense & control(设备传感与控制) 1.1.1 Door sense and control(通道传感与控制) 1.1.1.1 Get door status 1.1.1.2 Control door 1.1.1.3 Dispense cash 1.1.2 Slot sense and control(槽传感与控制) 1.1.2.1 Watchcardslot 1.1.2.2 Get deposit slot status 1.1.2.3 Control Card Roller 1.1.2.4 Control Envelope roller 1.1.2.5 Read card strip 1.2 Central bank Comm.(中央银行通信) 1.2.1 Get PIN for PAN 1.2.2 Get account status 1.2.3 Post daily transactions
可能会发现单元测试中未发现的接口方面的错误 将子功能合成时不一定产生所期望的主功能 独立可接受的误差,在组装后可能会超过可接受的误差限 度

在单元测试中无法发现时序问题(实时系统) 在单元测试中无法发现资源竞争问题
集成测试的过程


计划阶段
设计阶段 执行阶段 评估阶段
集成测试的过程

中在单元的内部功能上 在集成测试阶段,把重点放在这个模块和控制程 序的通讯上
三明治集成测试


是自顶向下和自底向上集成的结合 系统可看作是分三层
中间一层为目标层 测试的时候对目标层上面的一层采用自顶向下策略 对下面的一层采用自底向上的策略 最后测试在目标层会合


How do you select the target layer if there are more than 3 layers?

Heuristic: Try to minimize the number of stubs and drivers
Sandwich Testing Strategy
A Level I B C D Level II
Test E
E F G H Level III
Bottom Level Tests

自底向上集成测试的缺点

缺点
驱动器的开发耗费量大 高层模块的可操作性和互操作性测试得不充


适用范围
重要需求的模块在底层
自顶向下和自底向上比较
改进的自顶向下集成测试
自顶向下集成测试中的关键模块,是指一 个复杂的模块,或者包含有新算法的模块 ,或者怀疑有错误倾向的模块 尽早组装关键模块可以尽早发现关键错误 自顶向下的集成测试的局限性之一是,涉 及关键模块的一些问题不能立即被测试, 必须等到控制结构完成之后
31
渐增式集成测试
功能分解树 自顶向下
从树根结点开始向下

自底向上
从树叶结点开始向上

三明治
自顶向下与自底向上相结合
两个概念
驱动模块(driver):用以模拟被测模块 的上级模块的一次性代码。 桩模块(stub):也称存根程序,模拟被 调用模块的一次性代码。

自顶向下集成

Unit Test A Unit Test B Unit Test C Unit Test D
All components are assembled and tested at once.
System-Wide Test
………….
Unit Test H
29
非渐增式集成测试的特点

优点
迅速完成集成测试 测试用例较少
SATM系统的一种分解树
SATM单元和缩写名称
SATM功能分解树
单元调用图
随着软件设计逐步深入,所增加的信息能 够用来将功能分解树细化为单元调用图 单元调用图是一种有向图,结点表示程序 单元,边表示程序调用

如果单元A调用单元B,则从单元A到单元B
有一条有向边
SATM 调用图
内容
相关文档
最新文档