模糊测试 模糊测试 fuzz testing fuzzing是一种软件测试技术其核心思想是將自动或半自动生成的随机数据输入到一个程序中并监视程序异常如崩溃断言assertion失败以发现可能的程序错误比如内存泄漏模糊测试常常用于检测软件或计算机系统的安全漏洞 模糊测试最早由威斯康星大学的Barton Miller于年提出他们的工作不仅使用随机无结构的测试数据还系统的利用了一系列的工具去分析不同平台上的各种软件并对测试发现的错误进行了系统的分析此外他们还公开了源代码测试流程以及原始结果数据 模糊测试工具主要分为两类变异测试mutationbased以及生成测试generationbased模糊测试可以被用作白盒灰盒或黑盒测试文件格式与网络协议是最常见的测试目标但任何程序输入都可以作为测试对象常见的输入有环境变量鼠标和键盘事件以及API调用序列甚至一些通常不被考虑成输入的对象也可以被测试比如数据库中的数据或共享内存 对于安全相关的测试那些跨越可信边界的数据是最令人感兴趣的比如模糊测试那些处理任意用户上传的文件的代码比测试解析服务器配置文件的代码更重要因为服务器配置文件往往只能被有一定权限的用户修改