开源 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是由Code Intelligence开发的一款基于覆盖率引导的JVM平台内部模糊测试工具。
它基于libFuzzer,并将许多基于仪器的变异特性引入了JVM。
Jazzer目前支持以下平台:
您可以使用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,复现它在此库中发现的一个已修复的错误。
假设您的项目已经设置了 JUnit 5.9.0 或更高版本,例如基于官方的 junit5-samples。
com.code-intelligence:jazzer-junit:
。所有 Jazzer Maven 构件都使用此密钥进行签名。一个简单的基于属性的模糊测试可能如下所示(不包括导入):
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 示例项目。