Java模糊测试库

11

有没有一个灵活的Java模糊测试框架?

Fuzz测试的维基百科文章定义了模糊测试如下:

模糊测试或fuzzing是一种软件测试技术,通常是自动化或半自动化的,涉及向计算机程序的输入提供无效、意外或随机数据。然后监视程序是否出现异常,例如崩溃,或失败的内置代码断言,或找到潜在的内存泄漏。Fuzzing通常用于测试软件或计算机系统中的安全问题。

我知道Erlang有这样的框架。任何提示都欢迎。


也许你可以试试这个:https://code.google.com/p/terot/ 或者这个:http://people.csail.mit.edu/akiezun/jfuzz/ - mhafellner
感谢所有的建议。它们似乎都没有得到很积极的开发,但我会尝试它们。 - Oliver
1
@Oliver,你找到适合你需求的了吗? - payne
不,但我已经很久没有搜索这样的库了。我开始使用PIT(https://pitest.org/)进行变异测试。它帮助我大大改善了我的代码和测试,以及如何构建代码以更好地进行测试的方式。 - Oliver
谢谢!我昨天刚好发现了这个库,哈哈。 - payne
显示剩余4条评论
2个回答

3

1

看起来有一个Java版的Quickcheck

QuickCheck的目标是用生成的值替换手动选择的值。基于QuickCheck的测试试图涵盖领域的规律,而传统的测试只能测试不同值的有效性。

基本上,QuickCheck是关于数据生成器的。QuickCheck运行方法只是一种花式for循环实现。QuickCheck可以帮助在需要测试整个类别的测试用例并且编写所有不同测试情景的测试用例不可行的场景中。


8
Quickcheck实际上是模糊测试的相反. Quickcheck允许您定义一系列不同的输入,以便测试它们是否符合业务规则。而模糊测试则是相反的想法:寻找会_破坏_系统的输入。 - Marco
@Marco 不是的,请看上面Quickcheck的定义。域和规则都是非常普遍的定义。实际上,它使用生成器来尽早尝试边缘情况,以尝试测试最有可能破坏提供的广泛规则的输入。 - brianary
@Marco 这是一个关于主题的思考,似乎并没有明确的结论。https://hypothesis.works/articles/what-is-property-based-testing/ - brianary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接