什么是动态测试?类型、技术和示例

动态测试

动态测试是一种软件测试方法,用于测试软件代码的动态行为。动态测试的主要目的是测试软件在动态变量或非常量变量下的行为,并找出软件运行时环境中的薄弱区域。为了测试动态行为,代码必须被执行。

我们都知道测试是验证和确认,并且需要两个“V”才能完成测试。在这两个“V”中,“验证”被称为静态测试,而另一个“V”,即“确认”,被称为动态测试。

动态测试示例

让我们通过一个示例来了解如何进行动态测试

假设我们正在测试一个登录页面,其中有两个字段,比如“用户名”和“密码”,并且用户名被限制为字母数字。

当用户输入“Guru99”作为用户名时,系统接受。然而,当用户输入Guru99@123时,应用程序会抛出错误消息。这个结果表明代码根据用户输入动态地运行。

动态测试是指您通过提供输入并比较应用程序的实际行为与预期行为来与实际系统一起工作。换句话说,与系统一起工作以发现错误。

因此,根据上述陈述,我们可以说或得出结论,动态测试是在不同环境下作为最终用户验证软件应用程序的过程,以构建正确的软件。

动态测试有什么作用?

动态测试的主要目的是确保软件在安装过程中和安装后正常工作,确保应用程序稳定,没有重大缺陷(此声明之所以作出,是因为没有软件是完全无错的,测试只能显示缺陷的存在,而非不存在)。

动态测试的主要目的是确保软件的一致性;我们用一个例子来讨论这个问题。

在银行应用程序中,我们发现不同的屏幕,如“我的账户”部分、“资金转账”、“账单支付”等。所有这些屏幕都包含接受某些字符的金额字段。

假设“我的账户”字段显示金额为25,000,“资金转账”显示为$25,000,“账单支付”屏幕显示为$25000,尽管金额相同,但显示方式不同,因此导致软件不一致。

一致性不仅限于功能性,它还涉及性能、可用性、兼容性等不同标准,因此进行动态测试变得非常重要。

动态测试的类型

动态测试分为两类

  • 白盒测试
  • 黑盒测试

下图向我们展示了动态测试的类型、测试级别等。

Types of Dynamic Testing

让我们简要讨论每种测试类型及其预期目的

白盒测试白盒测试是一种软件测试方法,其中内部结构/设计对测试人员是已知的。白盒测试的主要目的是检查系统如何根据代码运行。它主要由开发人员或对编程有了解的白盒测试人员执行。

黑盒测试 – 黑盒测试是一种测试方法,其中内部结构/代码/设计对测试人员是未知的。这种测试的主要目的是验证被测系统的功能,并且这种类型的测试需要执行完整的测试套件,主要由测试人员执行,不需要任何编程知识。

黑盒测试又分为两种类型。

它们是

  • 功能测试
  • 非功能测试

功能测试

功能测试用于验证所有开发的功能是否符合功能规范,并通过执行QA团队编写的功能测试用例来执行。在功能测试阶段,系统通过提供输入、验证输出并将实际结果与预期结果进行比较来测试。

功能测试有不同的级别,其中最重要的是

  • 单元测试 – 通常单元是一小段可测试的代码,单元测试在软件的独立单元上执行,并由开发人员执行。
  • 集成测试集成测试是在单元测试之后执行的测试,通过组合所有可测试的独立单元来执行,由开发人员或测试人员执行。
  • 系统测试系统测试用于确保系统按要求运行,通常在整个系统准备就绪时执行。当构建或代码发布给QA团队时,由测试人员执行。
  • 验收测试 – 验收测试用于验证系统是否满足业务需求并准备好使用或部署,通常由最终用户执行。

非功能测试:非功能测试是一种不关注功能方面,主要关注系统非功能属性(如内存泄漏、性能或系统健壮性)的测试技术。非功能测试在所有测试级别执行。

有许多非功能测试技术,其中最重要的是

  • 性能测试 性能测试用于检查系统在所需网络负载下的响应时间是否符合要求。
  • 恢复测试 – 恢复测试是一种验证系统从崩溃和硬件故障中恢复能力的方法。
  • 兼容性测试 – 兼容性测试用于验证系统在不同环境下的行为。
  • 安全测试 安全测试用于验证应用程序的健壮性,即确保只有授权用户/角色才能访问系统。
  • 可用性测试 可用性测试是一种通过最终用户验证系统可用性,以验证用户对系统的舒适度的方法。

动态测试技术

STLC 中的动态测试技术包括不同的任务,如测试需求分析、测试计划、测试用例设计和实现、测试环境设置、测试用例执行、缺陷报告和最终的测试结束。动态测试技术中的所有任务都依赖于测试过程中前一个任务的完成。

在 STLC 中,我们可以说实际的动态测试过程从测试用例设计开始,让我们详细讨论每个活动。

Dynamic Testing Techniques

在进入流程之前,让我们讨论动态测试需要遵循的策略。

测试策略应主要关注可用资源和时间范围。根据这些因素,需要记录测试目标、测试范围、测试阶段或周期、环境类型、可能遇到的假设或挑战、风险等。

一旦策略确定并获得管理层批准,实际的测试用例设计过程就开始了。

什么是测试设计和实施

在此阶段,我们确定:

  • 要测试的功能
  • 得出测试条件
  • 得出覆盖项
  • 得出测试用例

测试环境设置

我们必须确保测试环境应始终与生产环境相似,在此阶段,我们必须安装构建并管理测试机器。

测试执行

在此阶段,测试用例实际执行。

缺陷报告已捕获

根据执行情况,如果预期结果与实际结果不一致,则测试用例应标记为“失败”并记录缺陷。

动态测试的优点

  • 动态测试可以揭示那些被认为过于困难或复杂,无法通过静态分析发现的未被发现的缺陷。
  • 在动态测试中,我们端到端地执行软件,确保软件无错误,从而提高产品和项目的质量。
  • 动态测试成为检测任何安全威胁的重要工具。

动态测试的缺点

  • 动态测试耗时,因为它执行应用程序/软件或代码,需要大量资源。
  • 动态测试增加了项目/产品的成本,因为它在软件生命周期的早期阶段没有开始,因此在后期阶段修复任何问题都可能导致成本增加。

结论

软件工程中,验证和确认是用于检查软件产品是否满足需求规范的两种措施。静态测试涉及验证,而动态测试涉及确认。它们共同有助于交付具有成本效益的优质软件。