集成测试


前言: 最近,项目需要进行集成测试,来梳理一下集成测试的主要过程~~

1. 什么是集成测试?

(1)测试概念:集成测试是测试和组装软件的系统化技术
(2)测试重点:测试模块的接口部分
(3)测试任务:确定模块组装方案,将经过测试的模块组装为一个完整的系统
(4)测试方法:以黑盒测试为主,按照组装方法进行测试
(5)测试目的:在单元测试基础之上,将各个模块组装起来进行的测试,其主要目的:发现与接口有关的模块之间的问题

2. 集成测试的重点

  1. 各个模块之间的数据是否能够按期望值传递;
  2. 是否仍然存在单元测试时所没发现的资源竞争问题;
  3. 集成到一起能否实现所期望的父功能;
  4. 兼容性,一个模块是否对其他与之相关的模块产生负面影响;
  5. 集成后,每个模块的误差是否会累计扩大,是否会达到了不可接受的程度。

3. 集成测试系统分析

在集成测试之前,我们要进行系统分析:
(1)体系结构分析

  • 跟踪需求分析,对要实现的系统划分出结构层次图
  • 对系统各个组件之间的依赖关系进行分析,然后据此确定集成测试的粒度,即集成模块的大小

(2)模块分析

  • 确定本次要测试的模块
  • 与之相关的模块按优先级排列

(3)接口分析

  • 确定系统的边界、子系统的边界和模块的边界
  • 确定模块内部的接口
  • 确定子系统内模块间接口
  • 确定子系统间接口
  • 确定系统与操作系统、硬件、第三方软件的接口

在这里插入图片描述
(4)风险分析

  • 定义风险并且找出阻止潜在的问题变成现实的方法的过程
  • 项目风险、商业风险、技术风险

(5)可测试性分析
(6)集成测试策略分析

4. 集成测试策略

集成测试策略分为非增量式集成测试增量式集成测试

  • 非增量式集成测试:独立地测试程序的每个模块(单元测试),然后再把它们组合成一个整体进行测试
  • 增量式集成测试:将待测模块与已测模块集合连接起来进行测试。在这一过程中,不断地把待测模块连接到已测模块集(或其子集)上,对待测模块进行测试,直到最后一个模块测试完毕为止。
    在这里插入图片描述
4.1 非增量式集成测试

大爆炸方法属于非增量式集成测试方法,该方法一次性集成了所有模块,即它不会逐个集成模块。它会在集成后验证系统是否按预期工作。

(1)适用范围

  • 只需要修改或增加少数几个模块的前期产品稳定的项目;
  • 功能少,模块数量不多,程序逻辑简单,并且每个组件都已经过充分单元测试的小型项目

(2)缺点

  • 很难检测出导致问题的模块
  • 需要所有模块一起进行测试,这反过来会导致更少的测试时间,因为设计,开发,集成将占用大部分时间
  • 测试仅在一次进行,因此不会孤立地进行关键模块测试

(3)示例
在这里插入图片描述

测试过程:
先独立的测试每个模块(单元测试),然后再把它们组合成一个整体进行测试。

Test A(with stubs for B and C)
Test B(with driver for A and stubs for D)
Test C(with driver for A)
Test D(with driver for B)
Test(A,B,C,D)

4.2 增量式集成测试

增量式集成测试主要有 “自顶向下”集成“自底向上”集成三明治方法(混合式集成)

  • “自顶向下”集成:逐步集成和逐步测试是按结构图自上而下进行的,即:模块集成顺序是首先集成主控模块,然后按照软件控制层次接口向下进行集成。从属于主控模块的模块按照深度优先策略或广度优先策略集成到结构中去。
  • “自底向上”集成:从最底层的模块开始,按结构图自下而上逐步进行集成并逐步进行测试工作。
  • 三明治方法(混合式集成):三明治方法也称为混合式集成,该方法把系统划分成三层,中间一层为目标层,目标层之上采用自顶向下集成,之下采用自底向上集成。
4.2.1 自顶向下集成

(1)适用范围

  • 产品控制结构比较清晰和稳定;
  • 高层接口变化较小;
  • 底层接口未定义或经常可能被修改;
  • 产口控制组件具有较大的技术风险,需要尽早被验证;
  • 希望尽早能看到产品的系统功能行为。

(2)测试步骤

  • 第一步,对主控制模块进行测试,测试时用存根程 序代替所有直接附属于主控制模块的模块;
  • 第二步,根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序);
  • 第三步,在结合进一个模块的同时进行测试;
  • 第四步,回归测试(即全部或部分地重复以前做过的测试),保证新加的模块没有引入新的错误;

(3)测试策略
自顶向下测试的策略有两种:广度优先深度优先

  • 广度优先:从上到下(分层),从左到右(排序)
    在这里插入图片描述

  • 深度优先:从左到右(分支),从上到下(排序)
    在这里插入图片描述

(4)优点

  • 较早地验证主要的控制和判断点。
  • 可以首先实现和验证一个完整的软件功能,增强信心;
  • 减少了测试驱动程序开发和维护的费用;
  • 可以和开发设计工作一起并行执行集成测试,能够灵活的适应目标环境;
  • 容易进行故障隔离和错误定位。

(5)缺点

  • 桩模块的开发和维护费用大
  • 底层验证被推迟
  • 底层组件测试不充分
4.2.2 自底向上集成

(1)适用范围

  • 适应于底层接口比较稳定
  • 高层接口变化比较频繁
  • 底层组件较早被完成

(2)测试步骤

  • 第一步,把低层模块组合成实现某个特定的软件子功能的族;
  • 第二步,写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;
  • 第三步,对由模块组成的子功能族进行测试;
  • 第四步,去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。

(3)测试过程示例
在这里插入图片描述
(4)优点

  • 对底层组件行为较早验证
  • 工作最初可以并行集成,比自顶向下效率高
  • 减少了桩的工作量
  • 能较好锁定软件故障所在位置

(5)缺点

  • 直到最后一个模块加进去之后才能看到整个系统的框架
  • 只有到测试过程的后期才能发现时序问题和资源竞争问题
  • 驱动模块的设计工作量大
  • 不能被及时发现高层模块设计上的错误
4.2.3 三明治方法(混合式集成)

(1)集成策略
在这里插入图片描述
(2)集成步骤

  • 首先对目标层之上一层使用自顶向下集成,因此测试A,使用桩代替B,C,D
  • 其次对目标层之下一层使用自底向上集成,因此测试E, F,使用驱动代替B, D
  • 其三,把目标层下面一层与目标层集成,因此测试(B,E),(D, F),使用驱动代替A
  • 最后,把三层集成到一起,因此测试(A,B,C,D,E,F)

(3)优点

  • 除了具有自顶向下和自底向上两种集成策略的优点之外,运用一定的技巧,能够减少了桩模块和驱动模块的开发。

(4)缺点

  • 在被集成之前,中间层不能尽早得到充分的测试。

(5)三明治方法改进

改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底。
在这里插入图片描述

5. 集成测试用例设计

集成测试用例设计主要关注模块之间的接口,集成连接,模块之间的数据传输,作为已经过单元测试的模块/组件,即功能和其他测试方面已经涵盖。因此,主要思想是测试集成时两个工作模块的集成是否按预期工作。

(1)为系统运行设计的用例 (测试接口)

  • 等价类划分
  • 边界值分析
  • 基于决策表的测试

(2)为正向测试设计用例

  • 是否按照概要设计实现了预期的功能。

(3)为逆向测试设计用例

  • 被测接口是否实现了需求规格没有描述的功能
  • 检查规格说明中可能出现的遗漏或者错误(如:非法访问)

(4)为满足特殊需求设计用例

  • 安全性、性能、可靠性等

(5)为高覆盖设计用例

  • 功能覆盖分析
  • 接口覆盖分析

6. 集成测试过程

集成测试过程主要有以下步骤:制定集成测试计划、设计集成测试、实施集成测试、执行集成测试、评估集成测试

(1)计划阶段

  • 概要设计参考需求规格说明书、概要设计文档、产品开发计划时间表来制定。

  • 内容包括:确定测试对象和测试范围、评估工作量、角色分工、标识各阶段任务、风险分析 、应急计划、工具、环境等

(2)设计阶段

  • 一般在详细设计开始时,就可以着手进行。可以把需要规格说明书、概要设计、集成测试计划文档作为参考依据。

(3)实施阶段

  • 参考需求规格说明书、概要设计、集成测试计划、集成测试设计等相关文档来进行。
  • 内容包括:用例设计、规程设计、测试代码设计、测试脚本开发、工具开发或选择,最后,将相关产品提交相关人员评审。

(4)执行阶段

  • 前提:各模块的单元测试已经通过。
  • 执行完毕将测试报告等提交。

(5)评估阶段

  • 当集成测试执行结束后,要召集相关人员对测试结果进行评估,确定是否通过集成测试。

7. 集成测试工具

本次计划使用 Jmeter进行集成测试,JMeter是Apache组织开发的基于Java的压力测试工具。具有开源免费、框架灵活、多平台支持等优势。除了压力测试外,JMeter在接口测试方面也有广泛的应用。

对于Jmeter,就不做过多介绍了,点击查看:Jmeter下载安装配置教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CUG-GZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值