什么是智能模糊测试?

模糊测试(Fuzzing、Fuzz Testing) 是一种自动化的软件安全与质量测试技术。

传统模糊测试将自动生成海量带有随机性的测试用例,输入至动态运行中的待测软件,触发软件异常,发现软件缺陷。作为一种动态测试技术,模糊测试可以提供触发异常的实际输入,并可以保证极低的误报率。

智能模糊测试 则通过灰盒插桩、覆盖率引导、Sanitizer等新技术的引入,极大提升了总体测试效果,并可覆盖更多缺陷类型,同时提供代码行级别的缺陷定位,协助用户进行软件修复。

可以认为,模糊测试主要包含3个环节模块。首先,引擎自动生成测试用例;其次,将用例输入至运行中的待测对象;最后,触发异常情况并通过检测器发现缺陷。智能模糊测试则在3个模块的基础上,引入了反馈学习机制,通过监控待测对象运行情况,收集信息反馈至生成模块,引导生成更有针对性的精准用例,最终覆盖更多程序分支,发现更多BUG。

智能模糊测试可针对多种语言,有效发现多类软件缺陷,如内存问题、逻辑问题、未定义行为、未知崩溃等,这些缺陷类型通常是影响软件质量与安全性的高危问题。

当前,智能模糊测试技术已在全球业界广泛应用,Google、Microsoft、Linux基金会、CNCF基金会等组织均使用这一技术针对关键基础软件开展质量与安全测试。智能模糊测试也已在众多关键软件项目中发现大量真实缺陷,如OpenSSL、Chromium、Linux、Office、MariaDB等等。