用Hermes Agent实现ERP系统自动化测试的实战复盘
2026/9/8 21:30:24 网站建设 项目流程

一直想找一种方式,让系统测试不再像流水线工人一样反复点击、反复抄写结果。ERP项目上线前那阵子,我硬是让团队手动跑了三天回归,眼睛都快看花了。后来接触到 Hermes Agent,发现可以把整个测试过程交给它:我只要用一句话描述测试目标,它自己拆任务、调工具、跑用例、收集结果,最后还能按指定格式生成报告。实测下来,我让它自动执行了72项系统测试,生成了10份不同维度的报告,整个流程基本无人值守。这篇文章就是这次实战的完整复盘,包含部署过程、任务拆解思路、参数配置和中间踩过的坑,给同样想搭建AI自动化测试环境的朋友一个参考。

这次项目的背景并不复杂:一个基于B/S架构的ERP系统,模块多、接口密、权限逻辑繁琐。传统做法是设计测试用例、人工验证、手动截图和记录,费时费力还容易遗漏。我的目标很直接:用Hermes Agent接管“计划-执行-汇总”的循环,只保留人工审核最终结论。最终落地效果超出了预期,不仅72项测试全部跑完,报告也自动输出成10份清晰的文档,团队评审时可以按模块和风险等级快速定位问题。

1. 为什么用 Hermes Agent 做系统测试

1.1 传统测试的痛点

很多团队对自动化测试的理解还停留在“用脚本替代点击”上。确实,Selenium、Playwright、Appium都能解决UI自动化,接口层也有JMeter、Postman或自研框架,搞一套流水线也能跑。可问题在于:测试脚本要维护,页面一改就得跟着改;数据要准备,环境一变就全废;最重要的是,测试结果分析仍然需要人工逐条查看。跑完几百条用例,机器告诉你3条失败,你还是要自己去查日志、翻接口、定位是不是环境问题。

我这次要测的ERP系统更麻烦。它本身有72个核心业务场景,包括采购订单流转、库存盘点、应收应付核销、权限矩阵校验等等。这些场景跨越多个模块,接口之间有依赖,数据库状态会互相影响。用传统脚本写起来,每个场景至少几百行代码,还要额外写数据清理逻辑,工作量非常大。

1.2 Hermes Agent 的能力边界

Hermes Agent 跟传统自动化框架最大的区别,是它把“执行脚本”上升到了“理解和规划”的层面。它本质上是一个能调用各种工具和API的智能体:你可以通过自然语言给它下达测试指令,它会结合现有工具链自行规划步骤、生成临时脚本或直接操作接口,然后把执行结果汇总反馈。对于测试这件事来说,相当于给团队配了一个“AI测试协调员”,而不是多了一个“脚本机器人”。

应用到系统测试上,Hermes Agent 可以做到这几点:

  • 根据一句测试目标,自动拆解测试范围、测试步骤和预期结果。
  • 调用已有的接口测试工具、数据库查询工具或浏览器自动化工具,代替人来执行动作。
  • 实时收集执行日志、接口返回值、数据库快照,并自动对比预期。
  • 按预定模板生成测试报告,内容包含执行明细、失败原因和风险建议。

注意:Hermes Agent 不是测试工具本身,它更像“调度大脑”。具体操作还是要依赖终端、浏览器插件、数据库客户端这些底层工具。理解了这一点,后续配置起来就顺了。

1.3 这次设定的目标

这次项目我给自己定了两个硬指标:

  1. 把ERP系统的72个核心用例全部自动跑完,中途不人工干预。
  2. 自动生成10份报告,按不同阅读对象和维度拆分,包括完整明细报告、模块汇总报告、接口健康报告、数据校验报告、权限矩阵报告、异常日志分析报告、性能参数趋势报告、用例覆盖度报告、缺陷清单报告和交付评审报告。

这10份报告不是简单把一份结果重复复制,而是各自用不同的视角抽取数据。Agent需要自己决定从哪些日志和结果文件中提取信息,再组织成对应格式。整个过程只允许我提供一句话的总体目标和约束条件。

2. 环境准备与 Agent 安装部署

2.1 硬件与软件环境

先说硬件。Hermes Agent 本地部署版对配置要求不算低,因为需要加载模型并做推理。我用的是一台带32GB内存和RTX 4060(8GB显存)的测试工作站,操作系统是Ubuntu 22.04。如果是纯Windows环境,也能跑,但建议显存不低于6GB,内存不低于16GB,否则并发任务一多容易卡死。

软件层面需要准备:

  • Python 3.10+(建议3.11,兼容性更好)
  • Node.js 18+(部分内置插件需要)
  • Docker(可选,用于隔离测试环境)
  • Git(拉取仓库和更新版本)
  • 各数据库客户端、HTTP客户端(会被Agent调用)

2.2 安装步骤

我从官方仓库拉取的是最新的本地部署分支。安装过程大致如下:

# 拉取代码 git clone https://github.com/HermesAgent/hermes-agent.git cd hermes-agent # 创建虚拟环境 python3 -m venv .venv source .venv/bin/activate # 安装依赖 pip install -r requirements.txt # 复制环境变量模板 cp .env.example .env # 初始化配置 python manage.py init

初始化完成后,会生成一个本地服务。默认监听在127.0.0.1:8080,然后启动服务:

python manage.py start --port 8080

接着在浏览器打开http://127.0.0.1:8080,就能看到控制台界面了。首次进入会让你配置模型接口和创建Agent实例。

2.3 模型配置与关键参数

Hermes Agent 的核心是模型推理,所以模型配置直接影响测试规划质量。我最初用默认的通用对话模型,结果Agent生成的步骤偏保守,很多用例只是“检查页面是否打开”,完全没有真正触发业务逻辑。后来改成具备工具调用能力的大模型,并且把温度参数调低,效果才明显改善。

.env里,有几个关键参数值得关注:

# 模型配置 LLM_PROVIDER=openai_compatible LLM_MODEL=your-model-name LLM_API_BASE=http://127.0.0.1:11434/v1 LLM_API_KEY=dummy-key # 推理参数 LLM_TEMPERATURE=0.1 LLM_MAX_TOKENS=8192 # Agent运行参数 AGENT_MAX_ITERATIONS=50 AGENT_CONCURRENCY=4

温度调到0.1是为了让Agent严格按照指令和已有规范执行,减少随机发挥。最大迭代次数设到50,避免某个用例陷入死循环导致整个任务卡死。并发设置为4,既能提速,又不会把系统资源占满。

提示:如果是在Windows上部署,安装依赖前最好先确认Python环境用的是64位,并且把Microsoft C++ Build Tools装好,否则部分依赖包编译会报错。

3. 测试任务设计与执行流程

3.1 将测试需求拆解为 Agent 任务

Agent虽然智能,但它不知道你的业务规范。所以“一句话搞定”不是真的只需一句话,而是把复杂需求浓缩成一句话级别的指令,配合必要的上下文和约束。我在给Hermes下指令前,会先准备好一份测试范围说明,里面包含72个用例编号、名称、前置条件、步骤和预期结果。然后,我把这份说明作为附件或上下文提供给Agent,再给出总体指令。

最终我使用的是类似下面的指令:

请根据附件《ERP系统核心测试用例v3.xlsx》中的72个测试用例,依次执行系统测试。 执行环境为http://192.168.1.100:8088,测试账号和密码在环境参数中。 每个用例执行前需要重置对应模块的测试数据,执行过程中记录接口状态和响应时间。 执行结束后,请汇总所有结果并生成10份报告,报告格式要求见模板目录。

这仍然算是“一句话”,但包含了执行范围、环境、数据策略和输出要求四个关键要素。如果把这些要素分开讲,Agent反而容易理解偏差。

3.2 设计72项测试用例的思路

这里说的72项,是最终执行的用例数,而不是随便挑出来的。我按照RBT(基于风险的测试)思想做了筛选,优先覆盖核心交易链路、高风险权限点和跨模块数据一致性场景。

大致分布如下:

模块用例数重点覆盖内容
采购管理12订单创建、审批流、收货入库、采购退货
库存管理10盘点、调拨、批次追溯、库存锁定
销售管理14报价、订单、出库、应收生成、销售退回
财务模块16凭证生成、核销、期末结账、报表计算
系统管理12用户权限、角色矩阵、操作日志、数据权限
基础数据8物料档案、供应商档案、BOM维护、汇率同步

每个用例都必须有明确的前置条件和预期结果,不能出现“验证数据展示正确”这种模糊描述。例如采购订单用例,预期结果要精确到“订单状态变为已审核,库存台账增加对应数量,财务生成待结算单据”。这样才能让Agent对照检查,而不是自说自话。

3.3 Agent 执行调度与并行策略

72个用例不能一股脑全跑,因为不同用例之间可能有数据依赖。我把用例按模块分组,并设定依赖关系,比如采购模块跑完才能跑库存模块,库存跑完才能跑财务模块。在Hermes Agent中,可以通过规划工具里的“任务依赖图”来配置。

实际执行时,Hermes Agent会自己动态调度。不用担心并发冲突,我配置了全局锁和数据库事务回滚策略。每个用例执行前,Agent会先调用数据初始化脚本,把相关表恢复到基线状态,然后才开始执行步骤。执行过程中的截图、请求日志、响应时间全部落盘。

这里有一个重要的经验:不要在一开始就让Agent并行执行所有用例。先串行跑通一个模块的10个用例,确认没有问题,再逐渐提高并发。我第一轮就是盲目开并发,结果两个用例同时修改同一批库存数据,导致后续断言全失败,白白浪费了两个小时。

3.4 执行过程的观察与干预

虽然目标是无人值守,但我在执行过程中还是保持“轻干预”策略。通过控制台能看到每个用例的实时状态,分别有等待中、执行中、成功、失败、阻塞5种。

我观察到用户权限矩阵相关的用例最容易出现假失败。原因是ERP系统有缓存,权限变更后需要刷新会话才生效。Agent第一次没注意,连续报了5个失败。我暂停任务,在环境配置里增加一条“权限变更后必须重新登录”的全局规则,然后重新触发,问题就消失了。

这种干预是有价值的,它不破坏自动化流程,反而是把经验沉淀到Agent的配置里。跑完一轮后,这些规则都保留在Agent的记忆库中,下一轮执行就不会重复踩坑。

4. 测试报告生成与解读

4.1 10份报告的构成与维度

10份报告看起来很多,但每一份的读者不同,信息颗粒度也就不同。

报告名称面向对象主要内容
完整执行明细报告测试工程师每个用例的执行步骤、实际结果、截图、日志索引
模块汇总报告测试组长各模块通过率、失败用例编号、醒目风险提示
接口健康报告开发工程师所有被调用接口的状态码分布、响应时间均值、超时Top10
数据校验报告测试工程师数据库前后对比、关键字段一致性、异常数据标记
权限矩阵报告安全/管理员各角色可访问功能点、实际访问结果、越权风险
异常日志分析报告开发/运维日志中出现频率最高的异常栈、关联用例、时间线
性能参数趋势报告性能测试工程师响应时间、吞吐量、资源占用随用例执行的变化曲线
用例覆盖度报告质量管理用例与需求追踪矩阵的映射情况、未覆盖需求列表
缺陷清单报告项目经理所有失败用例整理成缺陷,含严重等级、复现步骤、初步定位
交付评审报告项目决策层测试结论、剩余风险、是否可上线的建议

Hermes Agent在生成报告时,并不是自己编数据,而是从执行日志、接口记录文件、数据库快照这些真实数据源中提取内容。为了让它能正确读取,我会在测试执行前把相关指标定义好,比如“响应时间超时阈值设为3秒”,“数据一致性校验精确到小数后两位”。

4.2 报告自动化生成管线

Agent生成报告的方式很灵活。我在工作目录里放了一个report_templates文件夹,里面预置了10份Markdown和HTML模板,模板中包含占位符。Agent执行完所有用例后,会自动读取执行结果数据库,填充对应位置。

例如缺陷清单报告模板大致长这样:

# 缺陷清单报告 生成时间:{{generation_time}} 执行批次:{{batch_id}} ## 缺陷列表 {{#defects}} ### {{id}} {{title}} - 严重等级:{{severity}} - 所属模块:{{module}} - 对应用例:{{case_id}} - 复现步骤:{{steps}} - 实际结果:{{actual_result}} - 预期结果:{{expected_result}} - 初步定位:{{initial_diagnosis}} {{/defects}} ## 风险建议 {{risk_advice}}

Agent会根据每个失败用例的日志和上下文,生成“初步定位”。比如某个用例失败,Agent读取到接口返回500,关联到异常日志中的“数据库连接池耗尽”,那它会自动把初步定位写成“疑似连接池配置不足”。

这种自动化生成的报告,最大的好处是格式统一,信息完整,不会出现某个人写的报告漏掉复现步骤的情况。最大的风险是Agent可能会在定位部分过度推断,把不是根本原因的线索当根因。因此,我设立了人工复核节点:Agent产出的“缺陷清单报告”里所有“初步定位”必须由测试负责人确认后才能转给开发。

4.3 测试结论的提取与人工复核

报告生成后,我并不是直接拿给团队看。第一步是让Agent做一个“自检”:把10份报告的关键指标汇总成一个摘要,并检查报告之间是否有数据矛盾。比如完整明细说“用例34通过”,模块汇总却显示“该模块失败用例包含34”,那肯定有问题。

这份摘要其实相当于第11份内部报告,不会外发,只用于校验质量。我看了下整体通过率是92%,即66个通过,6个失败。失败用例集中在权限变更未刷新、外部接口mock超时、库存基数初始化不准这三个原因。经过人工复核,其中2个是测试数据问题,重新执行后通过;剩下的4个确实是代码缺陷,已经记录到缺陷管理系统。

报告的数字不是重点,重点在于我们能从自动化结果里快速定位真实问题。这比花三天人工整理Excel要高效得多。

5. 常见问题与排错清单

5.1 安装与调用报错

我在部署和运行过程中遇到不少问题,挑几个典型的分享。

第一个是模型调用超时。第一次跑测试时,Agent每一步都要调用模型做决策,并发为4的情况下,单步决策如果超过60秒,任务就卡住。我一开始以为是网络问题,后来发现是模型上下文太长。解决方式是精简上下文,把执行过长的历史对话定期压缩,只保留关键状态和结果。

第二个是Agent生成的Python脚本中文字符编码报错。在Windows环境测试时,Agent写出的脚本默认保存为UTF-8,但控制台是GBK编码,导致print中文时崩溃。解决办法是在Agent的初始化指令里加上一句“所有生成的脚本文件头添加# -*- coding: utf-8 -*-,并在执行前设置环境变量PYTHONIOENCODING=utf-8”。

第三个是数据库连接数耗尽。72个用例密集执行时,Agent会频繁建立MySQL连接,连接池默认100根本不够。后来在测试数据库中设了max_connections=500,并让Agent每次操作数据库后主动释放连接。

5.2 漏测与误报处理

漏测是最可怕的事情。有一次Agent报告“所有用例全部通过”,但我知道其中一个用例涉及两个模块之间的事务回滚,这个场景如果没有触发异常是不会走回滚分支的。翻看详细日志,发现Agent只验证了正常提交路径,压根没模拟异常。

解决办法是在用例设计阶段,明确要求Agent“必须覆盖异常分支”。我在全局指令中增加了规则:

如果用例中包含“异常”“回滚”“越权”“并发”等关键词,必须在执行正常流程后,额外执行异常路径验证,并在报告中单独标注。

经过这条规则补充,Agent后续在相关用例中增加了故障注入步骤,误报率大幅下降。误报方面,则主要靠设置重试机制。对于网络抖动造成的临时失败,Agent会重试3次,每次间隔10秒。只有3次都失败才判定为用例失败,并保留3次尝试的日志供分析。

5.3 报告格式错乱的修复

另一个常见问题是报告格式化。Agent本身是基于模板填充,但如果某个字段内容太长,比如异常日志堆栈里有一千行,直接渲染到HTML里会让整个报告布局错乱。我让Agent在写入报告前对所有日志类字段做截断,超过500字的部分折叠为“详情见日志文件”。

还有一次,10份报告中有一份是空白的。排查后发现Agent执行汇总任务时读取的文件路径包含中文字符,在内部工具链中编码不一致,导致找不到结果文件。后来我把所有中间文件的命名统一为英文加数字,彻底解决这个问题。

经验:尽量让Agent在同一个工作目录下读写中间产物,不要使用带空格的深层路径。Agent对路径的处理不如人脑灵活,容易出幺蛾子。

5.4 执行效率调优心得

整体72项用例,第一次跑耗时约6小时,经过调优后稳定在3小时20分钟左右。主要优化手段有三个:

  1. 把不涉及数据依赖的用例并行度从4提升到6,但不超过CPU核心数的一半。
  2. 让Agent对每个用例使用独立的临时数据库schema,测试结束直接 drop,省去繁琐的数据清理时间。
  3. 报告生成任务放在所有用例执行完后单独跑,不让它占用测试执行资源。

说到底,Hermes Agent的调度能力本身不错,但你需要告诉它哪些步骤可以并行、哪些必须串行。这些约束最有效的表达方式就是在用例表的“依赖模块”列里写清楚,Agent会自己读。

6. 用 AI Agent 做测试的实际体会

这次项目结束之后,我对“AI自动化测试”有了更明确的认知。它确实能取代很多重复性验证工作,尤其适合回归测试、跨模块数据一致性检查和报告汇总。但指望它完全替代测试工程师也不现实,至少在现阶段,测试设计能力、业务理解能力和最终风险判断,仍然需要人来主导。

我个人体会最深的一点是:Agent的“聪明”程度,取决于你给它输入的测试规范的详细程度。一开始我把测试用例写得比较简略,Agent执行时经常自由发挥,导致结果不可控。后来我花了两天时间把所有用例的前置条件、步骤、预期结果全部细化,执行效率和准确率立刻上来了。所以,想让AI替你干好活,先要把活路铺平。

如果你现在正准备尝试Hermes Agent或者类似的AI Agent做系统测试,我的建议是先从一个小模块、20个用例以内的小规模开始,跑通之后再扩展到全量。不要上来就挑战上百个用例,否则一堆环境问题和工具链问题混在一起,你可能分不清是Agent的锅还是自己的锅。

另外,报告模板提前定义好能省很多事。让Agent按照你习惯的格式输出,而不是让它自由发挥,这样团队接受度更高。毕竟测试报告是给人看的,不是给AI欣赏的。

最后再分享一个小技巧:每次跑完测试后,把Agent的执行日志保留下来,并让Agent总结一下本次执行中的规则修正和踩坑点,存成一个“经验库”。下一轮测试开始时,让Agent先加载这个经验库再执行。实测下来,随着轮次增加,稳定性和效率会一代比一代好。这就是Agent测试和传统脚本测试最大的不同——它是能“长记性”的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询