test fuzz-01-模糊测试(Fuzz Testing)入门 Atheris、Jazzer、jqf、kelinci、FLA、libfuzzer 对比

拓展阅读

开源 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

模糊测试(Fuzz Testing)是什么?

模糊测试(Fuzz Testing)是一种自动化的测试方法,通过向程序、应用程序或系统输入注入大量随机或半随机生成的数据(模糊输入),以寻找潜在的安全漏洞、软件缺陷或异常行为。

模糊测试的目标是通过在输入中引入未知、异常或非预期的数据,评估目标系统的鲁棒性和稳定性。

模糊测试流程:

  1. 选择目标:

    • 确定要进行模糊测试的目标,可以是一个应用程序、库、协议等。选择目标通常基于其重要性、复杂性和潜在的攻击面。
  2. 生成模糊输入:

    • 创建模糊测试工具或使用现有工具生成模糊输入。模糊输入通常是通过对有效输入进行随机修改、添加或删除而生成的。
  3. 注入模糊输入:

    • 将生成的模糊输入注入到目标系统中。这可以通过直接发送网络请求、修改文件、通过标准输入等方式进行。
  4. 监测异常行为:

    • 监测目标系统的行为,包括崩溃、错误消息、异常响应等。模糊测试工具通常会监测程序的执行状态,以检测到任何不正常的行为。
  5. 收集反馈:

    • 收集模糊测试过程中观察到的异常行为。这可能包括崩溃日志、错误报告、程序输出等。
  6. 优化模糊输入生成:

    • 根据反馈信息,调整模糊输入生成策略,以生成更有针对性的模糊输入,提高发现漏洞的效率。
  7. 迭代:

    • 重复模糊测试过程,不断优化生成的模糊输入,直到达到预期的测试目标或发现了潜在的问题。

Atheris、Jazzer、jqf、kelinci、FLA、libfuzzer,给出对比表格

下面是对Atheris、Jazzer、jqf、Kelinci、FLA、libFuzzer的对比表格:

功能/特性 Atheris Jazzer jqf Kelinci FLA libFuzzer
语言 Python Java Java Java C C++
支持的目标程序类型 Python Java Java Java C C/C++
指导性模糊测试 ✔️ ✔️ ✔️ ✖️ ✔️ ✔️
静态分析 ✖️ ✖️ ✖️ ✖️ ✔️ ✖️
动态二进制插桩 ✖️ ✔️ ✖️ ✔️ ✔️ ✔️
支持的反馈机制 覆盖率 覆盖率 覆盖率 路径导向 覆盖率 覆盖率
支持的变异策略 多种 多种 多种 多种 多种 多种
最小化工具 自带 ✔️ ✔️ 依赖Kelinci Minimizer FLA Minimizer ✔️
支持并行化 ✖️ ✔️ ✖️ ✔️ ✔️ ✖️
支持网络服务 ✖️ ✔️ ✔️ ✔️ ✖️ ✖️
是否开源 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

test fuzz-01-模糊测试(Fuzz Testing)入门 Atheris、Jazzer、jqf、kelinci、FLA、libfuzzer 对比_第1张图片

你可能感兴趣的:(test,测试覆盖率,单元测试,测试工具,java)