通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

什么是模糊测试?

模糊测试是一种软件测试技术,它允许测试团队在软件的源代码中查找安全漏洞或错误。与传统的软件测试方法如SAST、DAST或IAST不同,模糊测试的方法是向代码发送随机的输入数据,尝试使代码崩溃,进而发现可能的故障或问题。这些故障可能是代码的问题,也可能是业务逻辑的问题,都可能导致高风险的安全威胁。

当发现某个故障或漏洞时,可以使用一个叫做”模糊器”的工具来查找这个故障的原因,并确定源代码中的具体问题。对于某些类型的攻击,例如SQL注入和跨站脚本攻击,模糊器是非常有效的。但对于一些与系统崩溃无关的漏洞,如间谍软件或木马,模糊器可能就不太有效了。

模糊测试有其支持者和批评者。支持者认为模糊测试是一个完全自动化的方法,可以找到很多其他方法可能找不到的问题。而批评者认为模糊测试可能不容易设置,并且可能提供不稳定或不可靠的测试结果。

模糊测试的历史

模糊测试的发展历史和其背后的起源故事也很有趣。故事发生在1988年,来自威斯康星大学麦迪逊分校的教授Barton Miller在尝试使用拨号系统远程访问代码时,遇到了一个问题。因为雷暴导致的电信干扰,他的程序持续崩溃。这个事件让Miller意识到软件在面对随机的外部“噪音”或干扰时,可能会变得不稳定或容易崩溃。这种认识启发了他与他的学生进行进一步的研究。在他们的研究中,他们发现不仅仅是他的程序,其实许多Unix、Mac和Windows的程序在面对随机和意外的输入时都可能崩溃。Miller教授是一本关于模糊测试的书籍《软件安全测试和质量保证的模糊测试》的作者之一。

模糊测试的两种类型

模糊测试主要有两种:覆盖引导型和行为型。

覆盖引导模糊测试的核心在于应用程序运行时的源代码。这种测试通过给源代码发送随机的输入,试图找出其中的错误。其目标是尝试让应用程序出现崩溃,因为一个崩溃通常意味着源代码中存在一个潜在的问题。当出现崩溃时,通过这种模糊测试产生的数据可以帮助测试人员复现这个崩溃,这对于确定问题代码部分是非常有帮助的。

行为型模糊测试的方法和覆盖引导型有所不同。这种测试基于应用程序应该如何工作的规格说明书来进行。它给应用发送随机的输入,以观察应用程序实际上是如何工作的。通过比较应用程序的实际行为和预期行为之间的差异,测试人员可以找到可能存在的错误或潜在的安全风险。

模糊测试的好处

为什么模糊测试对DevSecOps如此重要?模糊测试之所以重要,一个关键的原因是它的随机性,这种随机性使得模糊测试更有可能找到那些其他测试方法可能遗漏的错误。由于模糊测试的设置和运行相对简单,一些人形容它为“设置并忘记”的方法。换句话说,一旦你设定了模糊测试的环境和参数,它就会自动地、持续不断地运行。

模糊测试还具有良好的可扩展性,可以通过增加更多的测试机器来进行更广泛的测试。此外,模糊测试是进行回归测试的好方法。对于开发者来说,模糊测试的另一个优势是它可以最大化代码覆盖率,这意味着模糊器尝试测试代码的尽可能多的部分,这有助于加速开发过程,并确保代码的质量,同时不会产生误报。模糊测试与传统的手工测试相结合也是一个非常好的选择。这是因为模糊测试和手工测试的输入可以互相补充,从而帮助测试团队获得更全面的测试反馈。

模糊测试的挑战

希望实施模糊测试的实践者面临两个主要挑战:设置和数据分析。虽然模糊测试听起来很有吸引力,但它的设置可能并不简单。要实施模糊测试,可能需要复杂的测试“工具”。如果这些工具不是现成的或者不能轻易地集成到已有的工具链中,那么创建和设置这些工具会更加困难。

由于模糊测试的随机性和持续性,它可能会产生大量的测试数据。这其中可能包括误报,即所谓的“假阳性”。处理和分析这些大量的数据需要测试团队有充分的准备。

在质量保证(QA)社区中,有一些人对模糊测试持有某种程度的质疑或不信任。这可能是因为他们觉得模糊测试的方法过于“模糊”或不确定,或者他们可能对模糊测试的有效性或准确性持有疑虑。

相关文章