什么是集成测试?(示例)

什么是集成测试?

集成测试被定义为一种测试类型,其中软件模块被逻辑地集成并作为一个组进行测试。一个典型的软件项目由不同的程序员编写的多个软件模块组成。此级别测试的目的是暴露这些软件模块在集成时交互中的缺陷。

集成测试侧重于检查这些模块之间的数据通信。因此,它也被称为“I & T”(集成与测试)、“字符串测试”,有时也称为“线程测试”

为什么要进行集成测试?

Integration Testing

尽管每个软件模块都经过了单元测试,但由于各种原因仍然存在缺陷,例如

  • 模块通常由单个软件开发人员设计,他们的理解和编程逻辑可能与其他程序员不同。集成测试对于验证软件模块的协同工作是必要的。
  • 在模块开发时,客户很可能会更改需求。这些新需求可能未经过单元测试,因此系统集成测试变得必要。
  • 软件模块与数据库的接口可能存在错误
  • 任何外部硬件接口都可能存在错误
  • 异常处理不足可能导致问题。

如果视频无法访问,请点击此处

集成测试用例示例

集成测试用例与其他测试用例不同,它主要关注模块之间的接口和数据/信息流。这里优先考虑的是集成链接,而不是已经测试过的单元功能。

以下场景的集成测试用例示例:应用程序有3个模块,例如“登录页面”、“邮箱”和“删除邮件”,它们每个都逻辑集成。

这里不需要过多关注登录页面的测试,因为它已经在单元测试中完成。但要检查它如何与邮箱页面链接。

同样,邮箱:检查它与删除邮件模块的集成。

测试用例ID 测试用例目标 测试用例描述 预期结果
1 检查登录和邮箱模块之间的接口链接 输入登录凭据并点击登录按钮 被定向到邮箱
2 检查邮箱和删除邮件模块之间的接口链接 从邮箱中选择邮件并点击删除按钮 所选邮件应出现在“已删除/垃圾箱”文件夹中

集成测试的类型

软件工程定义了多种执行集成测试的策略,即:

  • 大爆炸方法
  • 增量方法:进一步分为以下几类
    • 自顶向下方法
    • 自底向上方法
    • 三明治方法——自顶向下和自底向上方法的组合

以下是不同的策略、它们的执行方式以及它们的局限性和优点。

大爆炸测试

大爆炸测试是一种集成测试方法,其中所有组件或模块一次性集成在一起,然后作为一个单元进行测试。这组组合的组件在测试时被视为一个实体。如果单元中的所有组件都未完成,集成过程将不会执行。

优点

  • 适用于小型系统。

缺点

  • 故障定位困难。
  • 鉴于此方法中需要测试的接口数量众多,一些需要测试的接口链接可能很容易被遗漏。
  • 由于集成测试只能在“所有”模块设计完成后才能开始,因此测试团队在测试阶段的执行时间将更少。
  • 由于所有模块都同时测试,高风险关键模块未被隔离并优先测试。处理用户界面的外围模块也未被隔离并优先测试。

增量测试

增量测试方法中,测试是通过集成两个或多个逻辑上相互关联的模块,然后测试应用程序的正常功能来进行的。然后,其他相关模块以增量方式集成,此过程持续进行,直到所有逻辑相关的模块都成功集成和测试。

增量方法又通过两种不同的方法进行

  • 自底向上
  • 自顶向下

存根和驱动程序

存根和驱动程序是集成测试中的虚拟程序,用于促进软件测试活动。这些程序充当测试中缺失模型的替代品。它们不实现软件模块的完整编程逻辑,但在测试时模拟与调用模块的数据通信。

存根:由被测模块调用。

驱动程序:调用待测模块。

自底向上集成测试

自底向上集成测试是一种策略,其中首先测试较低级别的模块。然后,这些经过测试的模块被进一步用于促进较高级别模块的测试。该过程持续进行,直到所有顶层模块都经过测试。一旦较低级别的模块经过测试并集成,就会形成下一级别的模块。

图示表示:

Bottom-up Integration Testing

优点

  • 故障定位更容易。
  • 不像大爆炸方法那样浪费时间等待所有模块开发完成。

缺点

  • 控制应用程序流程的关键模块(在软件架构的顶层)最后测试,可能容易出现缺陷。
  • 无法实现早期原型

自顶向下集成测试

自顶向下集成测试是一种集成测试方法,它按照软件系统的控制流从上到下进行。首先测试高级模块,然后测试和集成低级模块以检查软件功能。如果某些模块尚未准备好,则使用存根进行测试。

图示表示

Top-down Integration Testing

优点

  • 故障定位更容易。
  • 有可能获得早期原型。
  • 关键模块优先测试;主要设计缺陷可以首先发现并修复。

缺点

  • 需要许多存根。
  • 较低级别的模块测试不足。

三明治测试

三明治测试是一种策略,其中顶层模块与底层模块同时进行测试,底层模块与顶层模块集成并作为一个系统进行测试。它是自顶向下和自底向上方法的组合,因此被称为混合集成测试。它同时使用存根和驱动程序。

Sandwich Testing

如何进行集成测试?

集成测试过程,无论软件测试策略(如上所述)如何

  1. 准备集成测试计划
  2. 设计测试场景、用例和脚本。
  3. 执行测试用例,然后报告缺陷。
  4. 跟踪和重新测试缺陷。
  5. 重复步骤3和4,直到集成成功完成。

集成测试计划简述

它包括以下属性

  • 测试方法/方法(如上所述)。
  • 集成测试的范围和范围外项目。
  • 角色和职责。
  • 集成测试的先决条件。
  • 测试环境。
  • 风险和缓解计划。

集成测试的进入和退出标准

任何软件开发模型中集成测试阶段的进入和退出标准

进入标准

  • 经过单元测试的组件/模块
  • 所有高优先级缺陷已修复并关闭
  • 所有模块代码完成并成功集成。
  • 集成测试计划、测试用例、场景已签署并记录。
  • 为集成测试设置所需的测试环境

退出标准

  • 集成应用程序测试成功。
  • 已执行的测试用例已记录
  • 所有高优先级缺陷已修复并关闭
  • 提交技术文档,然后是发布说明。

集成测试的最佳实践/指南

  • 首先,确定可以采用的集成测试策略,然后相应地准备测试用例和测试数据。
  • 研究应用程序的架构设计,并识别关键模块。这些模块需要优先测试。
  • 从架构团队获取接口设计,并创建测试用例以详细验证所有接口。与数据库/外部硬件/软件应用程序的接口必须详细测试。
  • 在测试用例之后,测试数据扮演着关键角色。
  • 在执行之前,务必准备好模拟数据。不要在执行测试用例时选择测试数据。