模糊测试(Fuzz testing,简称fuzzing)是一种检查计算机程序或系统如何响应各种(有时是随机的)输入和信息的方法。这个过程包括生成某种类型的数据,要么是完全随机的,要么是在一定约束下随机产生的,然后将这些数据输入到程序中,...
模糊测试(Fuzz testing,简称fuzzing)是一种检查计算机程序或系统如何响应各种(有时是随机的)输入和信息的方法。这个过程包括生成某种类型的数据,要么是完全随机的,要么是在一定约束下随机产生的,然后将这些数据输入到程序中,以测试它如何处理意外信息。模糊测试最基本的形式是向程序发送一个随机的按键或字符序列,并检查程序是否正确处理它们。更复杂的模糊测试使用的是随机的结构化数据操作并发送到程序中。数据可以作为系统事件、键盘输入,模拟网络信号,甚至是要加载的文件。

模糊测试是一种检查计算机程序或系统如何响应各种(有时是随机的)输入和信息的方法计算机程序的各个部分都可以用模糊生成器进行测试。图形用户界面(GUI)可以通过创建一系列随机鼠标和键盘事件并检查GUI是否能够处理在没有崩溃、冻结或执行意外任务的情况下输入。可以通过允许模糊生成器随机更改有效数据包的一部分,然后确保协议在接收到错误数据后可以继续工作来测试网络协议几乎任何程序的基本输入元素都可以检查其抗错误的能力,例如对于存储类型来说太长的输入、与预期不同的输入以及不完整或不正确的输入计算机安全行业可以使用模糊测试来确保某些系统中不存在明显的安全漏洞。这可以通过使用一个专为测试计算机安全而设计的模糊生成器来实现。这些程序将尝试使用系统关键字、已知的默认管理员密码,程序使用的库中的函数,以及对系统函数的随机调用,以查看程序的反应。不同类型的模糊测试可以定制为在一定范围内,甚至只测试特定类型的输入。这意味着一个程序只能有有效的命令发送给它,但它们的顺序可能是无意义的。存在着更复杂的模糊测试程序,可以获取目标程序的元素并操纵它们来产生可能被恶意利用的情况。这可能包括更改生成进程的顺序,权限的修改,或者对核心数据和库文件进行修改。模糊测试的最终结果是看一个程序是否安全,当遇到意外情况时,它的行为是否正常。当与分析和分析软件一起使用时,它还可以检测程序中某些区域的内存泄漏,例如错误处理或性能瓶颈在计算机安全的情况下,通过正确的设置可以捕捉到诸如溢出等危害系统的问题。但是,模糊测试不能作为软件测试的唯一方法,它需要成为更大的质量保证和软件检查过程的一部分。