第7章 集成测试(wbl)
集成测试
实验三集成测试1实验类型:设计性要求:必做学时:62实验内容:在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
3实验的基本要求:1、要求学生掌握桩模块和驱动模块的开发。
2、发现并排除在单元模块连接中可能发生的问题。
4 实验主要方法1 定义:集成测试,也叫组装测试或联合测试。
在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。
实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。
一些局部反映不出来的问题,在全局上很可能暴露出来。
子系统:子系统是一种模型元素,它具有包(其中可包含其他模型元素)和类(其具有行为)的语义。
子系统的行为由它所包含的类或其他子系统提供。
子系统实现一个或多个接口,这些接口定义子系统可以执行的行为。
使用可以通过多种互补的方法来使用子系统,将系统分为若干个单元,这些单元:可以独立预定、配置或交付可以独立开发(只要接口保持不变)可以在一组分布式计算节点上独立部署可以在不破坏系统其他部分的情况下独立地进行更改此外,子系统还可以:将系统分为若干单元,以提供对关键资源的有限安全保护在设计中代表现有产品或外部系统从类协作中确定子系统如果某个协作中的各个类只是在相互之间进行交互,并且可生成一组定义明确的结果,就应将该协作和它的类封装在一个子系统中。
这一规则同样适用于协作的子集。
可以对协作的任何部分或全部进行封装和简化,这将会使设计更易于理解。
桩模块和驱动模块:软件测试技术的一种,主要用在单元测试阶段。
由于对已开发的单元模块功能和行为测试会涉及到仿真对象的概念,比如说驱动模块和桩模块。
驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序。
它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。
桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。
主模块作为驱动模块,与之直接相连的模块用桩模块代替。
最新第七章 集成测试过程
d4
d5
U2
U4
U5
U6
Step 2
三明治集成
定义
为减少桩模块和驱动模块,在分解树的子树上进行集成
举例
步骤 1. 基于功能树,选择完全分支/子分支作为集成单元,在本例中,我选择了3
个子树 1. 为了测试U2和U5的集成,开发一个驱动器d1 2. 开发两个桩S1和S2测试U1和U3的集成 3. 为了测试U4和U6,开发一个驱动器d2 2. 将所有的测试子树集成在一起
自下而上举例
步骤 1. 从最底层U5,U3,U6开始,开发3个驱动模块d1,d2,d3调用它们 2. 用U5集成U2,U6,U4被d4,d5代替 3. 将所有单元集成在一起
第七章 集成测试过程
自下而上举例
U1
U2
U3
U4
U5
U6
d1
d2
d3
U5
U3
U6
Step 1 U1
U2
U3
U4
U5
U6
Step 3
第七章 集成测试过程
目的 在把各个模块连接起来的时候,穿越模块接口的数据
是否会丢失; 一个模块的功能是否会对另一个模块的功能产生不利
的影响; 各个子功能组合起来,能否达到预期要求的父功能; 全局数据结构是否有问题; 单个模块的误差累积起来,是否会放大,以至达到不
能接受的程度。
第七章 集成测试过程
步骤
1. 从U1开始,被U1调用的U2、U3、U4被3个桩模块S1、S2、S3代替, 基于功能树,选择一个U1的分支,集成自顶而下。在本例中选择最左面 的一个分支
2. 将U1和U2集成,被U2调用的U5用桩模块S4代替,U3、U4被S2、S3 代替
WBL研究的内容和方法
(6)基于因特网的远程协作学习模式
远程协作学习是指学习者(个人或小组)之 间,环绕相同的主题,分别以网页方式,相互展 示学习内容、学习过程、学习成果、学习体会, 共同总结学习收获的一种协作学习方式。
由不同成员组成学习共同体; 以课程内容为主题的开展协商讨论学习; 以网页为载体进行学习; 通过网页的设计、制作、观摩、讨论过程进行学 习。
创作作品
意义建构
评价作品
(4)基于WebQuest专题网页的 主题探究模式
WebQuest的首 创者之一美国圣地亚 哥州立大学教育技术 系教授伯尼· 道奇 (Bernie Dodge )
Bernie Dodge & Kedong Li
WebQuest 基本思想
WebQuest的主要方法是在网络环境下,由教 师引导,以一定任务驱动学生进行自主探究学 习。
WebQuest 要求教师依据这种方法建立了自己 的 WebQuest 课程网页,并应用在课堂教学中。
把 WebQuest设计成网页形式 分为六大模块
WebQuest的任务分类(伯尼· 道奇)
WebQuest的作用
培养学生学会根据任务驱动学习; 培养学生学会搜索资源和利用资源; 培养学生学会根据任务完成作品; 培养学生学会在学习过程中进行自我评价; 培养学生学会学习总结。
一、WBL概述
WBL学习环境 WBL学习资源 WBL学习方法
1、 WBL学习环境
通讯
学习者界面 学习者界面
学习空间
平台
资源库
平台
基础设施(CERNET\城域网\校园网)
2、 WBL学习资源
网络课件 网络课程 主题网页 专题学习网站 资源网站 门户网站
WBL学习资源
软件测试(集成测试)
18
深度优先组装方式
19
广度优先组装方式
20
集成环节
(1)以主模块为所测模块兼驱动模块,全部直属于主 模块旳下属模块全部用桩模块对主模块进行测试。
(2)采用深度优先或广度优先旳策略,用实际模块替 代相应桩模块,再用桩替代它们旳直接下属模块, 与已测试旳模块或子系统集成为新旳子系统。
集成
确认
系统
测试
测试
测试
装配好
确认
可运
测试过 旳软件 旳模块
旳软件
行旳 软件
4
什么是集成测试
也叫做组装测试、联合测试、子系统测试和 部件测试。
是在单元测试旳基础上,将全部模块按照概 要设计要求组装成为子系统或系统,进行集 成测试。
5
单元测试、集成测试与系统测试旳差别
对象
目旳
测试根据 测试措施
单元 测试
模块内部 程序错误
消除局部模块逻辑 和功能上旳错误和
缺陷
模块逻辑设计 模块外部阐明
大量采用白 盒测试措施
集成 测试
模块间旳 集成和调 用关系
找出与软件设计有
关旳程序构造,模 块调用关系,模块
程序构造设计
间接口方面旳问题
灰盒测试, 采用较多黑 盒措施构造 测试用例
系统 测试
整个系统, 涉及系统 软硬件等
从具有最小依赖性旳底层组件开始,按照依赖 关系树旳构造,逐层向上集成,以检验系统旳 稳定性。
集成示意图:
27
集成环节
(1)起始于模块依赖关系树旳底层叶子模块,也能 够把两个或多种叶子模块合并到一起进行测试
(2)使用驱动模块对环节1选定旳模块(或模块组) 进行测试
集成测试详解
2 集成测试的策略和方法
2.1 集成测试的策略
一个集成测试策略必须回答三个问题: � 哪些模块是集成测试的重点? � 模块接口应该以什么样的顺序进行检测? � 应该使用哪种测试设计技术检测每个接口? 对于哪些模块是集成测试的重点?模块接口应该以什么样的顺序进行检测?要根据项目的 实际情况和系统架构设计人员一起确定下来, 应该使用哪种测试设计技术检测每个接口相关 功能?就是要应用不同的集成测试方法和技术:
从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。下图中,实线表示已部分 完成的结构,若采用深度优先策略,下一步将用模块 M7 替换桩模块 S7,当然 M7 本身可 能又带有桩模块,随后将被对应的实际模块一一替代。 自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验, 因此较早地 发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况, 重 要数据不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是 把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模 块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定 位和纠正, 并且失去了在组装模块时进行一些特定测试的可能性; 第二种方法无疑要大大增 加开销;第三种方法比较切实可行,下面专门讨论。
2.2 集成测试的方法
集成测试有两种不同的方法,非增式测试和增式测试。 ①非增式测试:在配备辅助模块的条件下,对所有模块进行个别的单元测试。然后在此基础 上,按程序结构图将各模块联接起来,把联接后的程序当作一个整体进行测试。典型的测试 方法有大爆炸集成测试。非增式测试的做法是先分散测试,再集中起来一次完成集成测试。 如果在模块的接口处存在错误, 只会在最后的集成时一下子暴露出来, 便于找出问题和修改。 其次,增式测试使用了较少的辅助模块,也就减少了辅助性测试工作。并且一些模块在逐步 集成的测试中,得到了较为频繁的考验,因而可能取得较好的测试效果。总的说来,增式测 试比非增式测试具有一定的优越性。 ②增式测试:它的集成是逐步实现的。主要有两种实施顺序: � 自顶向下增式测试表示逐步集成和逐步测试是按结构图自上而下进行的。 � 自底向上增式测试表示逐步集成和逐步测试是按结构图自下而上进行的。
集成测试-详解
集成测试-详解目录• 1 什么是集成测试• 2 集成测试的目标• 3 集成测试应考虑问题• 4 集成测试过程o 4.1 计划阶段o 4.2 设计阶段o 4.3 实现阶段o 4.4 执行阶段• 5 集成测试的实施方案o 5.1 自顶向下测试o 5.2 自底向上测试o 5.3 核心系统测试o 5.4 高频集成测试什么是集成测试集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行测试。
集成测试最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。
从这一层意义上讲,组件是指多个单元的集成聚合。
在现实方案中,许多单元组合成组件,而这些组件又聚合为程序的更大部分。
方法是测试片段的组合,并最终扩展成进程,将模块与其他组的模块一起测试。
最后,将构成进程的所有模块一起测试。
此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
集成测试测试组合单元时出现的问题。
通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。
这种方法将可能发生的情况数量减少到更简单的分析级别。
一个有效的集成测试有助于解决相关的软件与其它系统的兼容性和可操作性的问题。
集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。
这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。
集成测试是单元测试的逻辑扩展。
在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。
集成测试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。
集成测试报告
集成测试报告一、测试概述。
集成测试是软件开发过程中非常重要的一环,它旨在验证系统各个模块之间的接口和交互是否正常,确保系统在集成后能够按照预期的方式运行。
本次集成测试的目标是对系统进行全面的测试,发现并解决可能存在的集成问题,保障系统的稳定性和可靠性。
二、测试环境。
本次集成测试的环境包括硬件环境和软件环境两部分。
硬件环境包括(列举硬件环境),软件环境包括(列举软件环境)。
在此环境下进行集成测试,以确保系统在实际运行环境中的稳定性和兼容性。
三、测试内容。
本次集成测试主要包括以下内容:1. 系统模块间的接口测试,验证各个模块之间的数据传输和交互是否正常,确保模块间的接口能够正确地传递数据和指令。
2. 功能模块的集成测试,测试系统各个功能模块集成后的整体功能是否正常,包括功能的触发、执行和返回结果等。
3. 异常情况的处理测试,测试系统在异常情况下的处理能力,包括输入错误、网络中断、系统崩溃等情况下系统的表现。
4. 性能测试,测试系统在高负载、大数据量等情况下的性能表现,包括响应时间、吞吐量、并发能力等指标。
四、测试方法。
本次集成测试采用黑盒测试和白盒测试相结合的方式进行。
黑盒测试主要针对系统功能进行测试,着重于功能的正确性和完整性;白盒测试主要针对系统内部结构进行测试,着重于代码的覆盖率和逻辑的正确性。
通过这两种测试方法的结合,全面地验证系统的各项功能和性能。
五、测试结果。
经过本次集成测试,系统各个模块之间的接口和交互正常,功能模块集成后整体功能正常,系统在异常情况下能够正确处理,性能表现稳定。
未发现严重的集成问题和性能瓶颈。
六、存在的问题。
在本次集成测试中,发现了一些轻微的问题,主要包括(列举存在的问题)。
这些问题已经记录并反馈给开发人员,预计将在下一轮测试中得到解决。
七、测试总结。
本次集成测试取得了较好的效果,系统各项功能和性能表现良好。
但仍需对存在的问题进行跟踪和解决,以确保系统的稳定性和可靠性。
集成测试——精选推荐
集成测试⼀、集成测试(Integration Testing)的概念集成测试(Integration Testing)是在单元测试的基础上,将所有模块按照概要设计要求组装成为⼀个⼦系统或者系统,进⾏集成测试。
⼆、集成测试关注的重点⼀些模块虽然能够单独⼯作,但并不能保证连接起来也能正常的⼯作,程序在某些局部反映不出来的问题,在全局上很可能暴漏出来,影响功能的实现,因此集成测试应当考虑两⼤(5个)问题:1、模块间的接⼝(接⼝的覆盖率)(1)在把各个模块连接起来的时候,穿越模块接⼝的数据是否会丢失。
(2)全局数据结构是否有问题,会不会被异常修改。
2、集成后的功能(参数的传递)(1)各个⼦功能组合起来,能否达到预期要求的⽗功能。
(2)⼀个模块的功能是否会对另⼀个模块的功能产⽣不利的影响。
(3)单个模块的误差积累起来,是否会放⼤,从⽽达到不可接受的程度。
三、集成测试的三个级别由于集成的⼒度不同,⼀般可以把集成测试划分为三个级别:1、模块内集成测试。
2、⼦系统内集成测试。
3、⼦系统间集成测试。
四、集成测试策略集成测试策略最主要的有三种:1、⼤爆炸集成(Big Bang Integration)。
2、⾃顶向下集成(Top-Down Integration)。
3、⾃底向上集成(Bottom-up Integration)。
基于以上三种测试策略,⼜提出了以下五种集成测试策略,它们都是在上⾯的三种主要测试策略的基础上进⾏综合,改进⽽成的。
1、三明治集成(Sandwich Integration)。
2、基⼲集成(Backbone Integration)。
3、分层集成(Layers Integration)。
4、基于功能的集成(Function-Based Integration)。
5、基于进度的集成(Schedule-Based Integration)下⾯我们详细的介绍⼀下这⼏种集成测试策略。
1、⼤爆炸集成(Big Bang Integration)(1)概念:⼤爆炸集成(Big Bang Integration)是属于⾮增值式集成(Non-Incremental Integration)的⼀种⽅法,也叫⼀次性组装货整体拼装。
软件测试教学PPT-集成测试
示例地调用图
示例地成对集 成
常用地集成测试方法
基于调用图地集成测试 相邻集成测试
常用地集成测试方法
基于调用图地集成测试 基于调用图地集成技术偏离了纯结构基
本,转向行为基本,因此底层假设是一种 改。这些技术还减少了桩与驱动模块地 开发工作量。 基于调用图地集成还与以构建与合成为 特征地开发匹配得很好。 基于调用图集成测试地最大缺点是缺陷 隔离问题,尤其是对有大量邻居地情况。
常用地集成测试方法
基于功能分解地集成测试 对基于系统功能分解地集成测试,测试
方法都基于采用树或文字形式来表示地 功能分解
不可避免地要深入到将要集成地模块顺 序。对于增量集成有三种选择:自顶向 下集成,自底向上集成以与三明治集成
所有这些集成顺序都假设单元测试已经 通过单独测试,基于功能分解地集成测 试目地是测试通过单独测试地单元接口
误; 评审。
集成测试策略
非增量式集成测试 先分别测试每个模块,再将所有模块按
照设计要求放在一起结合成所要地程序 增量式集成测试 将下一个要测试地模块同已经测试好地
那些模块结合起来行测试,测试完后再 将下一个应测试地模块结合起来行测试
集成测试策略
非增量式集成测试
非增量集成测试示例
再顶系统。 子系统集成顺序上,功能集成采用:先查
找,后增加,删除,修改;模块集成采用: 先入库出库模块,后盘点与管理员界面。
集成测试案例
通用仓库管理系统集成测试 测试策划 测试步骤 集成测试地主要步骤如表所示,主要
有: 制定集成测试计划; 设计集成测试; 实施集成测试; 执行集成测试; 评估集成测试。
集ቤተ መጻሕፍቲ ባይዱ测试策略
集成测试学习.pptx
第31页/共39页
集成测试思路
• 文件、数据库、队列、第三方中间件等:表现的主要是数据的传递,其中的控制体现的不明显。
31
第32页/共39页
集成测试思路
• 共享资源:比如共享一段“存储区域”,其中涉及的关键资源主要是“锁”了;这样的两个模块在运行时 往往分布到不同的进程或者线程中,表现为对资源的竞争,以及数据的共享。
困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分 展开人力。 • “自底向上”法的优缺点与“自顶向下”法刚好相反。
18
第19页/共39页
混合策略
• 在具体测试中,采用混合策略: (1)改进的自顶向下法:基本使用“自顶向下”法,但在测试早期,使用“自底向上”法测试少数的关键 模块。 (2)混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向 上”法,两者相结合。
因为所有的模块一次集成的,所以很难确定出错的真正位置、所在
的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规
模较小的应用系统中使用。
21
第22页/共39页
三明治集成方法(Sandwich Integration)
采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地 结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块 的正确性。采用这种方法的主要缺点是:在真正集成之前每一个独立的模块 没有完全测试过。
36
第37页/共39页
集成测试思路
• 当然,集成测试不会太关心业务或者需求,那是系统测试的事了。但此时想想,往往能够得到意外的收获。 • 太多的关注功能,往往忽略其他。有时我们不得不考虑接口的性能,尤其对于系统关键接口。接口的性能
什么是集成测试
什么是集成测试在软件开发的过程中,测试是一个至关重要的环节,它能够确保软件的质量和稳定性。
而集成测试,作为软件测试中的一个重要阶段,扮演着不可或缺的角色。
那么,究竟什么是集成测试呢?简单来说,集成测试就是将多个经过单元测试的模块组合在一起,对它们之间的接口和交互进行测试,以确保这些模块能够协同工作,实现预期的功能。
想象一下,一个软件就像是一个复杂的机器,由许多不同的零部件组成。
每个零部件都经过了单独的检验,确保它们自身没有问题。
但当把这些零部件组装在一起时,可能会出现各种意想不到的情况。
比如说,两个零部件之间的接口不匹配,或者它们在协同工作时产生了冲突,导致整个机器无法正常运转。
集成测试的目的就是要在软件这个“机器”组装的过程中,发现并解决这些可能出现的问题。
为了更好地理解集成测试,我们先来了解一下它的几个特点。
首先,集成测试关注的是模块之间的接口。
接口就像是模块之间交流的“桥梁”,如果接口设计不合理或者存在错误,那么模块之间的信息传递就会出现问题,从而影响整个软件的功能。
其次,集成测试是在单元测试之后进行的。
单元测试主要是针对单个模块的功能进行测试,确保每个模块都能正常工作。
而集成测试则是在此基础上,将多个模块组合起来,测试它们之间的协同工作能力。
再者,集成测试的测试用例设计比较复杂。
因为要考虑多个模块之间的交互情况,所以需要设计出能够覆盖各种可能的接口组合和交互场景的测试用例。
那么,为什么要进行集成测试呢?第一,它可以发现模块之间的兼容性问题。
不同的模块可能是由不同的开发人员在不同的时间开发的,使用的技术和环境可能会有所不同。
通过集成测试,可以及时发现这些模块在组合在一起时出现的不兼容问题,并进行修复。
第二,集成测试能够验证系统的整体功能。
虽然每个模块在单元测试中都通过了测试,但只有当它们组合在一起时,才能真正验证系统是否能够实现预期的整体功能。
第三,它有助于提高软件的可靠性和稳定性。
通过发现和解决模块之间的接口问题,可以减少软件在运行过程中出现故障的概率,提高软件的稳定性。
第七章(2)
1.自顶向下集成
优点: 能在早期对主要的控制或关键的抉择进行检 验。 如果深度优先,可早期实现软件的一个完整 的功能并且验证这个功能。 缺点: 存根程序只是对低层模块的模拟,测试时没 有重要的数据自下往上流,许多重要的测试 须推迟进行。 而且在早期不能充分展开人力。
7.4 集成测试
而一次性集成最后才组装,因此错误发现得晚。
出现的错误往往跟最新加入的模块有关。
在不断集成的过程中使模块不断在新的条件 下受到新的检测,测试更彻底。
7.4 集成测试
1.自顶向下集成
从主控模块开始,按照软件的控制层次结 构,把各个模块集成起来测试。
7.4 集成测试
1.自顶向下集成
步骤:
1. 对主控制模块进行测试,测试时用存根程序代替 所有直接附属于主控制模块的模块; 2. 根据选定的结合策略(深度优先或宽度优先),每 次用一个实际模块代换一个存根程序(新结合进来的 模块往往又需要新的存根程序); 3.在结合进一个模块的同时进行测试; 4.为了保证加入模块没有引进新的错误,可能需要 进行回归测试(即,全部或部分地重复以前做过的测 试)。
一、一次性集成
Big-bang Integration:又称“整体拼装”, “非渐增式集成”,“爆炸式集成”。
首先对各个模块分别进行单元测试,然后再把 所有模块一次性集成在一起进行测试。
缺点: 集成后的系统一次运行成功的可能性很小 出错时很难定位错误。
二、渐增式集成
可以较早发现模块间的接口错误;
7.6 白盒测试技术
为什么要做白盒测试?
那如何更快速的清洗这台面包机呢?有 两种洗法,一是拿水从上往下灌,这是 系统测试的方法。另一种是拆开来洗, 拆开机 器后,拿抺布沾点清洁剂,把各 零件的坑坑槽槽擦洗一遍,然后组装回 来,再用水从上往下冲一遍,拆开来洗 是白盒方法,组装回来用水冲是黑盒方 式,相当于白盒 测试之后再追加一次系 统测试。
集成测试(ppt 36页)
示;
- 错误定位比较容易;
- 桩代码和驱动代码的开发量减少;
- 开发和集成可同时进行;
• 缺点:
- 刚开始的几个周期可能不易于平稳集成;
- 高频集成的频率需要有个好的把握;
• 适用范围:
- 采用迭代过程模型开发的产品;
21
5.2 集成测试策略
基于事件(消息)的集成:
• 从验证消息路径的正确性出发,渐增式的把系统集
构的应用系统的稳定性和可互操作性;
• 策略:
- 划分系统的层次; - 确定每个层次内部的集成策略; - 确定层次间的集成策略;
• 适用范围:
- 通信类软件; - 有明显层次关系的产品系统;
19
5.2 集成测试策略
高频集成:
• 频繁将新代码加入到一个已经稳定的基线中,以
免集成故障难以发现,同时控制可能出现的基线偏 差;
22
5.2 集成测试策略
• 缺点:
- 对于复杂的系统,消息之间的相互关联性可能是 错综复杂并难以分析的;
- 对一些接口测试不够充分;
• 适用范围:
- 面向对象的系统; - 基于有限状态机的嵌入式系统;
23
5.3 集成测试分析
集成测试关注的内容:
• 体系结构分析; • 模块分析; • 接口分析; • 可测试性分析; • 集成测试策略分析; • 常见的集成测试故障;
29
5.3 集成测试分析
集成测试策略分析:
• 好的集成测试策略主要关注:
- 能够对被测对象进行比较充分的测试,尤其是关 键模块;
- 能够使模块和接口的划分清晰明了; - 投入的资源被充分利用;
30
5.3 集成测试分析
常见的集成测试故障:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自顶向下结合方式举例(深度优先)
为SATM系统执行自顶向下集成测试
第一步是要为被主程序调用的所有单元,即 WatchCardSlot(检查ATM卡槽)、 ControlCardRoller(控制ATM卡传送器)、 ScreenDriver(屏幕驱动器)、ValidateCard(验证 ATM卡)、ValidatePIN(验证PIN)、 ManageTransaction(管理事务)和 NewTransactionRequest(新事务请求)开发桩 一旦提供了SATM主程序的所有桩之后,可开始 测试主程序,就像它是一个独立单元一样。可以 使用合适的功能性测试和结构性测试技术,并查 找缺陷 在确信主程序的逻辑正确之后,我们将逐渐采用 实际代码取代这些桩
自底向上集成测试的缺点
缺点
驱动器的开发耗费量大 高层模块的可操作性和互操作性测试得不充
分
适用范围
重要需求的模块在底层
自顶向下和自底向上比较
改进的自顶向下集成测试
自顶向下集成测试中的关键模块,是指一 个复杂的模块,或者包含有新算法的模块 ,或者怀疑有错误倾向的模块 尽早组装关键模块可以尽早发现关键错误 自顶向下的集成测试的局限性之一是,涉 及关键模块的一些问题不能立即被测试, 必须等到控制结构完成之后
Test B, E, F Test F
内容
集成测试的必要性 集成测试的方法
基于功能分解的集成 基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试
SATM系统:简单的自动柜员机
SATM系统:
功能:存款、取款和余额查询, 帐户:支票和储蓄帐户。 15个屏幕
SATM系统:简单的自动柜员机
SATM终端
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
非渐增式集成测试的特点
优点
迅速完成集成测试 测试用例较少
优点
自底向上方式虽然需要构造驱动模块,但是它不需要 构造桩模块,而构造驱动模块比构造桩模块更容易, 因为驱动模块具有某种统一性,而桩模块千差万别 涉及复杂算法和真正输入、输出的模块一般在底层, 它们是最容易出现问题的模块,而这些模块在自顶向 下的组装测试的后期才遇到,如果此时才发现错误, 那么改正它所需要花费的代价就更大 采用自底向上的组装方式,随着测试层次的提高,剩 下的被测模块越来越少,为测试一个模块只需为该模 块构造唯一的一个驱动模块,而采用自顶向下方式, 则可能要构造若干个桩模块,这无疑也增加了费用 叶结点的测试和集成可以并行
计划阶段
概要设计完成评审之后,开始进入到集成测试的计划 阶段
准备需求规格说明书、概要设计文档等 确定测试范围和测试对象,准备测试工具和环境,进
行人员组织,考虑风险及应急计划,外部技术支援的
力度和深度及相关培训
该阶段以完成集成测试计划书结束,并通过评审。
集成测试的过程
设计阶段
第一阶段:详细分析被测对象结构、集成测试模块、集成
缺点
错误难以定位 即使通过测试,许多接口错误也会隐藏
应用
小的、良构的系统,其模块已接受了充分的测试
一个已经存在的系统,只是做了少量的修改 通过复用可信赖的模块构造系统
Three Level Call Hierarchy
A
Level I
B
C
D
Level II
E
F
G
H
Level III
自顶向下集成测试的特点
优点
测试和集成可以较早的开始 减少了驱动(driver)的开发 如果底层接口未定义或可能修改,则可以避免提交不稳定 的接口 桩的开发代价较大 在底层模块中一个无法预料的需求可能迫使顶层模块的修 改 要充分测试底层模块可能比较困难 增量式开发 并行软件开发 框架开发
第7章 集成测试
内容
集成测试的必要性 集成测试的过程 集成测试的方法
基于分解的集成
基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试
什么是集成测试
集成测试亦称组装测试或联合测试 集成测试将经过单元测试的模块逐步进行 组装和测试 集成测试验证程序和概要设计说明的一致 性 集成测试在模块组装后查找模块间接口、 全局数据结构、计算精度等的错误
改进的自顶向下集成测试(续)
改进的自顶向下集成测试,基本使用自顶向 下法,但在测试早期,使用自底向上法测试 少数的关键模块。
在进行控制结构的集成测试时,关键模块和测试
驱动模块一起被执行
关键模块和所有其它模块都要经过单元测试 。对于一个特定的模块,很难区分单元测试 和改进的自顶向下测试
对于关键模块,在进行单元测试时,把注意力集
集成测试的必要性 集成测试的方法
基于分解的集成 基于调用图的集成
基于路径的集成
案例研究 面向对象软件的集成测试
模块间相互依赖关系分析
相依性分析 相依性是模块以各种方式相互依赖的关系
关联(association)和聚集(aggregation) 继承 全局变量 调用API 服务器对象 被用作消息参数的对象
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):也称存根程序,模拟被 调用模块的一次性代码。
自顶向下集成
SATM系统的一种分解树
SATM单元和缩写名称
SATM功能分解树
单元调用图
随着软件设计逐步深入,所增加的信息能 够用来将功能分解树细化为单元调用图 单元调用图是一种有向图,结点表示程序 单元,边表示程序调用
如果单元A调用单元B,则从单元A到单元B
有一条有向边
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 Nhomakorabea目的
从顶层开始,以控制层次的顺序增加模块以论证
系统的稳定性
策略
从主程序(树根)开始,所有主程序的下层单元
都作为“桩”(stub,存根) 继续在每一层按宽度优先进行,用完全的实现替 代桩,并为下层设计桩 直到所有模块被集成
自顶向下集成(续)
模块测试结合顺序:
深度优先:
A、B、E、C、D、F 宽度优先: A、B、C、D、E、F
功能概述
屏幕显示