集成测试

        集成测试是软件测试的第二步,其具体过程如下。

        第一,非增量式测试

        非增量式测试是采用一步到位的方法来构造测试:对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。

        采用非增量式测试方法进行集成测试如下图所示:

        非增量式测试的缺点:当一次集成的模块较多时,非增量式测试容易出现混乱,因为测试时可能发现了许多故障,为每一个故障定位和纠正非常困难,并且在修正一个故障的同时,可能又引入了新的故障;新旧故障混杂,很难判定出错的具体原因和位置。

 

        第二,增量式测试

        增量式测试的集成是逐步实现的:逐次将未曾集成测试的模块和已经集成测试的模块(或子系统)结合成程序包,再将这些模块集成为较大系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。

        按照不同的实施次序,增量式集成测试又可以分为三种不同的方法:自顶向下增量式测试,自底向上增量式测试和混合增量式测试。

(1)自顶向下增量式测试

        自顶向下增量式测试表示逐步集成和逐步测试是按照结构图自上而下进行的,即模块集成的顺序是首先集成主控模块(主程序),然后依照控制层次结构向下进行集成;从属于主控模块的按深度优先方式(纵向)或者广度优先方式(横向)集成到结构中去。

         深度优先方式的集成:首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。

         广度优先方式的集成:首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。

         集成测试的整个过程由3个步骤完成:

1)主控模块作为测试驱动器

2)根据集成方式(深度或广度),下层的桩模块一次一次地被替换为真正的模块

3)在每个模块被集成时,都必须进行单元测试;重复第2)步,直到整个系统被测试完成

         按照广度优先方式进行集成测试如下图所示:

         按照深度优先方式进行集成测试如下图所示:

(2)自底向上增量式测试

        自底向上增量式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的,即从程序模块结构的最底层模块开始集成和测试。

        由于是从最底层开始集成,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经集成并测试完成,所以不再需要使用桩模块进行辅助测试;在模块测试过程中需要从子模块得到的信息可以直接运行子模块得到。

       采用自底向上增量式测试方法进行集成测试如下图所示:

(3)混合增量式测试

        混合增量式测试是把自顶向下测试和自底向上测试这两种方式结合起来进行集成和测试;这样可以兼具两者的优点,而摒弃其缺点。

        常见的两种混合增量式测试方式:

1)衍变的自顶向下的增量式测试:基本思想是强化对输入/输出模块和引入新算法模块的测试,并自底向上集成为功能相对完整且相对独立的子系统,然后由主模块开始自顶向下进行增量式测试

2)自底向上-自顶向下的增量式测试:首先对含读操作的子系统自底向上直至根节点模块进行集成和测试,然后对含写操作的子系统做自顶向下的集成与测试

 

        第三,不同集成测试方法的比较

(1)非增量式测试与增量式测试的比较

        非增量式测试的方法是先分散测试,然后集中起来再一次完成集成测试;假如在模块的接口处存在错误,只会在最后的集成测试时一下子暴露出来。

        增量式测试是逐步集成和逐步测试的方法,把可能出现的差错分散暴露出来,便于找出问题和修改;而且一些模块在逐步集成的测试中,得到了较多次的考验;因此,可能会取得较好的测试效果。

        结论:增量式测试要比非增量式测试具有一定的优越性。

(2)自顶向下与自底向上增量式测试的比较

        自顶向下增量式测试:主要优点在于它可以自然的做到逐步求精,一开始就能让测试者看到系统的框架;主要缺点是需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定困难。

        自底向上增量式测试:优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也无困难;主要缺点在于,直到最后一个模块被加进去之后才能看到整个程序(系统)的框架。

时间: 2024-07-29 04:50:45

集成测试的相关文章

Rails测试《九》集成测试integration test

开场白 今天我们来熟悉一下rails的集成测试integration test. 简介 集成测试主要是测试多个controller之间的交互,以及测试应用中比较重要的工作流程,验证这些工作流程是否符合预期的设想. 不像单元测试和功能测试,是自动添加的.集成测试是需要我们手动添加的,rails提供了一个命令 rails generate integration_test 通过命令就可以在test/integration文件夹创建集成测试. $ rails generate integration_

集成测试的思路总结

对于集成测试,初学者往往比较模糊,到底怎么测?是不是把两个模块连在一起,然后采用单元测试的技术,测试这个更大的模块? 我们都知道,集成测试关注的是模块之间的接口.那么可以将"接口"作为切入点.纵观模块之间的接口,我们可以归纳为以下几种类型,下面一一介绍一下. 1.通信协议:两个模块之间通信采用的是标准的或者自定义的(网络)协议: 协议中即包含数据部分,又包含控制部分:有些实现将数据与控制分离,如FTP:而大部分实现将数据与控制通过一条链路来传递,往往通过不同的消息包进行分离. 2.调用

在Spring中进行集成测试详解

在单元测试时,我们尽量在屏蔽模块间相互干扰的情况下,重点关注模块内部逻辑的 正确性.而集成测试则是在将模块整合在一起后进行的测试,它的目的在于发现一些模块 间整合的问题.有些功能很难通过模拟对象进行模拟,相反它们往往只能在真实模块整合 后,才能真正运行起来,如事务管理就是其中比较典型的例子. 按照Spring的推荐(原话:You should not normally use the Spring container for unit tests: simply populate your PO

使用Rational Functional Tester V8.1来自动化Web应用程序的集成测试

节省时间并得到更多可靠的结果 简介:手工测试 Web 应用程序是一个错误倾向的任务.自动化测试将测试人员从输入测试数据和生成 结果中解放出来.本文描述了怎样使用 IBM Rational Functional Tester V8.1 来自动化 Web 应用程序的集成测试操作. 自动化集成测试的利益 在软件开发生命周期的集成测试期 间,单个软件构件会得到合并,并作为一个组进行测试.在一个 Java Enterprise Edition(JEE )Web 应用程序中,软件构件通常是 HTML 或者

iOS集成测试框架—KIF 滚动屏幕时隐藏toolbar

iOS集成测试框架--KIF KIF的全称是"Keep It Functional",是一款iOS集成测试框架,来自square.KIF使用了苹果非公开的API,很多iOS测试框架都使用了非公开API,出于测试目的还是安全的,KIF并不使用非公开的API生成代码,所以苹果不会拒绝你的应用. 注意: KIF 2.0并不兼容KIF 1.0,并且使用了不同的测试执行机制. 功能: 1.KIF用Objective C写成,最大化集成代码的同时还可以最小化层级数目. 2.配置简单.KIF可直接集

MAVEN集成测试环境搭建

1. MAVEN + SVN + HUDSON + SONAR集成测试环境搭建. 1.1 软件准备 Hudson.Jenkins.Sonar 1.2 软件安装 说明:本例均使用将应用程序部署至web容器下,Hudson和Sonar有其他部署启动方式,如有需要请自行使用,本文不做赘述. 1.2.1 安装hudson 1)将下载到的hudson.war文件部署至web容器中,启动web容器. 2)访问地址http://localhost:8080/hudson,显示如下: (8080是容器默认端口,

spring-求大神!!在Spring3.2和Hibernate4.2.8集成测试的时候出现数据库连不上的错误。。。

问题描述 求大神!!在Spring3.2和Hibernate4.2.8集成测试的时候出现数据库连不上的错误... org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Could no

ScalaTest + Selenium集成测试教程

在 Play 1 和 Play 2 中都内置了 Selenium 集成测试工具, 这里自己尝试自己单独测试用 ScalaTest + Selenium 来做简单的集成测试. Selenium 可以支持内置的无界面 Java 实现的浏览器, 也可以用外部浏览器, 如 Safari, Firefox, Chrome, IE, Opera 或移动设备的浏览器. 使用不同外部浏览的方式或用插件(Safari/Firefox 等) 或是像借助于 Chromium 来驾驭 Chrome 浏览器. 而我们这里

深入浅出Docker(四):Docker的集成测试部署之道

深入浅出Docker(四):Docker的集成测试部署之道 1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过Image的形式分享给项目的所有开发成员,以简化开发环境的搭建.但是,在没有Docker技术之前就已经有类如Vagrant的开发环境分发技术,软件开发者一样可以创建类似需求的环境配

使用 Vagrant 和 Fabric 用于集成测试 【已翻译100%】

在cloudshare中,我们的服务是由许多部件组成的.当我们更改一个给定组件的代码后我们总需要测试它.我们小心地尝试着平衡单元测试和集成测试(或系统测试)的总量,以便能够实现合理的代码覆盖率和测试运行时间,最重要的是提升对我们代码的信心. 不久前,我们彻底改写了一个叫网关的组件.这个网关运行在Linux机器上,其处理了我们内部的许多路由,防火墙,NAT,负载平衡以及流量日志等很多内容.它基本上是一个路由器/防火墙,通过获取动态配置并根据它了解的配置实施不同的网络规则.这次改写是通过重新设计其(