
2. 为什么是 Hermes Agent选型前的三个真实顾虑2.1 从“人工点点点”到“自然语言下指令”先交代一下背景。我们团队负责的是一套企业级的 ERP 系统模块多、权限模型复杂、业务流程动辄跨五六个菜单页面。以前每个迭代版本发布前最头疼的就是回归测试核心交易链路要人工点一遍光一个采购入库到财务结算的流程熟练的测试专员也要花掉将近半天而且经常因为某一个按钮文案变了脚本直接跑挂排查又得半小时。起初也想用常规自动化测试工具去顶但大家心里都清楚ERP 这类系统最大的问题是状态耦合。你测采购单就得先造供应商、建物料、配采购策略你测财务凭证前面库存成本计算错了后面全对不上。传统脚本把数据准备、页面操作、断言校验全都写死一到环境数据变了就碎一地。后来偶然接触到 Hermes Agent 的思路核心打动我的点其实很简单它允许你用自然语言描述测试意图然后 Agent 自己去拆解任务、调用工具、生成用例、执行校验、汇总报告。说白了以前是人去迁就自动化脚本的语法规则现在是让 AI 来迁就人的表达习惯。我当时的判断是与其继续维护一套几千行的 Selenium 脚本不如试试让 Agent 来做理解层和调度层原有的自动化能力退居为执行工具。这个想法的起点就是一次“一句话指令”的尝试。2.2 Hermes Agent 到底是什么这里先给第一次接触的朋友做个快速科普。Hermes Agent 本质上是一个本地可部署的 AI Agent 框架它跟那些必须连云端 API 才能用的工具不一样你可以把它完整跑在自己的服务器或者开发机上。它具备三个关键层次任务理解层接收自然语言指令拆解出目标、约束条件、执行顺序。比如你告诉它“完成登录模块的功能回归”它不是直接去点按钮而是先列出要覆盖的测试点、依赖数据、校验规则。工具调用层内置或者外挂各种工具比如浏览器操作接口、数据库查询组件、API 请求模块、文件读写模块。Agent 根据拆解出的步骤动态选择合适的工具去执行。结果归因层每执行一步都会拿到环境反馈再决定是继续下一步、修正路径还是停下来报错。这个结构的好处在于测试逻辑和工具实现被拆开了。你不需要在测试用例里关心怎么定位某个元素、怎么等待页面加载这些底层能力由工具层提供Agent 只负责决策。这也是它能“一句话跑完 72 项测试”的基础。在正式用之前我最担心的三个问题分别是第一本地部署会不会很复杂第二Agent 生成的测试用例质量靠不靠谱第三执行结果能不能稳定复现。这三个问题直接决定了这个方案到底是生产力工具还是玩具后面我会结合真实的部署和执行过程逐一说清楚。3. 本地部署与模型配置快速把一个 Agent 跑起来3.1 硬件要求与基础环境准备先说结论跑一个常规的 Hermes Agent 实例开发机上 16GB 内存加上一个 6GB 显存以上的显卡就可以流畅运行。我们团队实际用的是 32GB 内存加 RTX 3060 的机器跑起来非常从容。如果你没有独立显卡纯 CPU 模式也能跑只是响应速度会明显慢一些处理复杂页面操作的时候等待时间会比较长。部署前建议先准备好以下基础环境Python 3.10 以上版本建议用 conda 单独建一个虚拟环境避免跟其他项目依赖冲突。Node.js 18 以上部分浏览器操作工具依赖 Playwright需要 Node 运行时支持。浏览器驱动如果测试目标是 Web 应用需要安装 Chromium 内核或者 Chrome 浏览器。Docker可选如果想让 Agent 环境更加隔离可以把整套依赖打进容器里我们后续为了回归测试的稳定性就是这么干的。这套环境其实跟常规的自动化测试环境没有本质区别真正把人劝退的通常是依赖安装阶段的网络问题和版本匹配问题。我踩过的一个坑是 Python 虚拟环境里装 playwright 的时候浏览器内核下载经常超时解决办法是先设置镜像源再手动指定浏览器下载路径等安装完成后再用playwright install chromium补一次内核。3.2 安装 Hermes Agent 的两种路径官方提供了两种安装方式一种是从 PyPI 直接安装适合快速体验另一种是从源码构建适合要定制二次开发的场景。快速安装只需要一条命令pip install hermes-agent装完之后在命令行执行hermes-agent --version能正常输出版本号就说明基础安装成功了。但这样安装完还不能直接使用需要完成模型配置和核心依赖初始化否则 Agent 只是个空壳没有推理能力。这一步很多新手会忽略看到安装成功就以为万事大吉结果一运行就报错。如果你准备做深度定制比如要接入自己的知识库、自定义工具插件那就建议走源码构建路线git clone https://github.com/hermes-agent/hermes-agent.git cd hermes-agent pip install -e .源码方式的好处是你可以直接修改 Agent 的 prompt 模板和工具注册逻辑对于测试这种对输出格式要求很高的场景非常有用。后面我生成测试报告的时候就是改了它的报告模板把输出结构调整成了我们团队内部习惯的格式。3.3 模型配置决定测试质量的第一道关卡Hermes Agent 本身是个框架大脑是接在外面的大模型上。官方支持多种模型接入包括 OpenAI 兼容接口、本地部署的开源模型以及各类私有化大模型。我的建议是如果你的数据安全要求高优先用本地模型比如 Qwen 系列或者 DeepSeek 系列通过 Ollama 起服务如果测试环境的数据不敏感并且追求最好的效果可以直接用云端 API。我们在 ERP 系统测试里选用的是本地化部署方式因为系统里涉及供应商信息、价格数据不适合往外部发送。模型配置在config.yaml文件里完成核心配置项如下model: provider: openai_compatible base_url: http://localhost:11434/v1 api_key: dummy model_name: qwen2.5:14b temperature: 0.2 max_tokens: 4096这里有个关键参数值得多说一句temperature。我实际测试下来做测试用例生成和任务拆解这类逻辑性强的任务温度设置在 0.2 以下效果最好。温度太高模型会发挥过度生成一些天马行空的测试步骤温度太低又会导致它固执己见页面元素定位不到的时候不知道换思路。0.2 是个比较均衡的取值既能保证逻辑严谨又保留了一定的路径探试能力。还需要注意的一点是max_tokens这个值决定了模型单次能输出的最大长度。如果你要让它一次性生成几十条测试用例4096 个 token 都不够用建议直接调到 8192。否则你会发现用例生成到一半被截断甚至出现 JSON 格式不完整导致解析失败的情况。3.4 万神殿工具集让 Agent 拥有操作能力Hermes Agent 默认自带了一套叫“万神殿”的工具集名字听着很玄乎实际上就是把各种常用操作能力集成到了一起。对于系统测试来说最常用的工具有这几个浏览器操作工具支持页面跳转、点击、输入、截图、读取页面文本底层基于 Playwright。命令行工具允许 Agent 在本地执行 shell 命令用于启动测试服务、查看日志、跑数据库脚本。数据库查询工具可以直接连接 MySQL、PostgreSQL 等数据库执行查询方便做数据初始化或者结果校验。文件读写工具读写 JSON、YAML、CSV、Excel 文件测试报告生成依赖这个。API 请求工具发送 HTTP 请求用于接口级测试。工具配置同样在config.yaml里声明比如数据库工具需要提供连接信息tools: database: enabled: true default_connection: mysql://username:passwordlocalhost:3306/erp_db browser: enabled: true headless: true viewport: [1920, 1080]这里有一个非常实用的小建议对于 Web 自动化测试浏览器模式建议先用headless: false也就是有头模式跑一遍亲眼确认每一步操作是否符合预期排查没问题后再切到无头模式批量执行。这个习惯帮我省下了大量排错时间因为 Agent 自己觉得操作成功了实际页面上可能弹了个你没预料到的遮罩层。完成以上这些配置后一个具备基本测试能力的 Hermes Agent 就搭建好了。这时候你做一次简单的冒烟验证让它访问一个内部系统页面然后截图反馈如果一切正常就可以进入下一步——设计真正面向 ERP 全系统的测试用例体系了。4. 测试任务拆解与用例生成把系统测试需求翻译给 Agent4.1 用“一句话”定义测试范围系统测试最怕的就是范围不清。人工测试的时候测试主管要说清楚什么模块测、什么模块不测、测试到什么程度算通过光对齐这件事就费半天口舌。到了 Agent 这儿这个对齐环节可以通过任务描述语来高效实现。我的做法是把系统测试需求沉淀成一套相对固定的任务模板基本结构是测试目标 范围清单 优先级 完成定义。举个例子我们做采购模块回归测试时给 Agent 的指令是这样的对 ERP 系统的采购管理模块执行功能回归测试。范围包括采购申请、采购订单、收货、退货四个子模块。忽略报表统计类功能。测试优先级为核心业务流程优先。执行完成后输出测试用例清单、执行记录和缺陷汇总通过标准为所有 P0/P1 用例通过率 100%P2 通过率不低于 95%。这句话包含的信息量其实非常大。Agent 会自己解析出关键约束只测四个子模块、不测报表、先跑核心流程、输出哪些产物、合格线是多少。它不需要你告诉它“采购申请要怎么创建”“采购订单怎么审批”这些它会根据自己对业务系统的理解去规划步骤。不过这里有个很现实的问题Agent 再聪明它对你业务系统的了解也是从页面结构、接口文档里现学的不可能第一次跑就完美理解你的业务规则。所以实际执行前我会先让 Agent 输出一份测试计划说明它打算覆盖哪些功能点、每个功能点怎么验证人工审核一遍再执行。这一步看似多余却能避免 Agent 跑到第 30 个用例时突然钻牛角尖浪费大量执行时间。4.2 测试用例生成的质量控制Hermes Agent 生成测试用例的能力我觉得才是这个工具真正有价值的地方。它不仅能拆解任务还能把拆解出的功能点细化成一条条可执行的测试用例并且自动补齐了测试数据准备、前置条件、操作步骤、预期结果这些关键要素。在一轮对订单管理模块的测试里Agent 自动生成了这样一条用例用例编号PO_CORE_007用例名称已审批采购订单不允许修改单价前置条件存在一条已审批状态的采购订单订单号 PO20240015操作步骤使用采购员账号登录系统进入采购订单列表页查询订单号 PO20240015打开订单详情尝试修改单价字段提交修改预期结果系统拦截修改操作提示“已审批订单不允许变更价格”优先级P1这条用例的质量说实话已经达到了一个中级测试工程师的写作用例水平。它把前置条件、步骤、预期结果都描述得很清楚而且覆盖了一个核心业务规则不是那种走过场的垃圾用例。但要注意Agent 生成的用例也不是全都能直接用。我统计过第一轮生成的用例里大约有 20% 存在业务理解偏差比如把某两个字段的联动关系理解错了或者把不该合并的权限场景合并了。所以我的流程是Agent 生成用例之后人工做一轮快速筛选把明显不合业务逻辑的挑出来剩下的进入执行池。这样做一轮下来有效用例的留存率能达到 9 成以上。4.3 从模块用例到全系统测试场景编排单模块的用例生成没问题之后就要面对系统测试最核心的难点跨模块的流程串联。ERP 系统里一个完整业务往往是跨多个模块的比如从销售订单→发货通知→出库→开票→应收确认每个环节的数据是逐级传递的。这种场景用传统自动化脚本写要从造数开始一步步维护状态非常痛苦。但用 Agent 来做就顺手很多因为它天然支持多步推理和工具调度。它会自动把前一个环节产生的结果比如出库单号、金额作为下一个环节的输入然后继续执行下一个模块的测试。我在实际操作中把这些跨模块链路设计成了“测试剧本”。每个剧本包含角色、数据流、校验点和分支处理逻辑Agent 按剧本推进遇到异常情况再实时决策是重试还是跳步还是终止。这个设计最后帮我们实现了从销售订单创建到财务凭证生成的全链路自动化回归彻底替代了之前手工造数、手工流转、手工对账的笨办法。5. 72 项测试的完整执行链路从试点到全量回归5.1 先在 10 个高价值用例上做小范围试点直接一上来就跑 72 项测试肯定不现实Agent 再聪明第一次执行也需要磨合。我的思路是先用 10 个业务价值最高、最容易出问题的用例跑一遍试点让 Agent 熟悉系统的页面结构、交互方式、数据特点。试点阶段的指令我会习惯性地加一句“慢一点每一步都截图确认”目的不是真的让它放慢速度而是通过截图把每一步的执行结果保留下来方便我后续去核对它的操作路径是否正确。第一批 10 个用例跑完我拿到了第一手数据执行成功率 80%两个用例失败的原因是登录态过期导致跳转到了登录页面Agent 没有识别出来还在继续找目标元素。这个问题不算大但暴露了一个缺陷——我需要给它补充“会话失效检测”的规则。于是我在任务指令里增加了这么一句话“当页面跳转到登录页或出现重新登录提示时先尝试重新登录再继续执行原任务。”改完这个规则之后再跑同样的用例成功率直接拉到了 100%。这个细节也验证了 Agent 的一个重要特点它是可训练的但训练的方式不是传统意义上的改代码而是通过调整指令、补充规则来优化它的行为模式。5.2 全量执行72 项测试的编排与调度试点通过后我开始把测试范围扩展到全系统。这 72 项测试覆盖了 ERP 系统的主干模块包括采购管理、销售管理、库存管理、财务核算、基础数据五个大模块每一项测试里既有页面操作型用例也有接口校验型用例还有数据一致性校验用例。为了让执行过程可控我给 Agent 设计了一套分批执行策略每批跑 12 个用例跑完一批检查执行结果再放行下一批。这种设计看起来效率低了一些但实际上避免了“一个用例卡死导致后面全废”的连锁反应。Agent 的执行机制本身就是任务式的如果一个任务在规定步骤之内没有完成它会卡在等待结果的状态如果不做批次隔离后续所有任务都会被堵住。每个批次的指令模板是这样的执行采购管理模块第 1 批 12 个测试用例。用例清单见文件 purchase_core_cases_batch1.json。每个用例执行完毕后记录实际结果、实际输出、是否存在缺陷。同一用例最多重试 2 次重试仍失败则标记失败原因并继续下一个用例。全部执行完成后输出批次执行摘要。关键信息我都标注出来了用例清单文件、重试次数上限、失败处理策略、输出要求。这些约束缺一不可少了任何一条Agent 都可能做出让我难受的自主发挥比如某个用例失败了它反复重试十几次白白浪费时间。整个 72 项测试跑下来实际耗时大约 2 小时 40 分。这里必须说明一下这个耗时跟网络状况、模型推理速度、系统响应速度都有关系不是固定值。如果换成云端模型推理整体时间还能压缩一半左右。5.3 执行过程的实时监控与人工干预Agent 执行过程中我不是完全撒手不管而是开着实时执行日志面板每隔几分钟看一眼。Hermes Agent 提供了比较完整的日志输出能直观看到每一步的操作动作、返回结果、耗时情况。有几次比较惊险的时刻其中一个用例执行到“删除已审核的供应商”这一步时Agent 在弹出的确认框里点击了“确定”然后发现系统提示“该供应商已存在关联采购订单无法删除”结果被判定为用例失败。但实际上这个用例的预期结果就是“系统应阻止删除并给出提示”也就是说 Agent 在操作上执行成功了却在断言环节理解错了把系统报错当成了测试失败。这类问题暴露出的本质是Agent 在把“系统提示信息”和大模型期望结果做比对时依赖语义理解而不是精确匹配。我调整的方式是在预期结果描述中增加了明确的语义指引“预期系统提示无法删除提示文案应包含‘关联’或‘无法删除’字样此提示属于预期行为不算缺陷。”补齐这个语义边界后同类误判就再也没有出现过。所以我的经验是让 Agent 跑全量测试不是一件配置完就能撒手的事至少要有人在第一轮执行过程中盯着关键节点及时纠偏。等 Agent 行为稳定了才可以把执行频率提高放到日常构建链路里无人值守地跑。5.4 测试执行总览72 项执行结果分析全量执行完成后Agent 生成了一个结构化的执行统计表我整理后大致是这样指标项数据用例总数72执行通过64失败真实缺陷5失败用例设计问题2失败环境依赖问题1首次执行通过率88.9%最终通过率95.8%这个结果在意料之中又略超预期。5 个真实缺陷里有两个是前端校验缺失导致用户可以提交不符合规则的数据两个是权限控制遗漏一个是金额计算精度问题。这些问题以前靠人工回归要碰运气才能发现这次 Agent 通过遍历不同角色、不同数据组合系统性地暴露了出来。更重要的是72 项用例执行过程中产生的可复现数据、截图、日志、缺陷描述全部被完整记录了下来。每个人工测试员看到这批材料都能快速理解发生了什么、怎么复现、怎么验证修复。这种执行资产的沉淀价值可能比测试本身还大。6. 测试报告生成从原始日志到 10 份可交付文档6.1 报告类型的规划管理层、研发组、测试组各取所需测试报告这件事做得浅了就是贴几张截图做得深了能成一整套质量度量体系。但不管怎么说一份报告如果没有明确受众和用途那就是一堆没有价值的字符填充。我在规划报告体系时先把阅读对象分成了三类管理层关心的是风险结论和交付建议研发组关心的是缺陷详情和复现路径测试组关心的是覆盖率、执行统计和用例质量。针对不同人群报告的内容重点和详略程度完全不同。最终我规划了 10 份报告分别是测试总览报告管理层版测试执行统计报告明细数据缺陷清单及严重程度评估报告模块覆盖率分析报告跨模块业务流程测试报告接口层测试结果报告性能基准数据报告回归风险分析报告测试数据准备与依赖报告本轮遗留问题与后续建议报告这 10 份报告不是拍脑袋想出来的它们对应的是 ERP 系统测试中各个关键干系人的信息诉求。管理层不需要看 72 条用例怎么跑的他只需要知道“能不能发版风险在哪”研发组不需要看测试覆盖率曲线他只需要知道“哪个接口、哪个操作路径能稳定复现 bug”。6.2 让 Agent 按模板自动生成结构化报告Hermes Agent 生成报告的能力说白了大模型在结构化和摘要这件事上天然有优势。但你要是真的直接让它“写一份测试报告”它输出的通常是一篇长篇大论的叙述文好看没用。要想让报告能直接拿来用或者二次编辑就得提前定义好输出模板。我在配置里预设了一套 JSON 格式的报告结构模板用report_schema关键词声明每个报告需要的字段、层级、摘要长度。比如测试总览报告模板里就包括了执行总览、通过率趋势、关键缺陷摘要、风险等级、建议结论这几个必填项。Agent 在跑完 72 项测试后会自动把执行日志里的数据汇总按模板填充生成各个报告。整个过程大概 5 分钟从原始日志到 10 份结构化报告全部落地。相比以前人工写报告要整理数据、做图表、抠字眼效率提升是数量级的。还有一个小细节我要求所有报告都同时输出 Markdown 和 Excel 两种格式。Markdown 适合放到在线文档里给协作团队成员快速阅读Excel 适合给质量和研发团队做二次统计分析。Agent 通过文件读写工具和数据处理插件很轻松地完成了双格式输出。6.3 报告质量评审与人工补充自动生成的报告质量怎么样说实话六七十分肯定有但离直接交付还有差距。主要问题在于AI 写的报告倾向于把一切都描述得“还好还好”对严重缺陷的表述不够尖锐对风险等级的判断偏保守。这可能跟大模型的训练数据有关它总觉得留有余地比较礼貌但测试报告最需要的就是结论明确。针对这个问题我做了两轮人工优化第一轮把关键缺陷的标题从“系统提示错误”改成“财务凭证金额计算存在精度误差差额 0.01 元触发对账不平”把问题说死说透第二轮在风险分析报告里补了一段代码级别的判断逻辑说明帮助研发组快速定位。这里分享一个经验AI 生成的报告最适合当草稿和素材库不适合无脑直接发。你真正省下的时间不是“不用写报告”而是“不用从头整理数据”。从一张白纸开始写和拿到一份 80% 内容准确、你只需修改 20% 的草稿工作效率完全是两个量级。10 份报告最终用时大概一个半小时全部定稿这个时间主要花在人工审阅、措辞调整和补充链接上而不是花在数据收集和报表制作上。7. 踩坑实录与经验总结让 Agent 真正走进日常测试7.1 三个最容易踩的“坑”这套方案跑通之后我回看了整个过程有三个坑是最容易踩的写出来给准备尝试的朋友提个醒。第一个坑是模型选型贪大求全。一开始我图省事直接接了云端最强模型效果确实好但每次调用都在烧钱72 个用例跑下来 API 账单让人肉疼。后来换成本地 14B 模型能力虽然弱一点但通过优化提示词和增加截图反馈效果完全够用。尤其是测试这种对“稳定性”要求高于“创造性”的场景本地模型反而是更合适的选择。第二个坑是让 Agent 无脚本全自由执行。你给 Agent 说完任务就完全撒手它大概率会给你整出点幺蛾子。最典型的就是高权限账号乱点一气或者进入某个页面后陷入循环操作。我的经验是保障每次执行前有明确的边界清单比如允许操作的模块范围、禁止点击的按钮、遇到弹窗时的处理策略这些约束写在指令里比出了事再补救省心得多。第三个坑是忽略执行日志的价值。Hermes Agent 每执行一步都会留下日志这些日志不仅仅是排查故障用的它们还是测试过程资产的一部分。有一次我们想追溯一个偶现 bug 的前置操作顺序就是因为日志记录完整半小时内复盘出了完整的复现链路。所以建议在初始配置阶段就把日志级别调到最详细不要为了省存储空间而精简日志。7.2 与传统自动化测试的关系不是替代是升级用 Agent 跑完 72 项测试之后有人可能会问那传统自动化测试还有存在的必要吗我的判断是传统自动化不仅有必要而且是 Agent 方案能够落地的基石。原因很简单Agent 在做决策和调度但真正执行页面操作、接口调用、数据校验的还是 Playwright、pytest 这些传统工具。Agent 更像是一个“指挥官”传统自动化框架是“士兵”。没有底下这些可靠的执行工具Agent 再聪明也只是纸上谈兵。从我们团队的实际分工看现在日常回归的流程变成了敏捷测试人员维护业务规则和测试场景描述Agent 负责自动生成用例、编排执行、汇总结果传统自动化脚本作为执行底座保留。三者各司其职测试效率提升了测试人员的价值也从重复劳动转向更高级的测试设计。7.3 这套方案能复制到什么场景最后聊聊这套方案的适用范围。很多朋友看到“72 项测试、10 份报告”这个概念第一反应可能是“我也要搞一套一样的”。但需要清醒认识到Agent 自动化测试在以下场景效果最好业务流程相对稳定、模块化程度高的系统比如 ERP、CRM、OA这类系统页面结构变动不频繁Agent 学习成本低。测试用例数量大、回归频率高的项目项目规模越大Agent 带来的效率提升越明显。有清晰文档或者可交互接口的系统Agent 理解业务的速度与系统可探索性直接相关。反过来如果你的系统是一个非常新的产品页面天天在变、接口文档缺失、业务规则一团模糊那先别急着上 Agent。这样的环境下Agent 的自主探索能力会被复杂性消耗殆尽效率反而不如人工测试。我自己在实际落地时最大的感悟是AI 自动化测试最强的不是“替代人”而是“放大人的管理能力”。以前带 2 个测试人员做全量回归需要排两天计划、盯一天执行、再花半天写报告。现在一个人加一个 Agent半个工作日能完成同等工作量且过程资产更完整、结果更可追溯。这种能力升级才是这套方案真正的价值所在。如果你也想在自己团队里搭一套类似的 Agent 测试体系我建议不要陷入工具对比的泥潭先找一条最痛的业务链路跑通闭环从自然语言描述测试目标到 Agent 生成用例并执行再到报告自动生成。哪怕一开始只有 5 条用例只要链路走通了后续往里面加用例、加模块、加报告类型都是水到渠成的事。