Hercules 测试代理
全球首个开源测试代理,无需代码即可驱动 UI、API、安全、可访问性和视觉验证。
证据显示:README 提到遥测默认开启,但未说明如何完全禁用;有环境变量控制浏览器、视频等,但未明确权限最小化原则;有用户确认机制(如 AUTO_MODE 环境变量)但未详细说明;数据流透明度有限,未详细说明遥测数据流向;敏感数据处理未明确;依赖安全有部分措施(如 pyproject.toml 中的 override-dependencies),但未提供完整漏洞扫描报告;外部影响(如浏览器操作)有说明但未提供回滚机制;来源归属有作者信息但发布者未验证。扣分原因:缺乏明确的权限最小化设计、用户确认流程不透明、数据流不透明、敏感数据处理不明确、依赖安全证据不足、无回滚机制、发布者身份未验证。
证据显示:README 和 pyproject.toml 描述一致,但存在一些不一致(如 pyproject.toml 中 classifiers 包含 Python 3.10,但 requires-python 为 >=3.11);依赖列表完整,但未提供锁定文件(如 uv.lock)的详细信息;失败消息有基本说明(如输出日志和报告),但未提供详细的错误处理文档。扣分原因:自洽性有小瑕疵,依赖可用性未完全验证,失败消息不够详细。
证据显示:README 提供了多种安装方式(PyPI、Docker、源码)和多种使用场景(UI、API、安全、视觉测试),受众明确;能力边界有说明(如支持的模型和浏览器),但未详细说明限制;触发精度有说明(如 Gherkin 步骤),但未提供详细的触发条件文档;环境适配有说明(如 Windows、Docker、远程浏览器),但未提供所有环境的详细配置。扣分原因:能力边界和触发精度文档不够详细。
证据显示:README 结构清晰,提供了安装、使用、配置、输出等章节;安装说明详细,包括多种方法;命名稳定(如 testzeus-hercules 命令);提供了示例和 FAQ(视频教程);已知限制未明确列出;许可证为 AGPL-3.0,但未提供完整的许可证文本(仅部分);版本和变更日志未提供;维护责任有作者信息,但未明确维护策略。扣分原因:已知限制、版本变更日志缺失,许可证文本不完整。
证据显示:输出包括 JUnit XML、HTML 报告、截图、视频等,可用性高;边际价值高,因为提供了自动化测试能力;成本效益未详细说明,但提供了多种安装方式。扣分原因:成本效益分析不足。
证据显示:README 中的声明(如“世界首个开源测试代理”)未提供独立验证;跨来源验证有限,仅依赖 README 和部分代码;事实与推断未明确区分。扣分原因:声明缺乏可追溯性,跨来源验证不足,事实与推断混淆。
- 遥测默认开启,需确认是否可完全禁用及数据流向。
- 发布者身份未验证,需谨慎评估供应链风险。
- 依赖安全措施有限,建议检查依赖漏洞。
- 无回滚机制,执行测试时需注意外部影响。
这个 Agent 能做什么,适合哪些场景?
Hercules 是一个开源测试代理,把 Gherkin 用例转化为自动化端到端测试。它基于 LangGraph 状态机,通过 Planner、Executor 和 Assertion 节点协调导航代理(浏览器、API、安全、SQL、MCP 等)。用户以 Gherkin 编写测试,Hercules 负责执行并生成 JUnit XML 和 HTML 报告,附带视频、截图和网络日志作为执行证据。支持多种部署方式:PyPI 包、Docker 镜像、源码运行。它还可作为 MCP 服务器,并支持通过 MCP 客户端集成外部服务。
它读取 Gherkin 特征文件,将其解析为严格 JSON 计划,由 PlannerAgent 决策下一步动作,Executor 路由到对应的导航代理,如 browser_nav_agent、api_nav_agent、sec_nav_agent 等。这些代理绑定 LangChain StructuredTool(例如 open_url、click、bulk_enter_text)执行浏览、API 请求、安全扫描(通过 Nuclei)和可访问性检查。最后生成 JUnit XML 和 HTML 报告,并在 proofs 目录保存视频、截图和网络日志。也可通过 MCP 客户端调用,以 MCP 服务器形式提供 generate_gherkin、run_test 等工具。
- QA 工程师希望用自然语言 Gherkin 编写端到端测试,无需编写代码
- DevOps 团队将 Hercules 集成到 CI/CD 管道,使用 Docker 镜像自动运行测试
- 安全测试人员希望从 Gherkin 用例触发 Nuclei 漏洞扫描,识别 OWASP Top 10 问题
- 可访问性专家需要验证 WCAG 2.0/2.1/2.2 合规性(A、AA、AAA 级别)
- 开发团队希望复用社区工具,通过 ADDITIONAL_TOOL_DIRS 扩展能力
- 需要远程浏览器执行(如 BrowserStack、LambdaTest、BrowserBase)的团队,通过 CDP 连接
这个 Agent 有哪些优点和局限?
- 免代码:直接用 Gherkin 编写测试,无需编程
- 多类型测试:支持 UI、API、安全(Nuclei)、可访问性和视觉验证
- 多种部署方式:PyPI、Docker、源码,适应不同环境
- 详细的执行证据:视频、截图、网络日志
- 支持 MCP 集成,可扩展外部工具
- 自动修复:自适应和自动修复能力减少维护
- 依赖 LLM API,需要付费(复杂用例约 $0.20/次)
- 需要配置模型密钥和环境变量,入门门槛
- Playwright 依赖和浏览器安装(playwright install)
- Windows 用户需运行额外脚本(hercules_windows_setup.ps1)
- 默认启用遥测,需手动禁用(ENABLE_TELEMETRY=0)
如何安装或部署这个 Agent?
安装 Python 3.11–3.13,然后运行:pip install testzeus-hercules;接着执行 playwright install --with-deps。或者使用 Docker:docker pull testzeus/hercules:latest。源码部署需克隆仓库、安装 UV,并运行 make setup-uv && make install。需配置 LLM 环境变量(如 LLM_MODEL_NAME、LLM_MODEL_API_KEY、LLM_MODEL_BASE_URL)。可选:设置 AGENTS_LLM_CONFIG_FILE 以进行按代理模型路由。
如何使用这个 Agent?
创建一个 Gherkin 特征文件(例如 opt/input/test.feature),设置环境变量 LLM_MODEL_NAME=gpt-4o、LLM_MODEL_API_KEY=your-key,然后运行:testzeus-hercules --project-base=opt 或指定 --input-file、--output-path、--test-data-path。测试执行后,在输出目录查看 JUnit XML 和 HTML 报告。Docker 运行:docker run --env-file=.env -v ./opt:/testzeus-hercules/opt --rm -it testzeus/hercules:latest。
这个 Agent 与同类方案有什么区别?
Hercules 对比传统测试框架(如 Selenium、Cypress)和 LLM 驱动的自动化(如 Agent-E),其突出优势在于开源、免代码且覆盖多类型测试。具体对比未在来源中详细说明。