Install
openclaw skills install @kokxi/qa-output-validation在最终输出前对测试用例做最后一轮防幻觉验证:事实核查(引用的需求ID是否存在)、一致性检查(用例之间是否矛盾)、可执行性验证(步骤是否能实际操作)、来源追溯(每个用例是否能追溯到具体需求)。当测试用例已经生成完毕、准备输出了,但你不确定AI有没有编造不存在的功能或需求时,应当使用此技能。这是整个工作流的最终质量守门——如果验证失败,必须返回问题清单要求修正,不得跳过。 本技能属于 QA Test Skills 技能集(49 个技能之一),完整工作流体验需安装全套:npx skills add Kokxi/qa-test-skills
openclaw skills install @kokxi/qa-output-validation⚠️ 本技能单独使用效果有限,建议配合完整技能集(12 步工作流)使用。安装:npx skills add Kokxi/qa-test-skills
⚠️ 安全警告:本技能的示例可能涉及对虚无功能的删除或标记建议。 实际使用时请勿直接删除测试用例或功能项,先确认其来源并备份原数据。 本技能仅在 workspace/ 输出评估文件,不持久化、不外传、不跨会话复用。
AI可能编造不存在的内容——必须验证每个输出的依据。
目标:验证AI输出是否基于真实信息,而非编造
检查点:
├─ 需求是否真实存在?
│ └─ 用例中的需求ID是否在需求解构表中?
├─ 风险是否合理推断?
│ └─ 风险ID是否基于实际风险分析?
├─ 边界是否可验证?
│ └─ 边界条件是否真实存在?
├─ 行业标准是否准确?
│ └─ 引用的行业知识是否正确?
└─ 历史缺陷是否真实?
└─ 引用的历史缺陷是否有依据?
防幻觉检查:
├─ 检查是否有"凭空捏造"的内容
├─ 检查是否有"过度推断"的内容
├─ 检查是否有"错误引用"的内容
└─ 检查是否有"逻辑矛盾"的内容
目标:验证输出各部分是否一致
检查点:
├─ 需求ID与用例是否一一对应?
│ └─ 每条用例的需求ID是否在需求列表中?
├─ 风险ID与用例是否匹配?
│ └─ 风险等级是否与用例内容一致?
├─ 场景与边界是否对应?
│ └─ 边界是否覆盖了相关场景?
├─ 评审结果与实际输出是否一致?
│ └─ 评审指出的问题是否已修正?
└─ 不同技能输出是否矛盾?
└─ 需求解构、场景树、边界分析是否一致?
一致性矩阵:
| 维度1 | 维度2 | 检查项 |
|-------|-------|--------|
| 需求 | 用例 | 需求ID是否匹配 |
| 风险 | 用例 | 风险ID是否匹配 |
| 场景 | 边界 | 边界是否覆盖场景 |
| 评审 | 输出 | 问题是否已修正 |
目标:验证测试用例是否可实际执行
检查点:
├─ 测试步骤是否具体可操作?
│ └─ 步骤是否清晰到可以由任何人执行?
├─ 预期结果是否可验证?
│ └─ 预期结果是否客观可测量?
├─ 测试数据是否可构造?
│ └─ 需要的测试数据能否准备?
├─ 测试环境是否可搭建?
│ └─ 需要的环境能否搭建?
└─ 测试工具是否可用?
└─ 需要的工具是否可获取?
可执行性评分:
- 10分:完全可执行,无任何障碍
- 7分:基本可执行,少量障碍可克服
- 4分:部分可执行,有明显障碍
- 1分:无法执行,需要重新设计
目标:标注每个输出的来源和依据
追溯内容:
├─ 需求来源:来自用户输入/需求文档
├─ 风险来源:来自风险分析/行业经验
├─ 边界来源:来自边界分析/最佳实践
├─ 用例来源:来自哪个技能生成
└─ 评审来源:来自哪个评审维度
追溯格式:
每条用例标注:
- 需求来源:REQ-XXX(来自需求解构)
- 风险来源:RISK-XXX(来自风险分析)
- 生成来源:qa-ai-prompt-strategy
- 评审状态:已评审/未评审
执行内容:
1. 对比用例中的需求ID与需求解构表
2. 检查风险ID是否基于实际分析
3. 验证边界条件是否真实存在
4. 检查引用的行业知识是否准确
输出:
├─ 核查通过项:[列表]
├─ 核查失败项:[列表]
└─ 幻觉风险项:[列表]
执行内容:
1. 验证需求ID与用例的对应关系
2. 验证风险ID与用例的匹配关系
3. 验证场景与边界的覆盖关系
4. 验证评审结果与实际输出的一致性
输出:
├─ 一致项:[列表]
├─ 不一致项:[列表]
└─ 矛盾项:[列表]
执行内容:
1. 检查测试步骤的具体性
2. 检查预期结果的可验证性
3. 检查测试数据的可构造性
4. 检查测试环境的可搭建性
输出:
├─ 可执行项:[列表]
├─ 部分可执行项:[列表]
└─ 不可执行项:[列表]
## 输出验证报告
### 验证摘要
- 验证日期:YYYY-MM-DD
- 用例总数:XX条
- 验证结果:通过/不通过
### 事实核查
| 检查项 | 结果 | 说明 |
|--------|------|------|
| 需求真实性 | 通过/失败 | [说明] |
| 风险合理性 | 通过/失败 | [说明] |
| 边界可验证性 | 通过/失败 | [说明] |
| 行业标准准确性 | 通过/失败 | [说明] |
### 一致性检查
| 检查项 | 结果 | 说明 |
|--------|------|------|
| 需求ID匹配 | 通过/失败 | [说明] |
| 风险ID匹配 | 通过/失败 | [说明] |
| 场景边界对应 | 通过/失败 | [说明] |
| 评审结果一致 | 通过/失败 | [说明] |
### 可执行性验证
| 用例编号 | 可执行性 | 问题 |
|---------|---------|------|
| TC_XXX_001 | 可执行 | - |
| TC_XXX_002 | 部分可执行 | [问题] |
| TC_XXX_003 | 不可执行 | [问题] |
### 问题清单
| 问题类型 | 用例编号 | 问题描述 | 严重程度 |
|---------|---------|---------|---------|
| 幻觉 | TC_XXX_001 | 需求ID不存在 | 高 |
| 不一致 | TC_XXX_002 | 风险等级与内容不符 | 中 |
| 不可执行 | TC_XXX_003 | 步骤过于模糊 | 中 |
### 验证结论
- 是否通过:是/否
- 主要问题:[描述]
- 建议:[建议]
不同输出类型的验证侧重点不同:
| 输出类型 | 优先验证维度 | 特别关注 | 验证深度 |
|---|---|---|---|
| 功能用例 | 可执行性+事实核查 | 步骤是否可操作 | ★★★ |
| 边界用例 | 事实核查 | 边界值是否真实存在 | ★★★★ |
| 异常用例 | 可执行性+一致性 | 异常场景是否合理 | ★★★★ |
| 安全用例 | 事实核查+可执行性 | 攻击向量是否真实 | ★★★★★ |
| 性能用例 | 可执行性 | 指标是否可测量 | ★★★ |
| 全量用例集 | 全部四维 | 全流程一致性 | ★★★★★ |
| 幻觉类型 | 表现 | 检测方法 | 处理方式 |
|---|---|---|---|
| 虚无功能 | AI编造不存在的功能模块 | 对比需求解构表 | 删除或标记 |
| 过度推断 | 从"登录失败"推"账号被锁"但需求未提 | 检查推理链是否在需求范围内 | 降级为假设场景 |
| 数据编造 | 编造不存在的API返回字段 | 对比接口文档/边界清单 | 修正或删除 |
| 时间幻觉 | 断言"3次锁定"但需求写5次 | 比对原始需求 | 修正为准确值 |
| 跨模块矛盾 | A模块说"跳转B",B模块用例推翻 | 一致性检查矩阵 | 统一修正 |
| 依赖幻觉 | 假设了不存在的前置依赖 | 检查前置条件是否有需求支撑 | 标注[假设] |
用户说"帮我验证AI生成的登录测试用例" → 事实核查:验证所有需求ID、场景、预期结果是否基于真实需求文档 → 一致性检查:同一功能的不同用例之间描述是否一致 → 可执行性验证:每个用例的步骤是否清晰可执行 → 来源追溯:标注每个用例的信息来源(需求文档/分析结果/AI推断)
AI生成了一个不存在的功能模块的测试用例 → 事实核查命中:该模块ID在需求文档中不存在,标记为幻觉
输出验证完成后检查:
| 维度 | 输出验证(本技能) | 输出评审(qa-ai-output-critique) |
|---|---|---|
| 目标 | 防幻觉、保质量 | 找不足、促迭代 |
| 视角 | 事实核查:是否"真实" | 质量评估:是否"够好" |
| 输出 | 验证报告(pass/fail) | 评审报告(六维评分+改进建议) |
| 触发时机 | 最终输出前 | 生成后、迭代中 |
| 核心问题 | "这个用例能执行吗?" | "这个用例够全面吗?" |
| 处理幻觉 | 标记+删除 | 反馈+补充 |