EvoMaster
首个开源AI驱动Web API模糊测试工具,支持REST/GraphQL/RPC协议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个开源AI驱动Web API模糊测试工具,支持REST/GraphQL/RPC协议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:团队花了三个月开发了一套 RESTful 微服务,部署上线后却在生产环境暴露了一个未授权访问漏洞——这是某位工程师在某处遗漏了身份校验的边界条件,而常规的单元测试和集成测试都没有覆盖到这个角落。更隐蔽的是另一个问题:某个 GraphQL 接口在特定参数组合下会返回 500 错误,这类问题往往只有在真实用户流量涌入后才会暴露。
这些场景揭示了一个根本矛盾:传统的基于已知用例的测试方法,永远无法穷尽 API 的所有可能调用路径。 手工编写测试用例费时费力,且高度依赖工程师的经验和想象力。那么,有没有一种工具能够自动探索 API 的"能力边界",用机器替代人工去发现那些意料之外的缺陷?
这就是 EvoMaster 诞生的背景——它来自学术界对"自动化系统级测试"的不懈追求。
EvoMaster 由挪威卑尔根大学(University of Bergen)的研究团队于 2016 年 首次公开发布,是搜索式软件测试(Search-Based Software Testing)领域的代表性开源工具。项目最初是博士研究课题,后来逐步演化为一个功能完整的工业级测试框架,吸引了全球开发者的关注。
从 GitHub 数据来看,该项目已获得 748 颗星(截至 2026 年 6 月)、114 个分叉,2026 年 5 月刚发布了 v6.0.0 重大版本。最近的提交记录显示团队正在探索 LLM(大语言模型)在测试用例命名和生成方面的应用,反映了 AI 与传统软件测试深度融合的趋势。
值得注意的是,EvoMaster 获得了 欧盟研究委员会(ERC) 的资助,背后有多位教授、博士后和研究生的持续贡献。这种学术背景使其在算法设计上具有深厚的理论支撑,但在文档完善度和安装便捷性上与纯工业项目存在一定差距。
EvoMaster 的核心工作机制可以类比为"AI 驱动的数字探险家"——它从随机的测试用例出发,通过进化算法(Evolutionary Algorithm)不断优化测试策略,逐步探索出 API 的更多分支路径,直到生成一套高效的测试套件。
具体而言,它采用了以下几类核心技术:
1. 动态程序分析(Dynamic Program Analysis):通过插桩(instrumentation)技术追踪被测程序在运行时的行为——哪些代码分支被执行了、哪些路径触发了错误。这个信息被反馈给进化算法,用来引导后续的测试用例生成方向。
2. 可测性转换(Testability Transformations):这是 EvoMaster 的独门绝技。某些代码结构天然不利于自动化测试(如不可控的外部依赖),EvoMaster 会通过字节码改写自动对这些结构进行转换,使其变得"可测"。
3. 污点分析(Taint Analysis):追踪用户输入在程序中的传播路径,确保能发现 SQL 注入、XSS 等安全漏洞。
4. 搜索策略:EvoMaster 实现了多种进化搜索策略(MIO 算法等),用户可以根据测试目标选择合适的策略——是优先追求代码覆盖率,还是优先发现更多 bug。
EvoMaster 当前主要支持以下三类 API 协议的自动化测试:
REST API:这是支持最完善的场景。EvoMaster 支持 OpenAPI 2.0/3.0/3.1 规范,只需提供 API 的 Swagger/OpenAPI schema 文件(本地路径或远程 URL),工具就能自动开始模糊测试。它会系统性地发送各种 HTTP 请求组合,包括合法参数、非法参数、边界值、特殊字符等,并分析响应来判断是否触发了异常行为。
GraphQL:对 GraphQL 的支持体现了 EvoMaster 在 API 测试领域的深度。它能自动识别 GraphQL schema 中的 Query、Mutation 和 Subscription,自动探索字段间的依赖关系,生成跨字段组合的测试用例。
RPC(gRPC / Thrift):对于 gRPC 和 Thrift 这类二进制 RPC 协议,EvoMaster 同样提供了支持,这在同类工具中较为罕见,扩大了其适用范围。
EvoMaster 支持两种测试模式:

图1:EvoMaster 命令行运行界面
EvoMaster 不仅能发现 crash(程序崩溃),更重要的是能生成可直接使用的回归测试套件。生成的测试代码支持多种格式:Python(默认格式)、JavaScript、Java/Kotlin JUnit。
这意味着 EvoMaster 的输出不只是"发现了一些 bug",而是直接产出了一套可集成到 CI/CD 流水线中的测试资产。生成的测试套件可以作为日常回归测试的一部分,在每次代码提交后自动运行,确保新代码不会引入旧的 bug。
此外,从 v4.0.0 开始,EvoMaster 还自动生成一份交互式 Web 报告,直观展示测试覆盖的端点、发现的异常、请求的成功率等关键指标。

图2:EvoMaster v4+ 自动生成的测试报告概览页面

图3:报告中的 API 端点覆盖情况
EvoMaster 提供了多种安装途径:
方式一:pip 安装(推荐 v6.0+)
pip install evomaster
evomaster --schema https://petstore.swagger.io/v2/swagger.json
方式二:Docker 镜像(隔离环境,无需配置 Java)
docker run -v "$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster \
--schema https://petstore.openapi.io/v2/swagger.json
Docker 镜像基于 Amazon Corretto 21(Alpine JDK),开箱即用。
方式三:直接下载 uber-fat JAR 从 GitHub Release 页面下载可执行 JAR 文件,配合 JDK 17+ 直接运行。

图4:Docker 方式运行 EvoMaster 模糊测试
值得注意的是,EvoMaster 不依赖 GPU,对硬件几乎没有特殊要求——在一台普通笔记本电脑上即可运行。计算瓶颈主要来自被测应用的执行时间和网络请求延迟。
EvoMaster 的效果并非自吹自擂。2022 年和 2024 年,有两个独立研究团队分别发表了论文,对 10 款主流模糊测试工具在 20 个 RESTful API 上的表现进行了横向评测。结果均显示 EvoMaster 综合表现最优,在代码覆盖率、bug 发现率等多个指标上领先。
此外,该项目还在 2021 年发表了 JOSS(Journal of Open Source Software) 论文,获得了学术界的正式认可,引用了 DOI: 10.5281/zenodo.5052036。
白盒测试仅支持 JVM:Java 和 Kotlin 以外的被测语言(JavaScript、C# 等)曾有实验性支持,但目前已停止维护。如果被测服务是 Python 或 Go,只能使用黑盒模式,效果会有一定折扣。
OpenAPI 3.2 支持暂缓:由于依赖的 swagger-parser 库存在未修复的 bug,暂时无法支持 OpenAPI 3.2 规范。如果你的 API 使用了最新版本的规范,可能需要降级到 3.0 或 3.1。
结果质量依赖 schema 质量:黑盒测试的效果很大程度上取决于 API 提供的 OpenAPI schema 是否完整、准确。如果 schema 过时或不完整,EvoMaster 的探索效率和发现能力都会受到影响。
LLM 集成尚在探索:虽然最近提交中出现了 LLM 相关的实验性代码(如"check if LLM works"、"LLM Naming strategy"),但目前版本中 LLM 并非核心功能,主要用于辅助测试用例命名等边缘任务。
在 API 安全测试领域,传统的商业工具(如 IBM AppScan、HP WebInspect)价格昂贵且不开源;开源方案中,Burp Suite 的主动扫描需要手动配置,OWASP ZAP 偏向通用 Web 安全,鲜有专门针对 REST/GraphQL/RPC API 的智能模糊测试工具。
EvoMaster 的出现填补了这个空白——它是首个将搜索式软件测试领域的学术研究成果产品化、并且完全开源的 AI 驱动 API 测试框架。对于安全研究人员、测试工程师和 DevOps 团队来说,EvoMaster 提供了一条低成本的自动化 API 测试路径。

图5:EvoMaster 官方吉祥物 v4(AI 生成风格)

图6:EvoMaster 官方吉祥物 v6

图7:EvoMaster 官方吉祥物 v7
EvoMaster 是一款来自学术界的专业 API 模糊测试工具,核心优势在于:
对于需要系统性地验证 API 鲁棒性、发现隐藏 bug 的团队,EvoMaster 是值得纳入工具链的开源选择。