`
阅读更多

集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。

集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。

集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。

集成测试是单元测试的逻辑扩展。在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。集成测试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。最后,还要测试构成系统的所有模块组合能否正常工作。集成测试所持的主要标准是《软件概要设计规格说明》,任何不符合该说明的程序模块行为都应该加以记载并上报。

所有的软件项目都不能摆脱系统集成这个阶段。不管采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元只有经过集成才能形成一个有机的整体。具体的集成过程可能是显性的也可能是隐性的。只要有集成,总是会出现一些常见问题,工程实践中,几乎不存在软件单元组装过程中不出任何问题的情况。从图1可以看出,集成测试需要花费的时间远远超过单元测试,直接从单元测试过渡到系统测试是极不妥当的做法。

集成测试的必要性还在于一些模块虽然能够单独地工作,但并不能保证连接起来也能正常工作。程序在某些局部反映不出来的问题,有可能在全局上会暴露出来,影响功能的实现。此外,在某些开发模式中,如迭代式开发,设计和实现是迭代进行的。在这种情况下,集成测试的意义还在于它能间接地验证概要设计是否具有可行性。

集成测试的目的是确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确。它所测试的内容包括单元间的接口以及集成后的功能。使用黑盒测试方法测试集成的功能。并且对以前的集成进行回归测试。

一、集成测试过程

二、单元测试工作内容及其流程

三、集成测试需求获取

集成测试需求所确定的是对某一集成工作版本的测试的内容,即测试的具体对象。集成测试需求主要来源于设计模型(Design Model)和集成构件计划(Integration Build Plan)。集成测试着重于集成版本的外部接口的行为。因此,测试需求须具有可观测、可测评性。

1. 集成工作版本应分析其类协作与消息序列,从而找出该工作版本的外部接口。

2. 由集成工作版本的外部接口确定集成测试用例。

3. 测试用例应覆盖工作版本每一外部接口的所有消息流序列。

注意:一个外部接口和测试用例的关系是多对多,部分集成工作版本的测试需求可映射到系统测试需求,因此对这些集成测试用例可采用重用系统测试用例技术。

四、集成测试工作机制

软件集成测试工作由产品评测部担任。需要项目组相关角色配合完成。如图示:

软件评测部:

软件项目组:

集成测试工作内容及其流程工作流程:

五、集成测试产生的工件清单

1、 软件集成测试计划
    2、 集成测试用例
    3、 测试过程
    4、 测试脚本
    5、 测试日志
    6、 测试评估摘要

六、集成测试常用方案选型

集成测试的实施方案有很多种,如自底向上集成测试、自顶向下集成测试、Big-Bang集成测试、三明治集成测试、核心集成测试、分层集成测试、基于使用的集成测试等。在此,笔者将重点讨论其中一些经实践检验和一些证实有效的集成测试方案。

·自底向上集成测试

自底向上的集成(Bottom-Up Integration)方式是最常使用的方法。其他集成方法都或多或少地继承、吸收了这种集成方式的思想。自底向上集成方式从程序模块结构中最底层的模块开始组装和测试。因为模块是自底向上进行组装的,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实模块,给待测模块提供调用接口或数据的测试用软件模块)。自底向上集成测试的步骤大致如下:

步骤一: 按照概要设计规格说明,明确有哪些被测模块。在熟悉被测模块性质的基础上对被测模块进行分层,在同一层次上的测试可以并行进行,然后排出测试活动的先后关系,制定测试进度计划。图2给出了自底向上的集成测试过程中各测试活动的拓扑关系。利用图论的相关知识,可以排出各活动之间的时间序列关系,处于同一层次的测试活动可以同时进行,而不会相互影响。

步骤二: 在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题。这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。

 步骤三: 将各软件模块集成为子系统(或分系统)。检测各自子系统是否能正常工作。同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。

 步骤四: 将各子系统集成为最终用户系统,测试是否存在各分系统能否在最终用户系统中正常工作。

方案点评: 自底向上的集成测试方案是工程实践中最常用的测试方法。相关技术也较为成熟。它的优点很明显: 管理方便、测试人员能较好地锁定软件故障所在位置。但它对于某些开发模式不适用,如使用XP开发方法,它会要求测试人员在全部软件单元实现之前完成核心软件部件的集成测试。尽管如此,自底向上的集成测试方法仍不失为一个可供参考的集成测试方案。

·核心系统先行集成测试

核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。每次加入一个外围软件部件都产生一个产品基线,直至最后形成稳定的软件产品。核心系统先行集成测试法对应的集成过程是一个逐渐趋于闭合的螺旋形曲线,代表产品逐步定型的过程。其步骤如下:

步骤一: 对核心系统中的每个模块进行单独的、充分的测试,必要时使用驱动模块和桩模块;

步骤二: 对于核心系统中的所有模块一次性集合到被测系统中,解决集成中出现的各类问题。在核心系统规模相对较大的情况下,也可以按照自底向上的步骤,集成核心系统的各组成模块。

步骤三: 按照各外围软件部件的重要程度以及模块间的相互制约关系,拟定外围软件部件集成到核心系统中的顺序方案。方案经评审以后,即可进行外围软件部件的集成。

步骤四: 在外围软件部件添加到核心系统以前,外围软件部件应先完成内部的模块级集成测试。

步骤五: 按顺序不断加入外围软件部件,排除外围软件部件集成中出现的问题,形成最终的用户系统。

方案点评: 该集成测试方法对于快速软件开发很有效果,适合较复杂系统的集成测试,能保证一些重要的功能和服务的实现。缺点是采用此法的系统一般应能明确区分核心软件部件和外围软件部件,核心软件部件应具有较高的耦合度,外围软件部件内部也应具有较高的耦合度,但各外围软件部件之间应具有较低的耦合度。

·高频集成测试

高频集成测试是指同步于软件开发过程,每隔一段时间对开发团队的现有代码进行一次集成测试。如某些自动化集成测试工具能实现每日深夜对开发团队的现有代码进行一次集成测试,然后将测试结果发到各开发人员的电子邮箱中。该集成测试方法频繁地将新代码加入到一个已经稳定的基线中,以免集成故障难以发现,同时控制可能出现的基线偏差。使用高频集成测试需要具备一定的条件: 可以持续获得一个稳定的增量,并且该增量内部已被验证没有问题; 大部分有意义的功能增加可以在一个相对稳定的时间间隔(如每个工作日)内获得; 测试包和代码的开发工作必须是并行进行的,并且需要版本控制工具来保证始终维护的是测试脚本和代码的最新版本; 必须借助于使用自动化工具来完成。高频集成一个显著的特点就是集成次数频繁,显然,人工的方法是不胜任的。

高频集成测试一般采用如下步骤来完成:

步骤一: 选择集成测试自动化工具。如很多Java项目采用Junit+Ant方案来实现集成测试的自动化,也有一些商业集成测试工具可供选择。

步骤二: 设置版本控制工具,以确保集成测试自动化工具所获得的版本是最新版本。如使用CVS进行版本控制。

步骤三: 测试人员和开发人员负责编写对应程序代码的测试脚本。

步骤四: 设置自动化集成测试工具,每隔一段时间对配置管理库的新添加的代码进行自动化的集成测试,并将测试报告汇报给开发人员和测试人员。

      步骤五: 测试人员监督代码开发人员及时关闭不合格项。

      按照步骤三至步骤五不断循环,直至形成最终软件产品。

      方案点评: 该测试方案能在开发过程中及时发现代码错误,能直观地看到开发团队的有效工程进度。在此方案中,开发维护源代码与开发维护软件测试包被赋予了同等的重要性,这对有效防止错误、及时纠正错误都很有帮助。该方案的缺点在于测试包有时候可能不能暴露深层次的编码错误和图形界面错误。

      以上我们介绍了几种常见的集成测试方案,一般来讲,在现代复杂软件项目集成测试过程中,通常采用核心系统先行集成测试和高频集成测试相结合的方式进行,自底向上的集成测试方案在采用传统瀑布式开发模式的软件项目集成过程中较为常见。读者应该结合项目的实际工程环境及各测试方案适用的范围进行合理的选型。

分享到:
评论

相关推荐

    软件集成测试报告.doc

    软件集成测试报告 软件集成测试报告是软件测试中的一种重要测试类型,它的主要目的是验证软件系统的各个组件之间的集成是否正确,确保软件系统的正确性、完整性和可靠性。本报告的编制是为了记录软件集成测试的过程...

    系统集成测试报告

    ### 系统集成测试报告知识点解析 #### 一、系统集成测试报告概述 **系统集成测试**是一项重要的软件质量保证活动,旨在验证不同模块或组件之间的集成是否符合预期的功能和性能要求。它不仅关注单个模块的行为,还...

    集成测试报告模板

    根据提供的集成测试报告模板,我们可以总结出一系列关于集成测试的关键知识点。这些知识点涵盖了从测试计划、执行、到结果分析的全过程。 ### 集成测试报告模板知识点详解 #### 一、目的 - **概述**:简要描述文档...

    Tessy—嵌入式软件单元测试/集成测试工具

    在V模型开发中,Tessy主要应用在单元测试和集成测试阶段。单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。基于越早发现bug开发成本越低...

    集成测试方法及策略

    ### 集成测试方法及策略 #### 一、集成测试概述 集成测试是软件测试的一个重要阶段,它关注的是不同模块之间的接口以及这些模块如何协同工作。在软件开发过程中,通常先进行单元测试,确保每个独立的模块都能正常...

    嵌入式系统中软件与硬件的集成测试方法

    嵌入式软件自身软硬件结合的复杂性及其质量的重要性,造成其软件测试的特殊性,就是在执行正常软件测试的单元测试、集成测试、系统测试的过程中,还要考虑到软件与硬件的兼容问题,即需要进行软硬件集成测试。...

    集成测试指南——指导集成测试全过程

    集成测试是一种重要的软件质量保证活动,旨在检测各个独立单元在组合后是否能协同工作,确保系统功能的正确性。本文将深入探讨集成测试的全过程,包括其目的、方法、过程、需求获取、工作机制以及产生的工件。 集成...

    集成测试报告【百度文库】.doc

    **集成测试报告** 1. **目的** 集成测试是软件开发过程中一个至关重要的阶段,其目的是在系统组件或模块被组合在一起时发现并修复接口错误、数据流问题和依赖性问题。通过集成测试,可以确保各个模块在集成后能够...

    系统集成测试计划 实例

    系统集成测试计划实例 在软件开发中,系统集成测试是一个非常重要的步骤,它可以确保系统各个组件之间的正确集成和协作。本文将以一个真实的系统为例,介绍集成测试计划编写的要点和方法。 1. 修订历史记录 在...

    软件集成测试工作流程.doc

    2. 集成测试的流程:包括制定集成测试计划、设计集成测试用例、实施集成测试和评估集成测试等步骤。 知识点:集成测试的流程可以分为四个步骤:制定集成测试计划、设计集成测试用例、实施集成测试和评估集成测试。...

    集成测试(详细PPT)

    集成测试是一种软件开发过程中的关键环节,其目的是在系统组件之间发现并修复接口错误,确保各个模块协同工作。本详细PPT围绕集成测试的主题展开,深入解析了集成测试的原理、目的、策略以及最佳实践,同时也涉及了...

    集成测试的两种模式 集成测试的两种模式

    ### 集成测试的两种模式 在软件开发过程中,集成测试是一项重要的环节,它主要关注各个模块之间的接口以及它们组合在一起时的行为表现。集成测试的目的在于验证不同模块之间是否能够按照预期协同工作,发现并解决...

    Spring Boot 单元测试和集成测试实现详解

    Spring Boot 单元测试和集成测试实现详解 Springs Boot 是一个基于 Java 的框架,提供了一个便捷的方式来开发基于 Spring 的应用程序。在开发过程中,测试是一个非常重要的步骤,单元测试和集成测试是其中的两种...

    集成测试计划-是集成测试计划的模板

    集成测试是软件开发过程中的一个重要阶段,它发生在单元测试之后,系统测试之前,目的是尽早发现模块间的接口问题,确保各个组件能够协同工作。集成测试计划则是指导这一阶段工作的蓝图,它详细描述了集成测试的策略...

    软件测试-集成测试指南

    ### 软件测试——集成测试指南 #### 1. 概述 集成测试作为软件开发生命周期中的关键环节之一,对于确保各个模块之间能够协同工作至关重要。在本指南中,我们将详细介绍集成测试的目的、范围、流程以及所需遵循的...

    集成测试综合文档

    集成测试是软件开发过程中的一个重要阶段,它在单元测试之后,系统测试之前进行,目的是尽早发现模块间的接口问题,确保各个组件能协同工作。这份"集成测试综合文档"很可能包含了全面的集成测试策略、方法、步骤和...

    系统集成测试报告.docx

    试结果分析及结论4.1 测试结果分析在系统集成测试阶段,我们对各个模块进行了深入的集成测试,旨在确保所有组件能够协同工作,提供一个功能完整、性能稳定的应用系统。通过对XXX应用项目的测试,我们收集了详尽的...

Global site tag (gtag.js) - Google Analytics