组件测试


组件测试

软件是在多个模块或组件的帮助下开发的。在这里,我们将探索和讨论以下与组件测试相关的主题,帮助我们了解软件测试中组件测试和产品可靠性的要求。

  • 什么是组件测试?
  • 组件测试的目标
  • 谁执行组件测试?
  • 组件测试流程
  • 我们什么时候需要进行组件测试?
  • 为什么组件测试必不可少?
  • 组件测试的不同测试策略
  • 组件测试示例

在深入探讨上述所有主题之前,我们很清楚,无论怎样,所有的测试方法都有一个目标,这就是为什么所有这些都应该准确执行的原因。

什么是组件测试?

另一种类型的软件测试是组件测试。用于单独测试所有组件以及可用性测试;还对每个特定组件进行交互式评估。它进一步被称为模块测试或程序测试和单元测试。

为了实现组件测试,所有组件或模块都需要处于独立状态和可管理状态。并且软件的所有相关组件都应该是用户可以理解的。

这种类型的测试提供了一种查找缺陷的方法,这些缺陷发生在所有模块中。并且还有助于证明软件的每个组件的工作。

组件测试

组件测试是质量保证团队执行的最重复的黑盒测试类型之一。

它可以单独执行,即与其余系统分开执行。但是,它依赖于首选生命周期模型。

调试测试结构的工具可以在组件测试中使用。

在组件测试中发现错误后,可以尽快修复它们,而无需保留任何记录。

简而言之,我们可以说组件测试的执行确保所有应用程序组件都按照要求正常工作。在分发集成测试之前执行组件测试

组件测试的目标

执行组件测试的主要目的是验证测试对象的输入/输出性能。并且还确保指定的测试对象的功能按照所需的要求或规范正常工作。

让我们看看组件测试的其他一些重要目标:

  • 降低风险
  • 识别组件中的缺陷/错误
  • 验证组件的功能和非功能性能是否符合预期
  • 培养对组件质量的信心
  • 阻止缺陷逃逸到更高的测试级别

组件测试

  • 降低风险

组件测试的实现验证了应用程序的每个单元。并帮助开发人员识别代码中的错误并修复它们。因此,我们可以说组件测试从根本上减少了风险的可能性。

  • 识别组件中的缺陷/错误

执行组件测试的另一个基本目的是识别源代码中的错误。此外,它还验证程序中使用的控制流、函数、数据结构等

  • 验证组件的功能和非功能性能是否符合预期

执行组件测试的目的是验证组件的功能和非功能特性是否正常运行。

换句话说,我们可以描述组件测试的执行保证其设计和规范按预期执行。

它可能涉及功能特性(例如计算的正确性)非功能特性(例如探索内存泄漏)。

  • 培养对组件质量的信心

正如我们从组件测试的定义中了解到的,它发生在单元级别,大多数错误是在编码本身时识别和修复的。

组件测试在建立对组件的信心方面起着至关重要的作用,这意味着额外测试中的错误或缺陷更少。

  • 阻止缺陷逃逸到更高的测试级别

最后,在组件测试中,编码错误由开发人员识别和修复。结果,组件测试减少了更高级别测试中错误的存在。

谁执行组件测试?

组件测试由测试工程师或在IDE 帮助下编写代码的开发人员执行。正如我们已经知道的,单元测试由开发人员执行以执行特定功能或方法的测试。

组件测试流程

组件测试的过程可以通过以下七个步骤完成,如下图所示:

组件测试

让我们一一讨论,以便我们更好地理解:

Step1:需求分析

组件测试的第一步是需求分析,其中检测与每个组件相关联的用户需求。

Step2:测试计划

一旦需求分析阶段完成后,我们将MOV的组件测试过程的下一个步骤,这是测试计划。在此阶段,测试旨在评估用户/客户给出的要求。

Step3:测试规范

一旦测试计划阶段完成后,我们将移动到下一个阶段,被称为测试规范。在这里,我们将确定那些需要执行和遗漏的测试用例。

Step4:测试实现

组件测试过程的第四步是测试实现。当测试用例根据用户需求或规范确定后,只有我们才能实现测试用例。

Step5:测试录音

成功完成上述所有步骤后,我们将进入下一步,即测试录制。在组件测试过程的这一步中,我们有组件测试实施过程中发现的那些缺陷/错误的记录。

Step6:测试验证

一旦错误或缺陷被成功记录,我们将进入测试验证阶段。它是验证产品是否符合规格的过程。

Step7:完成

成功完成上述所有步骤后,我们将进入组件测试过程的最后一步。在此特定步骤中,将评估结果以提供优质产品。

我们什么时候需要进行组件测试?

当对特定应用程序完成单元测试后,我们可以继续进行组件测试。组件在开发后进行测试;因此,从被测组件检索的输出取决于目前尚未创建的其他组件。

根据开发生命周期模型,组件测试可能与其他系统组件分开执行。

并且进行分离以阻止外部影响。因此,我们将使用Stubs 和 Drivers来伪装软件组件之间的接口来测试该组件。

注意:集成测试仅在组件测试执行后进行。

所有模块的主要功能都在组件测试中进行测试,例如:

组件测试的准入标准 组件测试的退出标准
应该创建最少数量的单元测试涉及的组件,并进行单元测试。 所有组件/模块的功能都应该正常工作。并且缺陷日志中没有可用的严重或高或中严重性和优先级缺陷。

为什么组件测试必不可少?

在软件测试中,组件测试起着至关重要的作用。让我们借助以下几点来理解这一点:

组件测试

允许详细检查

组件测试的执行允许在获得每个模块或组件后进行详细检查。

它可以针对实际 Web 服务器上的所有可能的错误或错误进行完全或详尽的测试。这个事实对于组件测试来说是完全不同的,因为我们与单元测试相比,每个单元都没有在实时服务器上进行测试。

早期错误检测

从上面对组件测试的解释我们了解到,它可以在任何阶段实施,这有助于我们相对较快地识别和修复这些错误,从而节省了金钱和大量时间。

开发团队可以在将组件交给质量评估团队之前测试所有可预防的错误或缺陷。

证明合同

组件测试的实现将帮助我们对合同进行认证,这意味着组件测试是可重复的。

因此,我们可以说组件测试是验证我们的模块的最佳方式,它提供了它所承诺的全部内容。因此,与给定软件的任何集成都可以在没有任何不确定性和疑问的情况下进行。

组件测试的不同测试策略

根据测试级别的复杂程度,组件测试分为以下两种类型。

  1. 小型组件测试 (CTIS)
  2. 大型组件测试 (CTIL)

组件测试

为了更好的理解,让我们一一讨论:

1. 小型组件测试 (CTIS)

某些组件测试可以在有或没有特定应用程序或被测软件中的其他模块的情况下执行。如果在与其他模块隔离的情况下执行组件测试,\则表示为小组***件测试,*也表示为CTIS**。

让我们看一个示例,在那里我们可以清楚地了解小型组件测试是如何工作的。

例如:假设我们有一个网站,其中包含五个不同的网页。因此,单独测试每个网页并与其他组件隔离被称为Small 组件测试。

2. 大型组件测试 (CTIL)

大规模组件测试是测试,我们执行组件测试而不与软件的其他模块隔离。

当依赖于模块的性能流时,就会发生这种类型的测试,因此我们无法将它们分开。我们依赖的那些组件还没有被创建,然后我们使用复制模块而不是实际的模块或组件。

注意:这些复制的模块被称为存根(调用函数)和驱动程序(调用函数)。

让我们看一个组件测试的例子,以便我们更好地理解。

例如

让我们假设我们有一个包含三个不同的模块,一个Web应用程序:模块P,模块Q,器模块R

在这里,开发者已经创建了Module Q,需要对其进行测试。

然而,为了完全测试模块 Q,它的一些特性依赖于模块 P,它的一些特性依赖于模块 R

因此,特定模块的性能流程如下:

模块 P → 模块 Q → 模块 R

这个性能流意味着模块 P 和模块 R都依赖于模块 Q。正如我们在下图中看到的,我们有 Stubs 和 Driver,其中 stubs 被称为被调用函数,驱动程序被称为调用函数

组件测试

但是模块P和模块R直到现在还没有建立。因此,在这种情况下,如果我们想完全测试模块 Q。

因此,我们可以根据需要在Stub 和 Drivers的帮助下交换模块 P模块 R。

因此,模块 P 和模块 R主要由存根和驱动程序更改,它们在创建之前作为副本对象执行。

注: Stub:从需要测试的软件模块或组件中调用Stub;正如我们在上图中看到的,Stubs 被模块 P 调用。驱动程序:驱动程序调用模块/组件,需要进行测试,正如我们在上图中看到的驱动程序调用模块 Q。

组件测试示例

假设我们有一个 Web 应用程序,其中包含三个不同的模块,分别是Login、Home 和 User

测试环境中安装了第一个模块(Login),但其他两个模块Home 和 User需要被尚未完成的Login 模块调用。

出于测试目的,开发人员将添加一段代码来复制其余模块的调用方法。这个特定的代码段被称为存根,它被认为是一种自上而下的方法

如果第二个模块(Home)第三个模块(User)已经准备好,但是Login模块还没有开发,两个组件都从那里得到它们的返回值,开发人员将添加一个复制 Login 模块的代码。

这个特定的代码段被称为Drivers,它被认为是一种自底向上的方法。

结论

在本节中,我们讨论了组件测试的深入知识。而且,我们可以得出结论,这是在任何开发阶段评估任何模块功能的准确方法。

在软件开发中,组件测试可以节省成本,并通过消除所有可避免的错误在未来阶段避免不必要的麻烦。

最后,我们可以说单元测试和组件测试是同时执行的。与由开发团队执行的单元测试相反,组件/模块测试由测试团队执行。

始终建议在开始集成测试之前执行完整的组件测试。因为如果组件测试准确,我们会在集成测试中发现更多的小缺陷。