我把 OpenClaw 从聊天工具改造成测试工作流助理:一次完整实操复盘
我把 OpenClaw 从聊天工具改造成测试工作流助理:一次完整实操复盘
最近看到 OpenAI 的一篇文章,里面讲到他们如何在“智能体优先”的工程模式下使用 Codex。文章里有一个很有意思的点:他们不是只让 Agent 随便回答问题,而是围绕代码仓库、AGENTS.md、工具链、CI、文档、反馈回路等内容,给 Agent 搭建了一套可以持续工作的工程环境。
这给了我一个启发:
对测试工程师来说,OpenClaw 也不应该只是一个聊天工具。
真正有价值的用法,是把它放进测试工作流里,让它稳定完成需求评审、测试点设计、用例生成和自检。
所以这次我没有停留在“让 OpenClaw 生成几条测试用例”,而是完整走了一遍:
创建测试工作区
→ 编写 AGENTS.md
→ 建 Prompt 库
→ 输入 PRD
→ 生成需求评审问题
→ 收敛评审问题
→ 生成测试点
→ 人工纠偏
→ 测试点收敛
→ 可入库用例筛选
→ 正式用例生成
→ 用例自检
→ 输出最终修正版用例
→ 拆分成 3 个 Skill 草案
跑完之后,我最大的感受是:
OpenClaw 的价值不是“一次性生成最终用例”,而是帮助测试工程师完成一套可控、可检查、可沉淀的测试分析流程。
一、为什么不直接让 OpenClaw 生成测试用例?
很多人用 AI 做测试,第一句话就是:
帮我根据这个需求生成测试用例。
这个方式能用,但风险也很明显。
因为需求里经常会有很多没写清楚的地方,比如:
- 审批通过后的终态是什么?
- 财务复审是不是终审?
- 导出字段到底有哪些?
- PC 和 H5 是否完全一致?
- 批量导入是否本期支持?
- 驳回后重提是从头审批,还是从驳回节点继续?
- 在途数据上线后走新规则还是旧规则?
如果这些问题没有确认,AI 直接生成测试用例,就很容易把“待确认内容”写成“确定预期”。
比如它可能会写:
财务复审通过后,流程结束。
看起来很合理,但 PRD 没写,就是不应该进入正式用例。
所以我这次给 OpenClaw 设定的原则是:
先问问题,再拆测试点,最后才生成用例。
二、第一步:给 OpenClaw 建一个测试工作区
我先在本地建了一个实验目录:
mkdir -p ~/openclaw-sqa-lab/{prompts,rules,templates,examples,outputs,skills}
cd ~/openclaw-sqa-lab
目录结构如下:
openclaw-sqa-lab/
├── AGENTS.md
├── prompts/
├── rules/
├── templates/
├── examples/
├── outputs/
└── skills/
每个目录的作用很清楚:
| 目录 | 用途 |
|---|---|
AGENTS.md |
测试助理工作说明 |
prompts/ |
固定 Prompt |
rules/ |
测试规则 |
templates/ |
输出模板 |
examples/ |
示例需求 |
outputs/ |
OpenClaw 每一步输出 |
skills/ |
后续 Skill 草案 |
这一步很重要。
如果 Prompt、规则、案例都散落在聊天记录里,OpenClaw 每次都是从零开始。
只有把这些内容沉淀下来,它才有机会变成稳定的工作流助理。
三、第二步:写一份测试助理工作说明
我创建了一个 AGENTS.md,核心内容是告诉 OpenClaw:
- 你是测试助理;
- 你不能替产品确认规则;
- 不明确内容要标记“待确认”;
- 生成正式用例前必须先核对依据;
- 用例生成后必须自检。
核心规则大致如下:
# OpenClaw 测试助理工作说明
你是我的测试助理,主要帮助我完成需求分析、需求评审问题生成、测试点设计、测试用例评审、测试风险识别和测试报告整理。
## 工作原则
1. 不要编造需求中没有的规则。
2. 不明确内容必须标记为“待确认”。
3. 生成正式测试用例前,必须先完成需求依据核对。
4. 测试用例步骤必须可执行,预期结果必须可验证。
5. 不要把“待确认项”写成确定性测试用例。
6. 不要把“流程结束”“终审”“字段取值”等未确认结论写入正式用例。
7. 多端测试不要简单复制粘贴,要先判断是否需要收敛。
8. 涉及写入、发送、删除、修改外部系统等动作,必须先请求用户确认。
这份文件的作用不是写一堆理论,而是给 OpenClaw 一个稳定的工作边界。
我发现,AGENTS.md 最适合做“地图”,而不是百科全书。它告诉 Agent 去哪里找规则、按什么流程工作、什么事情不能做,而不是把所有细节都塞进去。
四、第三步:准备 Prompt 库
接下来我把整套测试分析流程拆成 6 个 Prompt:
prompts/
├── 01-requirement-review.md
├── 02-test-point-design.md
├── 03-test-point-scope.md
├── 04-case-eligibility.md
├── 05-formal-case-generation.md
└── 06-case-self-check.md
分别对应:
| Prompt | 作用 |
|---|---|
01-requirement-review |
生成需求评审问题 |
02-test-point-design |
将评审问题转成测试点 |
03-test-point-scope |
对测试点做收敛 |
04-case-eligibility |
筛选哪些测试点可入库 |
05-formal-case-generation |
只基于已确认规则生成正式用例 |
06-case-self-check |
对生成用例做自检 |
这样做的好处是:
每一步都可检查,每一步都能纠偏,而不是把所有任务塞进一句“帮我生成测试用例”。
五、第四步:准备一个示例 PRD
我使用了一个报销审批规则的示例 PRD:
PRD:报销审批规则优化
1. 普通员工可提交本人报销申请。
2. 报销金额 ≤ 5000 元时,仅直属上级审批。
3. 5000 元 < 报销金额 ≤ 20000 元时,需部门负责人审批。
4. 报销金额 > 20000 元时,需财务复审。
5. 提交后申请状态变为“审批中”。
6. 审批中可撤回,撤回后状态回到“草稿”。
7. 任一节点驳回后,状态变为“已驳回”,申请人可修改后重新提交。
8. 是否支持批量导入报销单,待产品确认。
9. 本次改动影响 PC 端、H5 端和报销数据导出。
这个需求看起来简单,但里面其实有很多测试风险:
- 金额边界;
- 审批链路;
- 状态流转;
- 撤回;
- 驳回重提;
- 批量导入待确认;
- 多端影响;
- 导出影响;
- 在途数据兼容。
很适合用来验证 OpenClaw 的测试分析能力。
六、第五步:先生成需求评审问题
我没有让 OpenClaw 直接写用例,而是先让它做需求评审问题生成。
它输出了 23 个评审问题,覆盖了:
| 维度 | 示例问题 |
|---|---|
| 业务规则 | 审批通过后的终态是什么 |
| 状态流转 | 驳回后重提是从头审批还是从驳回节点继续 |
| 审批路由 | 部门负责人如何确定 |
| 串并行 | 多节点审批是串行还是并行 |
| 数据兼容 | 在途单据上线后走新规则还是旧规则 |
| 数据导出 | 导出字段范围和权限如何控制 |
| 多端 | PC 和 H5 是否存在端差异 |
| 待确认功能 | 批量导入是否纳入本期 |
这一步的价值很明显:
OpenClaw 能把 PRD 中没有写清楚的规则快速暴露出来。
这比一上来生成测试用例更有价值。
因为很多问题如果不在评审阶段问清楚,后面测试用例写得再多,也可能是建立在错误假设上。
七、第六步:评审问题收敛
第一次输出的问题有点多,所以我让 OpenClaw 做了一次收敛:
23 个评审问题
→ 收敛成 19 个问题
→ 核心必须确认 6 个
→ 建议确认 7 个
→ 扩展风险 6 个
这里也发生了第一次人工纠偏。
OpenClaw 一开始把“金额上限”放进核心必须确认。
但我认为当前 PRD 已明确:
金额 > 20000 元时,需财务复审。
所以主流程测试不依赖“是否存在更高金额上限”。
因此我把它降级为建议确认。
同时,OpenClaw 把 5000.00 / 20000.00 金额临界值放到扩展风险,但 PRD 已经通过 ≤、<、> 明确了边界归属,所以我把它重新纳入核心金额边界测试点。
这里体现了一个关键点:
OpenClaw 能帮你分类,但分类是否合理,测试工程师必须把关。
八、第七步:生成测试点,再做人工纠偏
之后我让 OpenClaw 基于收敛后的评审问题生成测试点。
它输出了 52 个测试点,覆盖了金额路由、状态流转、权限角色、多端交互、数据导出、兼容回归等维度。
但这里出现了三个典型问题。
问题 1:默认了完整审批链
PRD 只写:
金额 > 20000 元时,需财务复审。
OpenClaw 却一度推断为:
部门负责人 + 财务复审两层
这是一个典型的“合理推断”,但不能作为测试预期。
最终我纠偏为:
金额 >20000 只能验证“包含财务复审节点”,不能假设完整审批链组成。
问题 2:默认了导出字段
PRD 只写:
报销数据导出受影响。
OpenClaw 一度推断导出会包含:
- 审批状态;
- 审批人;
- 审批时间。
但这些字段 PRD 没写,所以不能作为正式预期。
最终我纠偏为:
导出只做基础回归:文件可生成、可打开、记录数量一致。字段明细进入待确认。
问题 3:把审批记录保留当成可测试发现
OpenClaw 认为“驳回后原已通过节点审批记录是否保留可见”可以通过测试观察出来。
但没有产品定义时,测试只能观察现象,不能判断对错。
最终我纠偏为:
审批记录是否保留、谁可见、如何展示,属于产品规则,必须待确认。
九、第八步:测试点收敛
经过纠偏后,OpenClaw 把测试点收敛成:
| 分类 | 数量 |
|---|---|
| 核心已确认 | 10 |
| 核心待确认 | 14 |
| 扩展风险 | 9 |
| 合计 | 33 |
核心已确认包括:
≤5000仅直属上级审批;5000<金额≤20000触发部门负责人审批;>20000包含财务复审节点;- 提交后状态变为审批中;
- 审批中可撤回,撤回后回到草稿;
- 任一节点驳回后状态变为已驳回;
- 已驳回后可修改并重新提交;
- 普通员工可提交本人报销;
- PC / H5 基础流程回归;
- 导出基础回归。
核心待确认包括:
- 审批通过后的终态;
- 驳回后重提链路;
- 串行还是并行;
- 部门负责人如何确定;
- 财务复审角色定义;
- 在途单据上线切换策略;
- 导出字段清单;
- PC/H5 是否存在端差异;
- 批量导入是否纳入本期。
这一步很关键。
它把测试内容分成了三层:
能直接写用例的
需要评审确认后再写的
排期允许时探索的
这就避免了“重要但不明确”的内容直接进入正式用例。
十、第九步:可入库用例筛选
接下来,我让 OpenClaw 做可入库筛选。
它逐条检查核心已确认测试点,并输出结论:
| 分类 | 数量 |
|---|---|
| 可直接入库 | 8 |
| 可入库但需限制范围 | 2 |
| 核心待确认 | 14 |
| 扩展风险 | 9 |
其中两个“需限制范围”的点是 PC 和 H5:
- PC 可以执行已知流程回归,但不能包含审批通过后的终态;
- H5 可以做核心状态流验证,但不要机械复制 PC 全量用例。
它还明确了几个重要限制:
金额 >20000:只验证包含财务复审节点,不假设完整链路。
导出:只验证可用性和数量一致,不校验字段明细。
批量导入:只输出待确认,不生成正式用例。
审批通过终态:待确认,不生成正式用例。
这一步让我觉得 OpenClaw 的价值开始变得稳定:
它不只是生成内容,还能帮助判断哪些内容不能进入正式用例。
十一、第十步:生成正式测试用例
基于核心已确认测试点,OpenClaw 生成了正式用例。
第一次生成后,经过自检和修正,最终保留了 15 条正式用例:
| 维度 | 用例数量 |
|---|---|
| 金额路由-低档 | 2 |
| 金额路由-中档 | 2 |
| 金额路由-高档 | 1 |
| 状态流转-提交 | 1 |
| 状态流转-撤回闭环 | 1 |
| 状态流转-驳回闭环 | 1 |
| 权限-本人提交 | 1 |
| PC 端回归 | 3 |
| H5 端回归 | 1 |
| 数据导出 | 2 |
例如金额路由用例中:
| 金额 | 预期 |
|---|---|
| 3000 | 仅触发直属上级审批 |
| 5000 | 仍触发直属上级审批 |
| 10000 | 触发部门负责人审批 |
| 20000 | 仍触发部门负责人审批 |
| 25000 | 审批链包含财务复审节点 |
注意,这里对 25000 的预期非常克制:
仅验证财务复审节点存在,不假设其前是否有其他审批节点。
这就是前面纠偏的价值。
十二、第十一步:用例自检
正式用例生成后,我没有直接接受,而是让 OpenClaw 自检。
自检发现了 3 个问题:
| 问题 | 原因 | 修正 |
|---|---|---|
| H5 用例写“状态展示与 PC 端一致” | PRD 未明确两端一致 | 改为“状态正确展示为审批中、草稿、已驳回” |
| PC 用例写“页面跳转” | PRD 未定义交互方式 | 改为“提交后状态展示为审批中” |
| PC 驳回用例写“查看驳回信息展示” | PRD 未定义驳回信息字段 | 改为“查看状态是否为已驳回” |
这一步很有价值。
因为 OpenClaw 自己发现了前一步输出里的隐含假设。
最终它给出的判定是:
修改后可入库。
这说明一个完整的闭环跑通了:
生成
→ 自检
→ 修正
→ 最终输出
十三、最终用例示例
最终用例里,有几条比较有代表性。
示例 1:金额边界
| 用例编号 | 用例标题 | 预期结果 |
|---|---|---|
| TC-002 | ≤5000元报销-边界值5000元仍触发直属上级审批 | 提交成功,状态为审批中;直属上级待办中出现该单;仅直属上级一个审批节点 |
| TC-004 | 5000<金额≤20000元-边界值20000元触发部门负责人审批 | 提交成功,状态为审批中;部门负责人待办中出现该单 |
这里唯一要手工修的小点是标题:
5000~20000元报销
建议改成:
5000<金额≤20000元报销
避免误解 5000 属于中档。
示例 2:高金额审批
| 用例编号 | 用例标题 | 预期结果 |
|---|---|---|
| TC-005 | >20000元报销-审批链包含财务复审节点 | 提交成功,状态为审批中;财务复审人员待办中存在该报销单;不假设完整审批链 |
这一条非常关键。
它没有写“部门负责人 + 财务复审”,也没有写“财务复审通过后流程结束”。
示例 3:导出基础回归
| 用例编号 | 用例标题 | 预期结果 |
|---|---|---|
| TC-014 | 报销数据导出功能可用性验证 | 导出成功,文件可下载并正常打开 |
| TC-015 | 导出记录数量与筛选范围一致性验证 | 导出文件内记录条数与列表记录总数一致 |
它没有写审批状态、审批人、审批时间等字段,因为字段清单还未确认。
这就是比较稳的用例生成方式。
十四、最后把 Skill 拆成 3 个,而不是 1 个
一开始我想把整个流程做成一个大 Skill:
输入 PRD
→ 评审问题
→ 测试点
→ 收敛
→ 用例
→ 自检
但演练后发现,这个 Skill 太重了。
一次完整流程输出太长,中间还需要人工纠偏,Dashboard 甚至出现过输出截断。
所以最终我把它拆成 3 个 Skill 草案:
sqa-prd-review
sqa-test-design
sqa-test-case-gen
分别对应:
| Skill | 作用 |
|---|---|
sqa-prd-review |
需求评审问题生成与收敛 |
sqa-test-design |
测试点设计、收敛与可入库筛选 |
sqa-test-case-gen |
正式用例生成、自检与修正 |
这样拆分有几个好处:
- 每个 Skill 只做一个阶段;
- 输出不容易超长截断;
- 用户可以从任意阶段开始;
- 人工纠偏节点更清晰;
- 后续维护成本更低。
这也符合 Agent 工程里的一个经验:
不要把所有规则和流程塞进一个超长说明里。
更好的方式是给 Agent 清晰的阶段、清晰的输入、清晰的输出和清晰的边界。
十五、这次实操总结出的 5 条经验
1. OpenClaw 适合做测试工作流助理,不只是聊天工具
如果只拿它聊天,它的价值有限。
把它放进流程里,让它按步骤完成评审、测试点、收敛、筛选、用例、自检,价值会明显提升。
2. 不要直接生成用例,要先做需求评审
这次最有价值的不是最终 15 条用例,而是前面发现的 23 个评审问题。
测试设计的前提是需求规则清楚。
3. AI 容易用“合理推断”填补 PRD 空白
本次出现过几类典型问题:
| AI 推断 | 问题 |
|---|---|
>20000 推断为部门负责人 + 财务复审 |
PRD 没写完整链路 |
| 导出受影响推断为新增审批字段 | PRD 没写字段清单 |
| H5 状态与 PC 一致 | PRD 没写两端一致 |
| 页面跳转 | PRD 没写 UI 交互方式 |
这类问题不是模型“不会”,而是它太容易补全。
测试工程师要做的事,就是把“补全”改成“待确认”。
4. 用例自检非常必要
如果没有自检,H5 一致性、页面跳转、驳回信息展示这些问题很可能就进入正式用例。
自检不是形式主义,它真的能挡住一部分 AI 幻觉和过度推断。
5. Skill 不宜太大,拆成阶段更稳
一开始做一个大 Skill 看起来方便,但实际容易:
- 输出过长;
- 上下文混乱;
- 人工纠偏点不清楚;
- 难以复用某一个子流程。
拆成 3 个 Skill 后更合理:
需求评审
→ 测试设计
→ 用例生成与自检
这更接近真实测试工作的自然阶段。
十六、最终结论
这次完整实操让我确认了一点:
OpenClaw 真正适合的定位,不是“自动生成最终测试用例”,而是“测试工作流助理”。
它可以帮助测试工程师完成:
- 需求评审问题生成;
- 评审问题收敛;
- 测试点设计;
- 测试点收敛;
- 可入库用例筛选;
- 正式用例生成;
- 用例自检;
- 修正版输出;
- Skill 化沉淀。
但它不能替代测试工程师做最终判断。
尤其是这些地方必须人工把关:
- 哪些是 PRD 明确的;
- 哪些是 AI 推断的;
- 哪些是待确认的;
- 哪些用例可以入库;
- 哪些预期不可验证;
- 哪些内容应该降级为扩展风险;
- 哪些流程应该拆成 Skill。
所以,我更愿意把这次实践总结成一句话:
AI 工具能提高测试设计效率,但真正决定质量的,是我们能否把测试经验沉淀成可复用的流程、规则和自检机制。
OpenClaw 装好了只是第一步。
把它变成测试工作流助理,才是真正开始发挥价值。
更多推荐
所有评论(0)