软件是在多个模块或组件的帮助下开发的。在这里,我们将探讨和讨论以下与组件测试相关的主题,这有助于我们了解软件测试中组件测试的要求和产品可靠性。
- 什么是组件测试?
-
组件测试的目标
-
谁执行组件测试?
-
组件测试流程
-
我们什么时候需要执行组件测试?
-
为什么组件测试是必不可少的?
-
组件测试的不同测试策略
-
组件测试示例
在深入探讨上述所有主题之前,我们非常清楚,无论如何,所有测试方法都有一个目标,这就是为什么所有这些都应该准确执行的原因。
1. 什么是组件测试?
另一种类型的软件测试是组件测试。它用于单独测试所有组件以及可用性测试,还对每个特定组件进行交互式评估。它进一步称为模块测试或程序测试和单元测试。
为了实现组件测试,所有组件或模块都需要处于单独状态和可管理状态。并且该软件的所有相关组件都应该是用户可理解的。
这种类型的测试提供了一种查找缺陷的方法,这些缺陷发生在所有模块中。并且还有助于认证软件每个组件的工作。
组件测试是质量保证团队执行的最重复的黑盒测试类型之一。
它可以单独执行,即与其余系统分开执行。但是,它依赖于首选生命周期的模型。
调试或测试结构工具可用于组件测试。
在组件测试中,当发现错误时,可以尽快修复,而无需保留任何记录。
简而言之,我们可以说组件测试的执行确保了所有应用程序组件都按照要求正常工作。组件测试在分发集成测试之前执行。
2. 组件测试的目标
执行组件测试的主要目的是验证测试对象的输入/输出性能。并且还要确保指定的测试对象的功能按照所需的要求或规范正常工作。
让我们看看组件测试的其他一些重要目标:
- 降低风险
-
识别组件中的缺陷/错误
-
验证组件的功能和非功能性能是否符合预期
-
培养对组件质量的信心
- 阻止缺陷逃逸到更高的测试水平
组件测试的实施验证了应用程序的每个单元。并帮助开发人员识别代码中的错误并修复它们。因此,我们可以说组件测试从根本上降低了风险的可能性。
执行组件测试的另一个基本目的是识别源代码中的错误。此外,它还验证程序中使用的控制流、函数、数据结构等。
执行组件测试的目的是验证组件的功能和非功能特性是否正常运行。
换句话说,我们可以描述组件测试的执行保证了它们的设计和规格按预期执行。
它可能涉及功能特性(如计算的正确性)和非功能特性(如探索内存泄漏)。
正如我们从组件测试的定义中了解到的那样,它发生在单元级别,并且大多数错误都是在编码本身时识别和修复的。
组件测试在建立对组件的信心方面起着至关重要的作用,这意味着额外测试中的错误或缺陷更少。
最后,在组件测试中,编码错误由开发人员识别和修复。结果,组件测试减少了更高级别的测试中存在的错误。
3. 谁执行组件测试?
组件测试由测试工程师或在 IDE 帮助下编写代码的开发人员执行。正如我们已经知道的,单元测试由开发人员执行,以执行特定功能或方法的测试。
4. 组件测试流程
组件测试的过程可以通过以下七个步骤完成,如下图所示:
让我们一一讨论,以便我们更好地理解:
步骤1:需求分析
组件测试的第一步是需求分析,其中检测与每个组件关联的用户需求。
步骤 2:测试规划
一旦需求分析阶段完成,我们将进入组件测试过程的下一步,即测试计划。在此阶段,测试旨在评估用户/客户端给出的要求。
步骤3:测试规范
测试计划阶段完成后,我们将进入下一阶段,称为测试规范。在这里,我们将确定那些需要执行和遗漏的测试用例。
步骤4:测试实现
组件测试过程的第四步是测试实现。当测试用例根据用户要求或规范被识别时,那么只有我们可以实现测试用例。
步骤5:测试录制
成功完成上述所有步骤后,我们将进入下一步,即测试录制。在组件测试过程的这一步中,我们有在组件测试实施过程中发现的那些缺陷/错误的记录。
步骤6:测试验证
成功记录错误或缺陷后,我们将进入测试验证阶段。这是验证产品是否符合规范的过程。
步骤7:完成
成功完成上述所有步骤后,我们将进入组件测试过程的最后一步。在这个特定的步骤中,将评估结果以提供高质量的产品。
5. 我们什么时候需要执行组件测试?
当对特定应用程序完成单元测试后,我们可以继续进行组件测试。组件一旦开发出来,就会进行测试;因此,从受测组件检索的输出取决于到目前为止尚未创建的其他组件。
根据开发生命周期模型,组件测试可以与其他系统组件隔离执行。
并且进行隔离以阻止外部影响。因此,我们将使用存根和驱动程序来假装软件组件之间的接口以测试该组件。
所有模块的主要功能都在组件测试中进行测试,例如:
6. 为什么组件测试是必不可少的?
在软件测试中,组件测试起着至关重要的作用。让我们借助以下几点来理解这一点:
允许详细检查
组件测试的执行允许在获取每个模块或组件后进行详细检查。
它可以完全或详尽地测试实际Web服务器上所有可能的错误或错误。这一事实对于组件测试来说是完全例外的,因为我们与单元测试相比,在单元测试中,每个单元都没有在实时服务器上进行测试。
早期错误检测
正如我们从上面的组件测试解释中了解到的那样,它可以在任何阶段实施,这有助于我们相对较快地识别和修复这些错误,因此,我们节省了金钱和大量时间。
开发团队可以在将组件交给质量评估团队之前测试组件是否存在所有可预防的错误或缺陷。
认证合同
组件测试的实施将帮助我们认证合同,这意味着组件测试是可重复的。
因此,我们可以说组件测试是验证模块的最佳方式,它提供了它所承诺的全部内容。因此,可以毫无不确定性和疑问地执行与给定软件的任何集成。
7. 组件测试的不同测试策略
组件测试根据测试级别的复杂性分为以下两种类型。
- 小型组件测试 (CTIS)
-
大型组件测试 (CTIL)
为了更好地理解,让我们一一讨论:
1. 小型组件测试 (CTIS)
某些组件测试可以在特定应用程序或被测软件中使用或不使用其他模块来执行。如果组件测试与其他模块隔离执行,则表示为小型组件测试,也称为CTIS。
让我们看一个示例,我们可以清楚地了解小型组件测试的工作原理。
例如:假设我们有一个网站,其中包括五个不同的网页。因此,单独测试每个网页并隔离其他组件表示为小型组件测试。
2. 大型组件测试 (CTIL)
大型组件测试是测试,我们执行组件测试而不与软件的其他模块隔离。
当依赖于模块的性能流时,就会发生这种类型的测试,因此我们无法将它们分开。我们依赖的那些组件尚未创建,然后我们使用复制模块而不是实际的模块或组件。
注意:这些复制的模块称为存根(称为函数)和驱动程序(调用函数)。 |
让我们看一个组件测试的例子,以便我们更好地理解。
例如
假设我们有一个包含三个不同模块的 Web 应用程序:模块 P、模块 Q 和模块 R。
在这里,开发人员创建了需要测试的模块 Q。
但是,要完全测试模块 Q,它的某些功能依赖于模块 P,而它的某些功能依赖于模块 R。
因此,特定模块的性能流程如下:
模块 P →模块 Q →模块 R
此性能流程意味着模块 P 和模块 R 都依赖于模块 Q。如下图所示,我们有存根和驱动程序,其中存根作为被调用函数调用,驱动程序作为调用函数调用。
但模块 P 和模块 R 直到现在还没有建立。因此,在这种情况下,如果我们想完全测试模块 Q。
因此,我们可以根据需要在存根和驱动程序的帮助下交换模块 P 和模块 R。
因此,模块 P 和模块 R 主要由存根和驱动程序更改,它们作为副本对象执行,直到创建它们。
注意:存根:
从需要测试的软件模块或组件调用存根;如上图所示,Stubs
由模块 P调用。 驱动程序:驱动程序调用模块/组件,需要进行测试,如上图所示,驱动程序调用模块
Q。 |
8. 组件测试示例
假设我们有一个 Web 应用程序,其中包含三个不同的模块,分别是登录、主页和用户。
第一个模块(登录)安装在测试环境中,但另外两个模块 Home 和用户需要由尚未完成的登录模块调用。
出于测试目的,开发人员将添加一段代码来复制其余模块的调用方法。这个特定的代码段被称为存根,它被认为是一种自上而下的方法。
如果第二个模块(主页)和第三个模块(用户)准备就绪,但登录模块尚未开发,两个组件从那里获取其返回值,开发人员将添加一个复制登录模块的代码。
这一特定代码段称为驱动程序,它被认为是一种自下而上的方法。
9. 结论
在本节中,我们讨论了组件测试的深入知识。而且,我们可以得出结论,这是估计任何模块在任何开发阶段的功能的精确方法。
在软件开发中,组件测试可以节省成本,并通过消除所有可避免的错误来节省未来阶段不必要的麻烦。
最后,我们可以说单元测试和组件测试是同时执行的。与开发团队执行的单元测试相反,组件/模块测试由测试团队执行。
始终建议在开始集成测试之前执行完整的组件测试。因为如果组件测试是准确的,我们将在集成测试期间识别更多小缺陷。
|