跳到主内容
快讯直播
AI智模界
AI 词典

模糊测试:用随机输入撞出系统的崩溃点

一句话说:模糊测试(Fuzzing)是往系统里灌大量随机或半随机变形的输入,看它在哪里出错、崩溃或行为异常。

打个生活化的比方

质检一部手机,说明书式测试是"长按电源键 3 秒开机、滑动解锁、打开相机"。模糊测试是叫一群人上来乱拍乱摔、边充电边泡水、把取卡针插进麦克风孔。它不负责证明产品是对的,它负责找出产品错在哪。

这套流程自动化后靠三件事运转。种子(seed)——一批本身合法、能跑通的输入;变异(mutation)——在种子上随机翻转字节、插入删除、拼接、换编码;反馈——如果某次变异让程序走进了从没走过的代码分支,就把它留下来继续变异,这叫覆盖率引导(coverage-guided)。于是"瞎撞"变成了有方向的搜索。

它的判据很硬

传统模糊测试的信号几乎不需要人写预期结果:进程崩溃(crash)、断言失败、内存越界、卡死超时。所以它擅长发现的是"开发者没想到会发生"的那类问题。

方法输入从哪来判断标准擅长发现
单元测试人手写人工断言已知逻辑分支
属性测试按规则随机生成通用不变量边界与组合情况
模糊测试在种子上变异崩溃、超时、校验失败未知的崩溃点

搬过来测提示词和工具调用

大模型不会段错误(segmentation fault),但会"软崩溃":输出解析不了、调用了不存在的工具、参数填成幻觉、答非所问。

套路完全可以照搬。种子就是一批正常的提示词和正常的工具调用(tool calling)样本;变异则是加错别字、中英混写、塞 Emoji、插入自相矛盾的指令、把上下文拉到很长、把数字参数写成"三"、把枚举值写成近义词、漏掉必填字段、在多轮对话里突然改主意或要求忽略之前的指令。

判据交给自动校验器,而不是人眼:返回的 JSON 能不能按 schema(模式)解析、工具名是否真实存在、参数类型是否合法、回答里有没有凭空捏造的数据。这类检查最适合接进持续集成(CI),每次改提示词或换模型都跑一遍,看通过率有没有掉下来。至于具体用哪个工具、模型支持到什么程度,以官方页面为准。

对普通人意味着什么

你手上那个"偶尔莫名其妙报错"的 App,很多坑就是被这种乱来的测试提前撞出来的。反过来,你自己用 AI 时把同一个需求换三种说法各试一遍,其实就是在手动做一次模糊测试——只不过这次的种子是你,变异是问法。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。