skill-qa-tester · git:20260807.a40d67b · 2026-08-07 · sha256 3e47a09261150380

skill-qa-tester git:20260807.a40d67bA

Immutable. This exact content is served forever at /api/v1/blob/3e47a09261150380.

---
name: skill-qa-tester
description: QoderWork技能质量测试与验证工具。系统化测试技能的功能完整性、数据准确性、内部一致性和红线合规性。适用于技能首次发布前的全面测试、版本更新后的回归测试、多技能之间的一致性检查。当用户要求测试技能、验证技能质量、复核技能准确性、或打包发布技能前,自动应用此技能。
---

# 技能质量测试方法论

> 核心理念:以源文件为唯一真相源,逐行核验每一个事实声明。

## 适用技能类型

本方法论适用于以下类型的知识密集型技能:

| 类型 | 特征 | 测试重点 |
|------|------|---------|
| 数据表格型 | 含大量数值、标准编号 | 每个数值和编号的行级核验 |
| 方法论型 | 教授思维框架 | 框架完整性、推理链正确性 |
| 审核工具型 | 检测其他内容的错误 | 错误检出率、分类准确性 |
| 模板输出型 | 按固定模板生成响应 | 模板格式合规性 |

## 五阶段测试流程

### 阶段一:全量读取

1. 列出技能目录下所有文件
2. 逐个读取全部源文件(不可跳读,不可摘要)
3. 记录文件清单:文件名、行数、大小、最后修改日期
4. 建立文件关系图:哪些文件互相引用、引用路径是否正确

### 阶段二:测试用例设计

设计原则:**每种输出场景至少一个用例,每种边界条件至少一个用例**。

#### 2.1 覆盖矩阵

| 维度 | 必须覆盖 | 核验方法 |
|------|---------|---------|
| 输出模板 | 每种模板类型至少1个用例 | 对照SKILL.md中的模板定义 |
| 响应层级 | 每层至少1个用例(如适用) | 对照SKILL.md中的层级定义 |
| 跨技能路由 | 每条路由规则至少1个用例 | 对照路由规则定义 |
| 标准引用 | 高频标准+易混淆标准 | 核对编号、年份、名称 |
| 红线压力 | 至少2个对抗性用例 | 检查是否遵守红线规则 |
| 免责声明 | 每个用例均检查 | 逐句比对SKILL.md定义文本 |

#### 2.2 测试用例模板

```
测试编号:T[N]
场景:[正常/边界/异常/对抗]
用户查询:[具体文本]
预期响应要点:
  - [应包含的标准编号及数值]
  - [应使用的输出模板]
  - [应触发的路由规则]
核验锚点:[源文件名+行号,用于逐条验证]
```

#### 2.3 对抗性测试设计

构造以下类型的查询来暴露技能薄弱环节:

| 对抗类型 | 查询设计思路 | 预期行为 |
|---------|------------|---------|
| 诱导编造 | 条件不完整,诱导给出具体数值 | 应承认不确定并指明查阅路径 |
| 过时标准 | 查询已废止标准的最新版本 | 应提示新标准和替代关系 |
| 跨领域越界 | 问超出技能范围的问题 | 应识别并路由到正确技能 |
| 矛盾前提 | 查询中嵌入错误假设 | 应纠正错误假设后再回答 |
| 品牌诱导 | 询问"哪个品牌最好" | 应拒绝推荐品牌 |

### 阶段三:并行执行与逐项核验

#### 3.1 执行方式

使用平台可用的并行执行能力启动独立测试用例:
- 每个子代理负责1-2个测试用例
- 子代理必须先读取全部源文件再模拟响应
- 模拟响应中的每个事实声明必须标注依据(文件+行号)

#### 3.2 核验清单

对每个模拟响应逐项核验:

**数据准确性**
- [ ] 标准编号格式正确(GB/GB/T/JGJ/JC/T等)
- [ ] 标准年份正确(对照源文件行号)
- [ ] 标准名称完整准确
- [ ] 数值与源文件完全一致(含单位、精度)
- [ ] 边界符号正确(≥/>/≤/< 与源文件对应)

**格式合规性**
- [ ] 使用了正确的输出模板
- [ ] 模板结构完整(所有必填章节)
- [ ] 响应层级正确(Layer 1/2/3)
- [ ] 跨技能路由触发正确

**红线合规性**
- [ ] 未编造源文件中不存在的数据
- [ ] 未推荐具体品牌
- [ ] 不确定处加了限定语或查阅路径
- [ ] 免责提示文本与SKILL.md定义完全一致(逐句比对)

**内部一致性**
- [ ] 同一指标在不同文件中表述一致
- [ ] 标准编号年份在多处引用中一致
- [ ] 免责提示文本在所有文件中一致
- [ ] 示例文件中的内容与主表格一致

详细核验规则见 [reference.md](reference.md)。

### 阶段四:修正与回归

#### 4.1 精确修正

1. 使用平台可用的精确编辑能力修改,一次只改一处
2. 每次修正后搜索相关关键词验证修改结果
3. 记录修正日志:修正前内容、修正后内容、依据、文件+行号

#### 4.2 完整性扫描(修正后必做)

**核心原则:修复N项时,必须验证修复是否覆盖了全部同类项,而非只验证已修复的N项。**

每次修正后,立即执行以下完整性扫描:

**同表/同节全量扫描**:当修复涉及某个表格或章节中的某些行时,必须重新读取该表格/章节的**全部行**,确认所有行都遵循修正后的规则。逐行检查:
- 是否存在未被修复但存在同样问题的行?
- 修复后的模式是否在整个表格/章节内一致?
- 是否存在"相邻遗漏"(紧挨着已修复行的未修复行)?

**同模式全文件扫描**:当修复涉及一种格式规则(如状态标识系统、免责文本格式、编号格式等)时,搜索该规则覆盖的所有位置,确认无遗漏:
- 搜索旧模式关键词:确认旧模式在全文已彻底清除
- 搜索新模式关键词:确认新模式的覆盖数量与预期一致
- 计数比对(M + R = N):新模式匹配数 M + 旧模式残留数 R = 修复前旧模式总数 N,要求 R = 0

**跨文件涟漪检查**:当修复涉及一个标准编号、数值或状态变更时,检查其他文件中是否引用了同一数据:
- 搜索被修改的标准编号/数值在所有文件中的出现位置
- 逐处确认是否需要同步更新

#### 4.3 回归测试

修正并确认完整性后,重新执行受影响的测试用例:
- 修正解决了原问题
- 修正未引入新问题
- 相关联的其他引用未受影响
- **同一表格/章节中的所有行都通过了与修复行相同的检查标准**

#### 4.4 回归失败模式清单

以下三类回归失败模式必须在每次修正后排查:

| 失败模式 | 描述 | 检测方法 | 典型案例 |
|---------|------|---------|---------|
| 部分修复 | 表格/列表中有N项需修复,实际只修复了部分 | 修复后读取全表逐行检查 | Section 9共8行只修了5行,遗漏3行 |
| 涟漪遗漏 | 一处数据变更未同步到其他引用位置 | 搜索变更数据在所有文件中的出现 | A文件修了标准年份,B文件同一标准年份未改 |
| 模式残留 | 修复后同一结构内新旧模式共存 | 搜索旧模式关键词确认全文已清除 | 表格中部分行用🟢标识,部分行仍用纯文本 |

### 阶段五:报告与打包

#### 5.1 测试报告模板

```markdown
## [技能名称] 测试报告
**测试日期**:YYYY-MM-DD
**测试范围**:[文件清单]

### 测试用例设计
| 编号 | 场景 | 覆盖维度 | 核验项数 |
|------|------|---------|---------|

### 各用例核验结果
(按用例分节,逐项列出通过/不通过/警告)

### 发现并修正的问题
| 编号 | 文件 | 位置 | 问题 | 修正 | 依据 |
|------|------|------|------|------|------|

### 回归验证记录
| 修正编号 | 完整性扫描范围 | 旧模式残留数 | 新模式覆盖数 | 跨文件涟漪检查 | 结论 |
|---------|--------------|------------|------------|--------------|------|
| F1 | [表格/章节全量行数] | 0 | [预期数] | [涉及文件列表] | 通过/发现遗漏 |

### 改进建议
| 编号 | 类型 | 说明 | 处理状态 |
|------|------|------|---------|

### 测试结论
| 统计项 | 数值 |
|--------|------|
| 核验项总数 | X |
| 通过 | X |
| 不通过 | X |
| 警告 | X |
| 源文件修正 | X处 |
```

#### 5.2 打包发布

1. 仅打包技能定义文件(SKILL.md + 参考文件)
2. 排除非技能文件:node_modules、.git、.env、数据库文件、残留空文件(nul等)
3. 用 Compress-Archive 创建 .zip,重命名为 .skill
4. 用 python zipfile 验证包内文件完整性
5. 使用独立会话或子代理加载测试(功能冒烟测试),确认:
   - 技能成功加载无报错
   - 核心功能响应正确
   - 免责提示正常附加

## 跨技能协作原则

当测试涉及以下专项技能时,应优先调用对应技能进行协同测试:

| 场景类型 | 优先调用技能 | 说明 |
|---------|------------|------|
| 装配式隔墙方案测试 | **prefab-partition-wall-solution** | 隔墙构造、隔声耐火性能、造价数据等专项测试 |
| 装配式装修材料综合咨询测试 | **prefab-interior-materials-expert** | 内装材料规范、工艺标准、质量验收等综合测试 |
| 标准复核测试 | **prefab-standards-reviewer** | 规范标准引用准确性、版本有效性等专项复核 |
| 防水工程测试 | **waterproofing-expert**(建筑装饰装修辅材技能合集) | 防水材料、构造做法、验收标准等专项测试 |

## 标准免责提示

每次测试报告末尾自动附加以下标准免责文本:

> 本回复基于知识库整理时间点的技术标准与行业通用实践整理,仅供技术参考。标准规范以官方发布的现行有效版本为准,引用内容可能存在时效性限制,重要项目请务必通过官方渠道核实最新版本。具体项目的设计、施工及验收应依据项目所在地适用的法律法规及标准规范执行,并由具备相应资质的专业人员负责。涉及结构安全、消防安全等重大事项的,请务必咨询相关专业机构。

## 常见问题模式

| 模式 | 检测方法 | 示例 |
|------|---------|------|
| 标准年份过时 | 交叉比对多文件中同一标准的年份 | GB 55038-2024应为2025 |
| 状态标记滞后 | 对照实施日期和当前日期 | 已实施仍标"即将实施" |
| 数量统计不一致 | 实际计数 vs 声明数量 | "55项"实际56项 |
| 免责文本不完整 | 逐句比对SKILL.md定义 | 缺少"引用内容可能存在时效性限制" |
| 表头与数据列不匹配 | 列数对照 | 表头6列数据只有5列 |
| 边界符号混用 | 搜索≥和>的使用 | "≥"应为">" |
| 指标体系混淆 | 确认标准使用的指标类型 | GB 55038用DnT,w+C非Rw+C |
| 跨文件引用断裂 | 验证A文件引用B文件的路径 | reference.md不存在 |
| 示例与主表不一致 | 对比示例数值和主表格数值 | 示例写45dB主表写48dB |
| 部分修复遗漏 | 修复后读取全表/全节逐行扫描 | Section 9共8行只修5行,遗漏3行 |
| 格式模式残留 | 搜索旧模式确认全文清除 | 部分行用emoji标识,部分行仍用纯文本 |

## 注意事项

1. **源文件是唯一真相源**:核验以源文件为准,不以"常识"或"网上搜索结果"为准
2. **每个声明都要有锚点**:模拟响应中的每个事实必须能追溯到具体文件和行号
3. **并行测试提效**:用多个独立测试执行单元并行执行独立测试用例
4. **修正必须精确**:一次改一处,改完立即验证,避免连锁错误
5. **回归必须完整**:修正后不能只验证被修的那几行,必须对修复涉及的整个表格/章节/模式执行全量扫描,确认无部分修复、无模式残留、无涟漪遗漏(详见阶段四 §4.2)
6. **区分"错误"与"警告"**:错误=与源文件不一致(必须修复),警告=可改进但不影响正确性
7. **改进建议一并处理**:测试报告中列出的改进建议应当场处理,不留尾巴
8. **打包前清理**:排除非技能文件(.git、node_modules、.env、数据库、空文件)
9. **打包后必测**:打包后的.skill文件必须做功能冒烟测试,确认加载和响应正常

双平台动作映射见 `../platform-adapter-reference.md`。