Java 集成测试简介
本文介绍集成测试并重点介绍如何将其与单元测试区分开来。 此外,它还讨论了各种类型的集成测试,并考虑了它们的优缺点。
然后,我们将了解执行集成测试所需的步骤,然后通过实际场景来理解集成测试。
集成测试简介
测试金字塔中的测试分为三种类型:单元测试、集成测试和功能测试。 本文将围绕集成测试展开,这意味着我们在将各个模块组合为一个组时检查它们是否按预期工作。
请记住,软件由多个程序员编写的各种模块组成。 在这里,集成测试的主要目的是通过逻辑集成并将它们作为一个组进行测试来测试两个或多个软件模块之间的接口。
此外,当我们集成各种软件组件时,它通过暴露各种软件组件之间的交互缺陷来确定界面的正确性。 一旦所有软件组件都经过单元测试,集成测试过程就开始了。
请参阅以下内容以可视化单元测试和集成测试。
以下几点强调了集成测试与单元测试的区别。
单元测试 | 集成测试 |
---|---|
在这里,开发人员非常了解软件的内部设计。 | 在这里,测试人员不知道软件的内部设计。 |
每个模块都经过单独测试。 | 我们将所有模块组合起来并作为一个小组进行测试。 |
这称为白盒测试。 | 它被称为黑盒测试。 |
它是由开发人员完成的。 | 它是由测试人员完成的。 |
在这里查找缺陷很容易。 | 在集成测试中暴露缺陷是很困难的。 |
在单元测试中,所有项目组件都单独且独立地进行测试,无需等待其他组件完成。 | 所有部分完成后,将进行集成测试。 |
它具有成本效益。 维护成本也较低。 它是昂贵的。 | 维护成本也很高。 |
模块规格首先完成。 | 接口规范在开始时进行。 |
这一切都是为了深入探索代码。 | 它涉及集成结构的详细可见性。 |
执行速度比集成测试快。 | 这里,由于模块的集成,速度相对较慢。 |
集成测试的重要性
尽管每个软件组件都经过单元测试,但由于各种原因仍然可能暴露缺陷,这增加了集成测试的重要性。 下面列出了其中一些。
- 它可以更好地集成软件模块。
- 通过使用集成测试,我们可以防止软件模块传输过程中数据的修改。
- 它还克服了手动测试的各种问题。
- 集成测试还可以实现有效的第三方测试。
- 需要验证所有软件组件是否在一个单元中工作并按预期产生输出。
- 查找外部硬件接口和软件模块与数据库的接口中的缺陷是有用的。
- 有时,客户在软件模块的开发过程中会改变需求。 在这种情况下,新需求可能不会在单元测试级别进行测试; 因此,集成测试在这里变得至关重要。
集成测试的类型
本文将讨论两种集成测试方法,并考虑其优缺点。
- Big Bang
- 增量(进一步分为自上而下、自下而上和三明治方法)
集成测试的大爆炸方法
在这种方法中,我们在测试过程中集成所有软件组件作为一个单元(称为实体)进行测试。 直到单元测试中的所有组件完成后才会执行此集成过程。
不要将其与系统测试混淆。 我们只测试不同软件模块的集成,而不是整个系统(在系统测试中进行)。
它最显着的优点是我们可以集成所有软件组件并将它们作为一个单元进行测试,但使用大爆炸方法也很难识别缺陷。 因此,对于所有小型系统来说都很方便。
我们可以将大爆炸方法想象如下。 我们集成了六个不同的模块并使用大爆炸进行了测试。
集成测试的增量方法
使用这种方法,我们集成两个或多个逻辑上相互关联的软件模块,然后测试它们的应用程序是否正常运行。 然后,逐步集成其他相关模块/组件并进行测试。
此过程一直持续到所有逻辑相关的组件都被集成和测试为止。
该方法进一步分为自上而下、自下而上和三明治方法。 下面让我们通过存根和驱动程序来了解它们。
- 存根 - 它由被测试的模块/组件调用。
- 驱动程序 - 这需要测试模块/组件。
这里,集成是按照软件系统的控制流程从上到下进行的。 使用这种方法,我们测试较高级别的组件,然后转向较低级别的组件来检查软件功能。
在这里,如果某些组件尚未读取,我们可以使用存根。 这是一种与真实环境中发生的情况一致的有机方式。
这种方法的另一个优点是我们可以优先测试关键模块。 这样,我们就可以在更高的层面上发现缺陷并首先修复它们。
另一方面,最后测试主要功能是这种方法的唯一关注点。 我们可以在下图中将其形象化。
这里,我们首先测试较低级别的模块,它将用于辅助测试较高级别的模块。 此过程一直持续到我们在顶层测试所有模块/组件为止。
在自下而上的方法中,我们使用称为驱动程序的刺激器程序。 在较低层次上很容易发现缺陷和错误,但较高层次的问题只有在所有组件都集成和测试完毕后才能发现。
这种方法结合了自上而下和自下而上的方法,因此称为混合集成测试。 它使用存根和驱动程序。
在这里,顶级组件与较低级别的组件一起进行测试。 同时,较低的组件/模块与顶层模块/组件集成并作为系统进行测试。
我们可以将这种方法形象化如下:
集成测试所需的步骤
无论使用什么软件测试策略(如上所述),都需要执行以下步骤:
- 制定集成测试计划。
- 设计测试场景、案例和脚本。
- 执行所有测试用例,然后暴露并报告缺陷。
- 跟踪并重新测试缺陷。
- 重复步骤 3 和 4,直到我们成功集成。
了解集成测试的真实示例
假设我们有一个名为performPayment()的方法,它有两个参数,分别是double类型的amount和service以及PaymentService。
在单元测试中,我们将通过为服务参数创建模拟来测试它,而集成测试将是一个测试,我们使用实际的外部服务来确保该服务是否按预期响应我们的输入数据。
相关文章
Serialize Object to JSON in Java
发布时间:2023/07/21 浏览次数:195 分类:Java
-
This tutorial demonstrates how to serialize an object to JSON in Java.
Pretty-Print JSON Data in Java
发布时间:2023/07/21 浏览次数:115 分类:Java
-
This tutorial will discuss the JSON Pretty-Print in Java.
Define a Static Method in Java Interface
发布时间:2023/07/21 浏览次数:187 分类:Java
-
This tutorial demonstrates how to define static methods in a Java interface, what are rules for that and why we can't override these static methods.
Java Disable SSL Validation
发布时间:2023/07/21 浏览次数:101 分类:Java
-
This tutorial demonstrates how to disable SSL validation in Java.
Limit Java SSL Debug Logging
发布时间:2023/07/21 浏览次数:184 分类:Java
-
Today, we will learn about Java SSL debug, its importance, various utilities and how to use one or multiple in a single command.
捕获并分析 Java 堆转储
发布时间:2023/07/21 浏览次数:68 分类:Java
-
堆转储包含正在运行的 Java 应用程序在 Java 堆上使用的所有活动对象的快照。 本教程介绍堆转储、其各种格式及其重要性。
Java 中的过滤器列表
发布时间:2023/07/21 浏览次数:69 分类:Java
-
在 Java 中工作时经常需要过滤列表。 在 Java 中过滤列表的多种方法使用核心 Java 和不同的库。本文介绍如何在 Java 中过滤列表。