软件测试 - 模糊测试



软件测试主要集中在确认软件的质量。模糊测试是一种测试方法,它向软件提供错误的、意外的和随机的数据,然后验证异常,例如崩溃、可能的内存泄漏等。它于 1999 年由威斯康星大学的 Barton Miller 发现。

什么是软件模糊测试?

软件模糊测试主要是一种自动化测试方法,用于通过遵循非系统化的方法来定义系统测试过程。在执行此类测试时,软件可能会遇到许多与输入数据集相关的缺陷或错误。因此,模糊测试的过程包括向软件提供不正确、意外或任意数据,以确定其可能的安全问题和崩溃。

软件模糊测试的主要目标是确定攻击者可以利用的问题,例如缓冲区溢出、SQL 注入等。它是软件测试的关键部分,因为它有助于识别在功能或单元测试期间可能未检测到的所有安全问题,例如性能瓶颈、内存泄漏等。这种类型的测试依赖于特定的工具和测试环境,这使得它成为一个成本高且耗时的过程。此外,分配给模糊测试的测试人员应经验丰富,并对软件的架构、设计、协议、数据格式等有深入的了解。

软件模糊测试可以通过以下不同方式执行:

  • 文件模糊测试 - 在这种类型中,将无规律或不正确的数据作为输入传递给文件解析函数,以识别诸如内存损坏、缓冲区溢出等问题。
  • 网络模糊测试 - 在这种类型中,将无规律或不正确的数据作为输入传递给网络协议,以识别诸如拒绝服务、其他安全问题等问题。
  • API 模糊测试 - 在这种类型中,将无规律或不正确的数据作为输入传递给应用程序编程接口 (API),以识别诸如输入验证、其他安全问题等问题。

软件模糊测试的目标

软件模糊测试的目标如下:

  • 模糊测试验证软件中的弱点。
  • 模糊测试确定软件的安全问题和威胁。
  • 模糊测试在软件开发生命周期 (SDLC) 的早期阶段识别缺陷。

软件模糊测试的阶段

软件模糊测试的阶段如下:

步骤 1 - 测试团队确定要测试的系统,也称为目标系统。

步骤 2 - 识别要提供给软件以执行模糊测试的随机输入测试用例。

步骤 3 - 使用任意输入创建模糊数据。

步骤 4 - 通过使用模糊数据运行软件来执行测试用例。

步骤 5 - 使用随机输入执行软件后,评估测试结果以确定软件中是否遇到任何崩溃、内存泄漏等。

步骤 6 - 如果存在偏差,则将其报告为缺陷。一旦修复,它确保了软件的更好质量。

软件模糊测试的类型

软件模糊测试的不同类型如下:

覆盖引导模糊测试

在这种类型的模糊测试中,在软件工作时评估源代码。主要目的是使程序失败,使其崩溃,并不断添加新的测试用例。崩溃表示潜在的错误。在覆盖引导模糊测试期间收集的详细信息可用于复制崩溃,以找到导致崩溃的代码部分。

行为模糊测试

这种类型的模糊测试以独特的方式运行。它还包括其他模糊测试,如变异模糊测试、Web 模糊测试、生成模糊测试、智能模糊测试和协议模糊测试。

软件模糊测试期间检测到的缺陷类型

在软件模糊测试期间检测到的不同类型的缺陷如下:

  • 文件格式模糊测试
  • 字符模糊测试
  • 数字模糊测试
  • 应用程序模糊测试
  • 协议模糊测试

软件模糊测试的应用

软件模糊测试可用于的不同应用如下:

  • 区块链
  • 操作系统
  • API
  • 密码学
  • 质量保证

软件模糊测试的优点

软件模糊测试的优点如下:

  • 软件模糊测试可以自动化,这允许以更快、更有效的方式验证大量输入。
  • 软件模糊测试包括随机的、无效的和意外的数据,这些数据可以检测到在进行其他测试方法时可能无法检测到的缺陷。
  • 如果通过自动化执行,软件模糊测试可以具有成本效益。
  • 软件模糊测试在 SDLC 的初始阶段识别错误。
  • 软件模糊测试是一个动态的过程,因为它可以用于各种系统和多种类型的输入,例如 API、文件格式、网络协议等。

软件模糊测试的缺点

软件模糊测试的缺点如下所示:

  • 软件模糊测试可能会产生大量误报。
  • 模糊测试的范围有限,因为它只专注于验证输入,可能无法验证软件中的所有类型的弱点,例如并发条件和竞争条件。
  • 模糊测试没有机会深入了解软件。
  • 模糊测试的范围有限,因为它只专注于输入验证问题,可能不会测试其他问题,例如逻辑错误或安全错误。
  • 模糊测试可能会导致软件崩溃或挂起,之后可能无法继续测试,并且需要人工干预才能覆盖。

结论

这总结了我们关于软件模糊测试教程的全面概述。我们从描述什么是软件模糊测试、软件模糊测试的目标是什么、软件模糊测试的阶段是什么、软件模糊测试的不同类型是什么、软件模糊测试期间检测到的不同类型的缺陷是什么、软件模糊测试可以使用的不同应用程序是什么、软件模糊测试的优点是什么以及软件模糊测试的缺点是什么开始。这为您提供了关于软件模糊测试的深入知识。明智的做法是不断实践您所学到的知识,并探索与软件测试相关的其他知识,以加深您的理解并拓宽您的视野。

广告