# 动态测试


动态测试

在本节中,我们将了解动态测试,这是在运行时环境中执行代码时完成的。

我们还了解动态测试,我们为什么使用它,如何执行它,动态测试有哪些不同的技术,动态测试的各种工具

动态测试简介

动态测试是软件测试中最重要的部分之一,用于分析代码的动态行为。

动态测试通过提供输入值并通过实施可以手动或使用自动化过程完成的特定测试用例来验证输出是否符合预期,从而与软件一起工作。

当代码在运行时环境中执行时,可以进行动态测试。这是一个验证过程,其中执行功能测试 [单元、集成、系统和用户验收测试] 和非功能测试 [性能、可用性、兼容性、恢复和安全测试]。

众所周知,静态测试)是一个验证过程,而动态测试是一个验证过程,它们共同帮助我们交付具有成本效益的优质软件产品。

为什么我们需要进行动态测试?

如果我们考虑动态测试可访问的特性,我们就可以很容易地理解如何在STLC 软件测试生命周期\中实施动态测试。

使用动态测试,团队可以验证软件的关键功能,但其中一些功能无需任何评估。它们还会影响软件产品的功能、可靠性和性能。

因此,我们可以执行动态测试来实现以下各个方面:

  • 我们将进行动态测试,以检查应用程序或软件在安装应用程序期间和之后是否正常工作,没有任何错误。
  • 我们可以执行动态测试来验证软件的有效行为。
  • 如果我们要进行动态测试,就应该编译并运行软件。
  • 通常,动态测试用于定义代码的动态行为。
  • 团队实施代码以在动态测试过程中在运行时环境中测试软件应用程序的性能。
  • 它确保软件应用程序与客户的潜力、需求和最终用户的并发性。
  • 它是一种测量多种环境压力对软件应用程序(如网络、硬件)的影响的操作技术

动态测试的特点

为了理解软件测试技术的基础,我们必须了解它们的属性和其他几个组件。因此,以下是动态测试的一些重要特征:

  • 它在软件测试的整个验证阶段实施。
  • 动态测试是通过执行程序来完成的。
  • 功能测试和非功能测试都包含在动态测试中。
  • 在动态测试中,我们可以轻松识别特定软件的错误。
  • 它帮助团队验证软件应用程序的可靠性。
  • 与静态测试不同,团队实施软件的代码以获得动态测试中的预期输出。
  • 与其他测试技术相比,动态测试直接在软件应用程序上执行。
  • 动态测试是一种更正式的测试方法,适用于不同的测试活动,例如测试执行、覆盖率考虑、报告和测试用例识别。

动态测试流程

通常,动态测试在确定方法和测试实施性能时遵循一个设定的过程,并且团队可以移动以执行不同的测试活动。

借助这个过程,团队可以从方法和策略中发现任何不规则之处,并帮助我们展示所有测试步骤。

STLC中,动态测试的过程涉及不同的功能。而动态测试过程中的所有功能都依赖于测试过程中较早的任务的结论。

动态测试过程将按以下步骤完成:

  • 测试用例设计
  • 测试环境升级
  • 测试用例执行
  • 测试分析与评估
  • 错误报告

实际的动态测试过程从软件测试生命周期中的测试用例设计开始。现在,我们将一步一步地讨论,以全面了解动态测试过程。

动态测试

Step1:测试用例设计

在动态测试过程的第一步中,团队将设计测试用例。在这里,我们正在创建那些依赖于项目开始之前建立的测试要求和范围的测试用例。

在这一步中,我们可以产生测试条件,获取测试用例,提取覆盖项,识别那些需要测试的特征。

Step2:环境设置

测试环境阶段,我们将确保测试环境应始终与生产环境平行,因为测试是直接在软件产品上实现的。

在这一步中,动态测试过程的主要目标是安装测试环境,这有助于我们在测试机器上取得成功。

Step3:测试执行

一旦我们成功安装了测试环境,我们将执行在动态测试过程的初级阶段准备的那些测试用例。

Step4:分析与评估

执行完测试用例后,我们将分析和评估从测试中得出的结果。我们会将这些结果与预期结果进行比较。

如果根据执行结果预期和实际结果不一样,我们会将这些测试用例视为失败,并将 Bug 记录到 Bug 存储库中。

步骤 5:错误报告

在分析测试用例后,我们将向相关人员报告并记录实际结果与预期结果之间的任何错误或缺陷。相关人员将确保问题已得到解决并提供优质产品。

动态测试示例

让我们举一个示例来了解动态测试的工作原理。

因此,为此,我们将了解任何应用程序的登录模块,例如www。推特.com。

假设我们要创建一个具有安全密码的新帐户,因此我们需要在密码字段中遵循一些预定义的规则

并且密码应该有八个字符,大写字母和至少一个特殊字符。

如果我们正在测试此功能,我们将采用所有输入条件进行测试,然后验证输出。

我们还可以设置非工作约束,例如输入一个4 字符的密码,并验证是否发生错误。

动态测试的类型

动态测试分为两种不同的测试方式,具体如下:

  • 白盒测试
  • 黑盒测试

这两种测试技术都将帮助我们有效地执行动态测试过程,因为它们在验证软件的性能和质量方面发挥着重要作用。

让我们一一详细了解它们,并参见下图:

动态测试

白盒测试

白盒这个词用来描述系统的核心视角。开发人员将执行白盒测试,他们将测试程序代码的每一行。

当开发人员执行白盒测试,然后将软件应用程序发送给测试团队时,测试团队将进行黑盒测试,验证应用程序以及需求。白盒测试进一步分为数据流/控制测试。

数据流测试

数据流测试被用来识别该程序的测试路径按说明和在程序变量用途的设置。它与数据流图无关。

黑盒测试

黑箱测试是一种测试技术,其中测试工程师选择的模块,并且给出了一个输入值,观察其功能和的功能是否被给出预期输出或不分析。如果函数产生了正确的输出,那么特定的函数将被标记为通过。

要执行黑盒测试,测试工程师应该具备有关软件需求的特定知识,而不是软件的编程知识。

然后,他们可以开发测试用例来检查软件功能的正确性。

黑盒测试进一步分为两类,具体如下:

  • 功能测试
  • 非功能测试

功能测试

功能测试是黑盒测试中最重要的部分之一。它主要关注应用程序规范而不是实际代码,测试工程师将测试程序而不是系统。

功能测试用于验证软件应用程序的功能,该功能是否按照需求规范工作。

在功能测试中,通过给定值、确定输出、验证实际输出与期望值来对每个模块进行测试。

功能测试分为四种不同类型的测试,如下所示:

  • 单元测试
  • 集成测试
  • 系统测试
  • 用户验收测试

单元测试

  • 单元测试是对软件应用程序执行任何测试的第一级功能测试。
  • 只要应用程序准备就绪并提供给测试工程师,我们就会执行单元测试。他/她将开始独立或逐个检查模块或应用程序的每个组件。这个过程被称为组件测试
  • 执行单元测试的主要目标是测试远程代码的正确性并验证单元组件的性能。

集成测试

  • 当我们成功完成了特定软件的单元测试后,我们将进行集成测试。集成测试将帮助我们组合单个单元并作为一个组进行测试。它是功能测试的第二级
  • 当所有组件或模块独立工作时,我们会检查依赖模块之间的数据流,这称为集成测试。
  • 开发人员和测试工程师执行集成测试。而集成的主要目的是识别集成单元之间交互中的故障。

系统测试

  • 系统测试用于检查应用程序或软件作为用户的端到端流程。
  • 系统测试也称为端到端测试,因为测试环境类似于生产环境。
  • 在功能测试的第三级(系统测试)中,我们遍历应用程序的所有必要模块并检查最终功能或最终业务是否正常,并将产品作为整个系统进行测试。

用户验收测试

  • 执行用户验收测试以根据要求对系统进行认证。客户或客户在接受最终产品之前会这样做。
  • 换句话说,我们可以说UAT是由客户(领域专家)为了他们的满意度而完成的,并根据给定的业务场景和实时场景检查应用程序是否工作。
  • 它是功能测试的最后一个级别,在将软件发布到两个或更多最终用户将涉及的市场或生产环境之前执行。

非功能测试

黑盒测试的另一部分是非功能测试。它用于测试非功能性约束,如负载测试、可靠性、性能和软件责任。

执行非功能测试的主要目的是根据非功能参数测试软件系统的读取速度,因为这些参数在功能测试之前是不会被测试的。

在测试软件或应用程序时,非功能测试在客户满意度方面起着至关重要的作用。

它降低了软件的生产风险和相关成本,并提供了对产品行为和所用技术的全面了解。

此外,非功能测试分为各个部分,可以在测试级别进行。

  • 性能测试
  • 可用性测试
  • 兼容性测试
  • 恢复测试
  • 安全测试

让我们一一详细了解它们:

性能测试

  • 性能测试是最重要的非功能性测试类型
  • 一旦软件稳定并移入生产,并且可能被多个用户同时访问,我们将进行性能测试
  • 性能测试是测试,我们检查通过应用一些负载的应用程序的行为。
  • 我们知道它是非功能测试,这并不意味着当应用程序功能稳定时我们总是使用性能测试;只有这样我们才能进行性能测试。

可用性测试

  • 在可用性测试中,我们将检查软件应用程序的用户友好性、效率和准确性。
  • 如果我们使用可用性测试,它可以确保开发的软件在使用系统时易于测试,不会遇到任何问题,并使最终用户的生活更轻松。

兼容性测试

  • 下一种非功能性测试兼容性测试,用于检查应用程序在不同软件、硬件平台、网络和浏览器上的功能。
  • 并非对所有应用程序都进行兼容性测试;我们将仅对那些我们无法控制用户使用的平台的应用程序使用兼容性测试。

恢复测试

  • 恢复测试中,我们可以验证系统从硬件故障和崩溃中恢复的能力。
  • 它在受控环境中重现了故障模式或基本生产故障。
  • 执行恢复测试以确认系统具有容错能力并且可以从故障中很好地改进。

安全测试

  • 安全测试用于发现软件应用程序中的弱点、风险或威胁,帮助我们阻止来自外部的恶意攻击,确保我们的软件应用程序的安全。
  • 安全测试的主要目的是识别应用程序所有可能存在的不确定性和漏洞,使软件不会停止工作。

动态测试的优缺点

从检测和评估软件中的几个错误和错误到验证软件的性能,动态测试为用户和测试团队提供了许多好处。

然而,我们有动态测试的各种优点,也有一些缺点。\

因此,下面我们列出了动态测试的一些优点和缺点:

优点

以下是动态测试的优点:

  • 它验证软件应用程序的性能。
  • 动态测试的使用保证了软件产品的可靠性和稳定性。
  • 它可以借助工具自动检测测试过程中存在问题和复杂的错误,这些错误是静态分析无法覆盖的。
  • 它可以帮助测试团队识别运行时环境的薄弱环节。
  • 与静态测试相比,使用动态测试最重要的好处是可以发现相对较多的错误。
  • 静态测试相比,动态测试在测试的计划级别需要较少的会议。
  • 它实施软件,端到端,并提供无错误的软件。
  • 它成为识别任何安全威胁的重要工具。
  • 在动态测试中,我们可以检测出可能逃过审查过程的有问题的错误。
  • 它还可以识别静态测试无法注意到的那些错误。
  • 动态测试还可以发现安全威胁,从而确保更好、更安全的应用程序。

缺点

以下是动态测试的缺点:

  • 这是一个耗时的过程,因为它实现了需要大量资源的软件应用程序或代码。
  • 动态测试过程有点昂贵,因为它增加了软件的预算。
  • 动态测试需要更多的人力资源来完成任务,这使得其实施成本更高。
  • 通常,动态测试在编码阶段完成后执行,因此在生命周期的后期识别错误。

概述

在动态测试部分,我们学习了以下主题:

  • 在了解了上面的动态测试之后,我们可以很容易地说动态测试在软件测试生命周期(STLC)中的重要性是巨大的
  • 动态测试用于执行代码的动态行为。
  • 我们已经了解了动态测试的过程和各种类型的动态测试。
  • 在动态测试中,我们可以直接进行软件测试,以验证软件的功能性能、行为、可靠性等重要特性。
  • 我们已经了解了动态测试的优缺点