集成测试详解_第1页
集成测试详解_第2页
集成测试详解_第3页
集成测试详解_第4页
集成测试详解_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,软件测试方法和技术 - Ch.6集成测试,2,第五章回顾,单元测试的定义与进行单元测试的重要性 单元测试的目标与任务 静态测试技术的运用 动态测试技术的运用 调试与评估 单元测试的过程与文档管理 单元测试的常用工具简介,3,集成测试过程技术,相关概念 集成测试策略 集成测试环境,4,6.1 集成测试概述 一、集成测试的含义 集成测试是指根据实际情况对程序模块采用适当的的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性检验的测试工作。 在单元测试的基础上,将所有模块按照概要设计要求组装为子系统或者系统进行测试,关注各个模块之间的交互是否正确。,5,二、集成测试与系统测试的区别 1

2、、测试对象 集成测试的测试对象是由通过了单元测试的各个模块所集成起来的组件。而系统测试的测试对象,除了软件之外,还有计算机硬件及相关的外围设备、数据采集和传输机构、计算机系统操作人员等的整个系统。 2、 测试时间 集成测试是介于单元测试和系统测试之间的测试. 在测试时间上,先于系统测试。 3、测试方法 集成测试通常会采用灰盒测试。而系统测试通常使用黑盒测试。,6,4、测试内容 集成测试的主要内容就是各个单元模块之间的接口,以及各个模块集成后所实现的功能。而系统测试的主要内容就是整个系统的功能和性能。 5、测试目的 集成测试的主要目的就是发现单元之间接口的错误,以及发现集成后的软件同软件概要设计

3、说明不一致的地方。而系统测试的主要目的就是,通过与系统需求定义相比较之后发现软件与系统定义不符合或矛盾的地方。 6、测试角度 集成测试工作的开展更多的是站在测试工作人员的角度上。系统测试工作的开展更多的是站在用户的角度来进行。,二、集成测试与系统测试的区别,7,6-1 软件结构图,三、集成测试与开发的关系 为了更好的了解集成测试与开发的关系,图6-1给出了软件基本结构图。,8,四、集成测试的重点 1、各个模块连接起来后,穿过模块接口的数据是否会丢失,是否能够按期望值传递给另外一个模块; 2、各个模块连接起来后,需要判断是否仍然存在单元测试时所没发现的资源竞争问题; 3、分别通过单元测试的子功能

4、模块集成到一起能否实现所期望的父功能; 4、兼容性,检查引入一个模块后,是否对其他与之相关的模块产生负面影响; 5、全局数据结构是否正确,是否被不正常的修改; 6、集成后,每个模块的误差是否会累计扩大,是否会达到了不可接受的程度;,9,6. 2 集成测试任务 一、集成测试任务 在把各个模块连接起来时,穿越模块接口的数据是否会丢失; 各个子功能组合起来,是否能够达到预期要求的父功能; 一个模块的功能是否会对另一个模块的功能产生不利的影响; 全局数据结构是否有问题,会不会被异常修改; 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度;,10,二、集成测试基础分析 1、体系结构分析 首先,

5、跟踪需求分析,对要实现的系统划分出结构层次图。 其次,是对系统各个组件之间的依赖关系进行分析,然后据此确定集成测试的粒度,即集成模块的大小。 2、模块分析 一般,可从以下几个角度进行模块分析: 1)确定本次要测试的模块;,11,2) 找出与该模块相关的所有模块,并且按优先级 对这些模块进行排列; 3)从优先级别最高的相关模块开始,把被测模块与其集成到一起; 4)然后依次集成其他模块。 3、接口分析 接口的划分要以概要设计为基础,一般通过以下几个步骤来完成: (1)确定系统的边界、子系统的边界和模块的边界。 (2)确定模块内部的接口。 (3)确定子系统内模块间接口。 (4)确定子系统间接口。,1

6、2,(5)确定系统与操作系统的接口。 (6)确定系统与硬件的接口。 (7)确定系统与第三方软件的接口。 4、风险分析 风险通常被分为3种类型: 项目风险:包括项目管理和项目环境的风险。 商业风险:它和领域的相关概念及规则息息相关。 技术风险:这是针对应用程序的具体实现而言的,主要和代码级的测试有关。 风险分析是一个定义风险并且找出阻止潜在的问题变成现实的方法的过程。,13,通常把风险分析分为3个阶段:风险识别、风险评估和风险处理。 5、可测试性分析 必须尽可能早地分析接口的可测试性,提前为后续的测试工作做好准备。 6、集成测试策略分析 集成测试策略分析的主要任务就是根据被测对象选择合适的集成测

7、试策略。,14,14,基于功能分解的集成 大爆炸 自顶向下集成 自底向上集成 三明治集成,6.3 集成测试策略,15,软件集成的策略,1.非增量方式(Big Bang) 先独立地测试好每一个软件单元,然后一次性全部组装在一起,再将整个软件作为一个整体进行测试 2.增量方式 从一个模块开始测试,逐步把下一个已测好的软件单元或部件,同已测好的软件部件结合起来,再测试。每测完一个就添加一个,边组装边继续测试,直到整个系统组装完毕 增量方式主要包括自顶向下(又包括深度优先和广度优先)、自底向上、自顶向下与自底向上相结合(“三明治”)等方法,16,渐增式与非渐增式测试的区别 渐增式与非渐增式测试的区别有

8、如下几点: (1) 非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试把单元测试与集成测试合在一起,同时完成。,17,(2) 非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。 (3) 渐增式可以较早地发现接口之间的错误, 非渐增式最后组装时才发现。,18,(4) 渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。 (5) 渐增式比较彻底, 已测试的模块和新的模块组装在一起再测试。,19,(

9、6) 渐增式占用的时间较多,但非渐增式需更多的驱动模块、桩模块,也占用一些时间。 (7) 非渐增式开始可并行测试所有模块, 能充分利用人力,对测试大型软件很有意义。,20,考虑到目前计算机硬件价格下降,人工费用上升,软件错误纠正越早代价越低等特点,采用渐增式方法测试较好。也可考虑将两种方法结合起来,一些模块分别测试,然后将这些测试过的模块再用渐增式逐步结合进软件系统中去。,21,6.3.1 非增量(Big Bang)方式,是一种很直接、原始的组装方式,由于它一次性地把所有已通过单元测试的子模块一古脑儿地全部集成在一起,直接组装成最终的软件系统,再对之进行总体测试 这种一起进行全程序的测试被贬义

10、地称作大爆炸(Big Bang)。该方式目前仍在许多场合使用,人们期望它可以带来方便、快捷的组装效果 但这种方法遭到广大测试专家的批评,普遍认为它会引起混乱,因为它在发现错误后难以诊断和定位错误源的位置,又称“莽撞测试”,22,Big Bang示意,先独立地测试好每一个软件单元(b),然后一次性全部组装在一起,再将整个软件作为一个整体进行测试,23,6.3.2 增量方式,又称渐增式组装 首先对一个个模块分别进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中,边连接边测试,以发现连接过程中产生的问题(如接口处) 通过增量逐步组装成为最终符合预期要求的软件系统,24,1.自顶向下方法

11、,一个模块一个模块地组装软件的方法,每组装一个都要测试一次 按照控制的结构,从主控模块(主程序)开始,向下地逐个把模块连接起来 集成的方式有两种:深度优先法及广度优先法 深度优先法是先把结构中的一条主要的控制路经上的全部模块逐步组装起来。然后再连接其它的控制路径 广度优先法是从结构的顶层开始逐层往下组装,25,自顶向下集成的过程步骤,1)主控模块用作为测试驱动器。直接附属于主控模块的各模块全都用桩模块代替 2)按照所选的组装法(即深度优先或广度优先)每次用一个真模块取代一个附属的桩模块 3)当装入每个真模块时都要进行测试 4)作完每一组测试后又再用一个真模块代替另一个桩模块 5)可以进行回归测

12、试(即重新再做一遍过去做过的全部或部分测试),以便肯定没有新的错误发生,26,自顶向下结合方式示意图,27,深度优先的自顶向下集成示意,Q:ABCDEF这6个子模块中,哪一个得到的测试最充分?,28,自顶向下方法,优点: 能较早发现高层模块的接口控制方面的问题 初期的程序概貌可让人们较早地看到程序的功能,增强开发人员的信息 缺点 桩模块不可能提供完整的信息,因此把许多测试推迟到用实际模块代替桩模块之后 设计较多的桩模块,测试开销大 早期不能并行工作,不能充分利用人力。,29,2.自底向上方法,自底向上集成测试方法是从软件结构中最底层的、最基本的软件单元开始进行集成和测试 这种组装方式是从程序模

13、块结构的最底层的模块开始组装和测试。因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以由直接运行子模块得到。,30,自底向上集成的过程步骤,1)由驱动模块控制最底层模块的并行测试;也可以把最 底层模块组合成实现某一特定软件功能的簇,由驱动 模块控制它进行测试。 2)用实际模块代替驱动模块,与它已测试的直属子模块 组装成为子系统。 3) 为子系统配备驱动模块,进行新的测试。 4) 判断是否已组装到达主模块。若是则结束测试,否 则执行2)。 自底向上进行组装和测试时,需要为被

14、测模块或子系统编制相应的驱动模块。,31,一个软件结构图,32,为每个族分别进行测试,33,形成3个更大的族进一步测试,34,自底向上集成示意,35,E,C,d3,F,d4,B,d2,E,D,d5,F,自底向上集成示意,36,自底向上的增值方式,优点: 随着上移,驱动模块逐渐减少,测试开销小一些 比较容易设计测试用例 早期可以并行工作 低层模块的错误能较早发现 缺点 系统整体功能最后才能看到 上层模块错误发现的晚,上层模块的问题是全局问题,影响范围大。,37,二者的比较,一般对软件结构的上层使用自顶向下结合的方法; 对下层则使用自底向上结合的方法(“三明治”方法),38,3.混合策略(Modi

15、fied Top-down Integration),混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合,39,“三明治”方法,自顶向下测试的主要优点是能较早显示出整个程序的轮廓。主要缺点是当测试上层模块时使用桩模块较多,很难模拟出真实模块的全部功能,使部分测试内容被迫推迟,直至换上真实模块后才能补充测试 自底向上测试则从下层模块开始,设计测试用例比较容易,但是在测试的早期无法显示出程序的轮廓 针对自顶向下、自底向上方法各自的优点和不足,人们提出了自顶向下和自底向上相结合,从两头向中间逼近的混合式组装方法,并形象地称之为“三明治”方法,4

16、0,“三明治”方法的步骤,步骤: 对上层模块采取自顶向下测试 对关键模块或子系统采取自底向上测试 如对关键模块采取自底向上测试,就可能把输入输出模块提前组装进程序,使设计测试用例变得较为容易;或者使具有重要功能的模块早点与有关的模块相连,以便较早暴露可能存在的问题。除关键模块及少数与之相关的模块外,对其余模块尤其是上层模块仍采取自顶向下的测试方法,以便较早显示程序总体轮廓,41,三明治集成方法(Sandwich Integration),采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块的正确性。采用这种方法的主要缺

17、点是:在真正集成之前每一个独立的模块没有完全测试过。,42,改善的三明治集成方法,改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底 。,43,几种集成方法性能的比较,44,工程硕士,44,硬件环境:尽可能的考虑实际环境,实在不可用使用模拟环境 操作环境:考虑到不同机型的不同操作系统版本 数据库环境 网络环境,6.4 集成测试环境,45,6.5 集成测试过程 集成测试过程 根据集成测试不同阶段的任务,可以把集成测试划分为 5个阶段:计划阶段,设计阶段,实施阶段,执行阶段,评估 阶段。如图所示。,46,一、计划阶段 一般安排在概要设计评审通过后大约一

18、个星期的时候, 参考需求规格说明书、概要设计文档、产品开发计划时间表 来制定。 二、设计阶段 一般在详细设计开始时,就可以着手进行。可以把需要 规格说明书、概要设计、集成测试计划文档作为参考依据。 三、实施阶段 在实施的过程中,我们要参考需求规格说明书、概要设 计、集成测试计划、集成测试设计等相关文档来进行。,47,四、执行阶段 只要所有的集成测试工作准备完毕,测试人员在 单元测试完成以后就可以执行集成测试。 五、评估阶段 当集成测试执行结束后,要召集相关人员对测试 结果进行评估,确定是否通过集成测试。 集成测试经验总结 集成测试界于单元测试和系统测试之间,不易正 确理解和把握。因此,有些项目

19、在开发过程中使用调 试的手段把模块或子系统一个一个集成起来,并用这 种办法来替换集成测试,而忽略了正规的集成测试, 致使软件中存在很多隐患,从而无法保证质量。,48,根据以往项目开发和测试的实践,总结了如下几条集成 测试的经验: 1.根据概要设计尽早进行集成测试计划; 2.要根据项目的实际情况制定一些覆盖率标准,从而根 据覆盖率标准来设计足够多的测试用例。然后通过覆盖 率分析来衡量集成测试的充分性,补充测试用例,最终 使软件质量得到保证; 3.在选择集成测试策略时,应当综合考虑软件质量、开 发成本和开发进度这三个因素之间的关系;,49,4.要根据软件的体系结构特点,来选取集成测试策略, 尽可能

20、减少桩模块和驱动模块开发的工作量,同时要 兼顾是否容易进行软件缺陷定位。 5.在测试时,可以根据各种集成测试策略的特点把各 种集成测试策略结合起来; 6.在进行模块和接口划分时,尽量与开发人员多沟通; 7.当因为需求变更或其他原因更改代码时,应对有改 动的模块及与其关联的模块进行回归测试;,50,8.从集成测试所使用的测试技术角度来说,我们可以 使用黑盒测试。那么,经过覆盖率分析后,可以针对 没有覆盖的代码或MM-路径补充一些白盒测试用例。 9.在必要的时候,如:单独的手工测试无法完成时可 以选用一些适当的集成测试工具。 10.对容易出错的模块要进行充分的集成测试。,51,6.6 集成测试人员

21、 由于集成测试不是在真实环境下进行 ,而是在开发环境,或是一个独立的测 试环境下进行的,所以集成测试所需人 员一般从开发组中选出,在开发组长的 监督下进行,开发组长负责保证在合理 的质量控制和监督下使用合适的测试技 术执行充分的集成测试。,52,在集成测试过程中,测试过程由一个独立测试观察员来监控测试工作。 集成测试过程中应考虑邀请一个用户代表非正式地观看集成测试 。,53,6.2功能测试,目的和内容,程序安装、启动正常,有相应的提示框、错误提示等 每项功能符合实际要求 系统的界面清晰、美观 菜单、按钮操作正常、灵活,能处理一些异常操作 能接受正确的数据输入,对异常数据的输入有提示、容错处理等

22、 数据的输出结果准确,格式清晰,可以保存和读取 功能逻辑清楚,符合使用者习惯 系统的各种状态按照业务流程而变化,并保持稳定 支持各种应用的环境 能配合多种硬件周边设备 软件升级后,能继续支持旧版本的数据 与外部应用系统的接口有效,54,功能测试的方法,等价类划分法 边界值分析法 错误推测法 因果图法 组合分析法,我要测试所有的功能,55,边界值分析法,例子:排序程序,边界条件有: 序列为空; 序列仅有一个数据; 序列为满,用猜错法补充一下测试用例; 序列已经按要求排好序; 序列的顺序与要求的顺序恰好相反; 序列中的所有数据全部相等。,因为错误最容易发生在边界值附近,所以边界值分析法对于多变量函

23、数的测试很有效,尤其是对于像C/C+数据类型要求不是很严格的语言有利 。,56,错误推测法,这个错误到底在哪?,57,因果图法,58,组合分析法,组合分析是一种基于每对参数组合的测试技术,主要考虑参数之间的影响是主要的错误来源和大多数的错误起源于简单的参数组合。,在产品汉化过程中哪个组合出错了?,59,Web页面功能测试举例,1.页面链接测试 2.Web图形测试 3.表单测试 表单是在访问者和服务器之间建立的一个对话,允许使用文本 框、单选按钮和选择菜单来获取信息,而不是用文本和图片来发送 信息。在进行表单测试的时候,需要保证应用程序能正确处理这些 表单信息,并且后台的程序能够正确解释和适用这

24、些信息。,60,回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。,6.3回归测试,61,回归测试的目的 所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环

25、境等; 不影响软件原有功能的正确性。 回归测试的方法 再测试全部用例 基于风险选择测试 再测试修改的部分,回归测试,62,6.4 非功能性测试,压力测试 (Stress test) 容量测试 (Capacity test) 性能测试 (Performance test) 安全测试 (Security test) 容错测试 (Recovery test),63,压力测试、容量测试和性能测试,压力测试、容量测试和性能测试的测试目的虽然有所不同,但其手段和方法在一定程度上比较相似,通常会使用特定的测试工具,来模拟超常的数据量、负载等,监测系统的各项性能指标,如CPU和内存的使用情况、响应时间、数据传

26、输量等。,一定要设法破坏它!,64,性能测试概念和目的,性能测试的目的: 为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。 性能测试指标的来源: 用户对各项指标提出的明确需求;如果用户没有提出性能指标则根据用户需求、测试设计人员的经验来设计各项测试指标。(需求+经验) 主要的性能指标: 服务器的各项指标(CPU、内存占用率等)、后台数据库的各项指标、网络流量、响应时间,65,性能测试,看看在各种情况下CPU使用的效率,66,性能测试要点,测试环境应尽量与产品运行环境保持一致,应单独运行尽量避免与其他软件同时使用。 性能测试一般使用测试工具和测试人员编制

27、测试脚本来完成。 性能测试的重点在于前期数据的设计与后期数据的分析。 性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高。,67,压力测试,在一种需要反常(如长时间的峰值)数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。从本质上来说,测试者是想要破坏程序。 步骤:,测试压力估算 测试环境准备 问题的分析 累积效应,68,压力测试,试试这个游戏站点的承受力,69,压力测试类型,并发性能测试(重点) 疲劳强度测试 大数据量测试,70,并发性能测试,考察客户端应用的性能,测试的入口是客户端

28、 并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。,71,疲劳强度测试,通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。 疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。,72,大数据量测试,独立的数据量测试 针对某些系统存储、传输、统计、查询等业务进行大 数据量测试 综合数据量测试 和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案,73,容量测试,容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。,74,安全性测试,可靠性和容错性测试,安全性测试、可靠性测试和容错性测试的测试目的不同,其手段和方法也不同,但都属于系统测试的范畴,有一定的联系,如软件可靠性要求通常包括了安全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论