test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM

这篇具有很好参考价值的文章主要介绍了test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拓展阅读

开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)

开源 Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)

test fuzz-01-模糊测试(Fuzz Testing)

test fuzz-02-模糊测试 JQF + Zest Semantic Fuzzing for Java

test fuzz-03-模糊测试 Atheris A Coverage-Guided, Native Python Fuzzer

test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM

test fuzz-05-模糊测试 kelinci AFL-based fuzzing for Java

test fuzz-06-模糊测试 AFL american fuzzy lop - a security-oriented fuzzer

test fuzz-07-模糊测试 libfuzzer

jazzer

Jazzer是由Code Intelligence开发的一款基于覆盖率引导的JVM平台内部模糊测试工具。

它基于libFuzzer,并将许多基于仪器的变异特性引入了JVM。

Jazzer目前支持以下平台:

  • Linux x86_64
  • macOS 12+ x86_64和arm64
  • Windows x86_64

快速入门

您可以使用Docker尝试Jazzer的Autofuzz模式,在此模式下,它会自动生成要传递给给定Java函数的参数,并报告意外的异常和检测到的安全问题:

docker run -it cifuzz/jazzer-autofuzz \
   com.mikesamuel:json-sanitizer:1.2.0 \
   com.google.json.JsonSanitizer::sanitize \
   --autofuzz_ignore=java.lang.ArrayIndexOutOfBoundsException

这里,前两个参数是Java库的Maven坐标和要进行模糊测试的Java函数的完全限定名称,采用"方法引用"形式。

可选的–autofuzz_ignore标志接受一个要忽略的未捕获异常类的列表。

几秒钟后,Jazzer应该会触发一个AssertionError,复现它在此库中发现的一个已修复的错误。

使用

使用 Jazzer 通过 JUnit 5 进行…

假设您的项目已经设置了 JUnit 5.9.0 或更高版本,例如基于官方的 junit5-samples。

  1. 添加依赖项 com.code-intelligence:jazzer-junit:<latest version>。所有 Jazzer Maven 构件都使用此密钥进行签名。
  2. 在新的或现有测试类中添加一个新的模糊测试:一个使用 @FuzzTest 注释的方法,并至少一个参数。建议使用类型为 FuzzedDataProvider 的单个参数,该参数提供用于生成常用 Java 值的实用函数,或使用 byte[] 以获得最佳性能和发现的可重现性。
  3. 假设您的测试类名为 com.example.MyFuzzTests,请创建 inputs 目录 src/test/resources/com/example/MyFuzzTestsInputs。
  4. 运行一个模糊测试,将环境变量 JAZZER_FUZZ 设置为 1,以便模糊测试器快速尝试新的参数集。如果模糊测试器找到使您的模糊测试失败甚至触发安全问题的参数,它将将它们存储在 inputs 目录中。在此模式下,每次测试运行仅执行单个模糊测试(有关详细信息,请参见#599)。
  5. 在不设置 JAZZER_FUZZ 的情况下运行模糊测试,以仅对 inputs 目录中的输入执行测试。此模式的行为类似于传统的单元测试,确保模糊测试器先前发现的问题已被修复,并且还可以用于在单个输入上调试模糊测试。

一个简单的基于属性的模糊测试可能如下所示(不包括导入):

class ParserTests {
   @Test
   void unitTest() {
      assertEquals("foobar", SomeScheme.decode(SomeScheme.encode("foobar")));
   }

   @FuzzTest
   void fuzzTest(FuzzedDataProvider data) {
      String input = data.consumeRemainingAsString();
      assertEquals(input, SomeScheme.decode(SomeScheme.encode(input)));
   }
}

可以在 examples/junit 中找到一个完整的 Maven 示例项目。

test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM,test,jvm,测试覆盖率,开发语言,unit testing,开源,单元测试文章来源地址https://www.toymoban.com/news/detail-795036.html

到了这里,关于test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java Test: Specification and Structure Testing(line, branch, path coverage)

    这篇文章梳理一下Java软件测试中的Secification test和Structure test。 规范测试(specification test):又称黑盒测试(black-box testing)或需求驱动测试(requirements-driven testing),这种测试方法关注程序的功能和性能,而不关注其内部实现。 Specification(规范)是对软件组件、系统或方法

    2024年02月02日
    浏览(45)
  • 阅读笔记——《UTOPIA: Automatic Generation of Fuzz Driverusing Unit Tests》

    【参考文献】Jeong B, Jang J, Yi H, et al. UTOPIA: automatic generation of fuzz driver using unit tests[C]//2023 IEEE Symposium on Security and Privacy (SP). IEEE, 2023: 2676-2692. 【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录  摘要 一、介绍 二、挑战和提出的方法 1、合成有效的API调用

    2024年02月04日
    浏览(43)
  • test-04-test case generate 测试用例生成 tcases 快速开始

    junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 关于本指南 本指南详细解释了Tcases的工作原理。在涉及示例

    2024年01月19日
    浏览(38)
  • test-04-test case generate 测试用例生成 tcases A model-based test case generator

    junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 最新版本 (Tcases 4.0.2) 现在已在Maven Central Repository中提供。 请

    2024年01月17日
    浏览(45)
  • 测试工具coverage的高阶使用

      在文章Python之单元测试使用的一点心得中,笔者介绍了自己在使用Python测试工具 coverge 的一点心得,包括: 使用coverage模块计算代码测试覆盖率 使用coverage api计算代码测试覆盖率 coverage配置文件的使用 coverage badge的生成   本文在此基础上,将会介绍coverage的高阶使用,

    2024年02月12日
    浏览(29)
  • Python库-coverage测试覆盖率

    Coverage.py 是用于测量Python程序代码覆盖率的工具。它 监视程序,注意代码的哪些部分已执行,然后 分析源以识别可以执行但未执行的代码。 覆盖率测量通常用于衡量测试的有效性。它 可以显示测试正在执行代码的哪些部分,以及哪些部分是 不。 用于运行测试套件并收集数

    2024年02月09日
    浏览(37)
  • Idea coverage覆盖率测试工具,设置Coverge的Branch,以及生成测试报告遇到的问题

    1、打开Run/Debug Configurations 2、选中该工程的项目() 3、选择以coverge runner结尾的选项,不同版本可能不同 第一种版本: 第二种版本 4、设置branch 可以看到Code Coverge出现了。 选择JaCoCo 5、选择Use tracing 可以看到生成Branch选项了。 1、选择导出 2、选项(根据需要设置) 注意点 :Re

    2024年02月05日
    浏览(42)
  • test Property-based Testing-04-junit-quickcheck

    开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。) junit-quickcheck 是一个支持在 JUnit 中编写和运行属性驱动测试的库,受到了 Haskell 的 QuickCheck 的启发。 属性驱动测

    2024年02月02日
    浏览(41)
  • JavaWeb04(登录&绑值&模糊查询&功能实现&连接数据库)

    目录 一.实现登录功能  2.2 制作简易验证码 2.3 完成登录验证 2.4 登录实现 ①连接字符串 private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\"; ②加载驱动  OracleDriver private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\";      二.实现表格版的绑定数据 2.1 效果预览 2.2 代

    2024年02月02日
    浏览(50)
  • 模糊测试面面观 | 模糊测试工具知多少

    自1988年威斯康星大学的Barton Miller首次提出模糊测试这一概念以来,模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法,旨在通过向程序输入模糊、随机、异常的数据,探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐。随着时间的推移,这

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包