mcpField
L
ln-638-test-oracle-effectiveness-auditor

ln-638-test-oracle-effectiveness-auditor

github.com/levnikolaevich测试与质量58469 次安装2 天前更新
代码仓库

关于 ln-638-test-oracle-effectiveness-auditor

ln-638-test-oracle-effectiveness-auditor 是专门评估自动化测试能否发现真实产品缺陷的技能。它检查断言、快照、模拟对象及可用的变异测试证据,并只报告问题,不修改代码。

主要功能

  1. 01发现薄弱或缺失的断言
  2. 02评估行为级测试判据
  3. 03审查仅依赖快照的测试
  4. 04识别过度使用模拟对象
  5. 05利用可用的变异测试报告
  6. 06评分并报告已确认的问题

适用场景

  1. 01审计关键产品逻辑的测试
  2. 02查找回归后仍会通过的测试
  3. 03审查快照和模拟对象密集的测试套件
  4. 04确定改进测试断言的优先级

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-638-test-oracle-effectiveness-auditor

安装后在 Claude Code 中输入/ln-638-test-oracle-effectiveness-auditor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
two_layer_detection.md
references/templates/
audit_worker_report_template.md

详细介绍

路径: 文件路径(references/、../ln-*)均相对于此技能目录。

测试预言有效性审计员(L3 Worker)

类型: L3 Worker

专门审计测试预言是否有意义、能否捕获真实产品缺陷的工作者。

目的与范围

  • 审计测试预言有效性(类别 9:中优先级)
  • 找出虽执行了代码却几乎无法证明任何问题的测试
  • 检查断言强度、语义预言质量、过度模拟、薄弱快照,以及可用时的变异测试证据
  • 输出 STRENGTHEN_ORACLE、DELETE_WEAK_ORACLE 或 ADD_MUTATION_EVIDENCE
  • 计算合规得分(X/10)

输入

必须阅读: 加载 references/audit_worker_core_contract.md。

接收包含以下内容的 contextStore:tech_stack、testFilesMetadata、codebase_root、output_dir。

工作流

检测策略:采用两层检测(候选扫描,然后上下文验证);只有在验证方法不明确时才加载 references/two_layer_detection.md。

  1. 解析上下文: 从 contextStore 中提取技术栈、测试文件列表、codebase_root 和 output_dir
  2. 查找预言薄弱的候选项(第 1 层): 扫描自动化测试,寻找无断言、断言含糊、仅有快照、模拟过多,以及报告中存在的变异测试存活项
  3. 上下文分析(第 2 层——必须执行): 对每个候选项,询问:
    • 这是有意编写的冒烟测试,唯一契约是“启动时不崩溃”吗?-> 降级或跳过,除非它掩盖了关键行为
    • 快照是否配有语义断言?-> 跳过仅快照的发现
    • 模拟是否在边界处验证了产品侧契约?-> 跳过过度模拟的发现
    • 是否缺少变异测试证据?-> 除了预言本就薄弱的关键模块外,不要求进行变异测试
  4. 收集发现: 记录每个已确认问题的严重性、位置、工作量、操作和建议
  5. 计算得分: 按严重性统计违规项,计算合规得分(X/10)
  6. 编写报告: 按 references/templates/audit_worker_report_template.md 在内存中构建完整 Markdown 报告,然后通过单次 Write 调用写入 {output_dir}/ln-638--global.md
  7. 返回摘要: 向协调器返回最简摘要(参见输出格式)

审计规则

1. 断言强度

内容: 没有断言、断言含糊,或在许多实现已损坏的情况下仍能通过的测试

检测:

  • 调用生产代码,却没有 expect、assert、should 或框架特定验证的测试
  • 含糊的断言,例如 toBeTruthy、toBeDefined、not.toThrow,或在需要检查领域值时仅检查状态
  • 未验证错误类型、消息或状态的异常测试

第 2 层:

  • 跳过框架生成的冒烟测试,除非它们是关键路径的唯一覆盖
  • 如果产品契约明确规定只检查存在性,则降低简单存在性检查的级别

严重性: 关键逻辑为高,其他情况为中

建议: 断言特定于产品的输出、状态转换、副作用、发出的事件或持久化数据,以确保真实回归时测试会失败

工作量: S-M 操作: STRENGTHEN_ORACLE;若测试没有产品信号,则使用 DELETE_WEAK_ORACLE

2. 有意义的预言

内容: 预期结果与产品行为无关的测试

检测:

  • 在存在更丰富领域行为可供验证时,断言却只检查对象是否存在、数组长度、HTTP 状态、渲染容器是否存在或模拟调用次数
  • 预期值只是照搬实现,而非基于独立业务规则或已知示例

严重性: 中

建议: 用依据需求、示例、测试夹具或黄金数据得出的行为级断言替代结构性断言

工作量: S-M 操作: STRENGTHEN_ORACLE

3. 仅快照作为判定依据

内容: 只有快照测试,没有针对所保护产品行为的语义断言

检测:

  • 使用 toMatchSnapshot、图像快照、序列化 JSON 快照或黄金文件,但附近没有语义断言
  • 无需了解所保护的行为,就能轻易批准快照更新

第二层:

  • 如果快照就是产品契约,且已记录审查规范,则跳过
  • 如果配有用于验证关键字段或用户可见行为的语义断言,则跳过

严重性: 中

建议: 仅将快照作为辅助证据;为关键行为添加语义断言,或者在快照测试没有独特信号时将其删除

工作量: S-M 操作: STRENGTHEN_ORACLE 或 DELETE_WEAK_ORACLE

4. 过度模拟

内容: 测试对被测系统或内部协作者进行了过多模拟,以致未实际执行真实行为

检测:

  • 被模拟的函数同时也是被测函数
  • 大多数断言验证的是模拟对象,而非产品可见的输出或状态
  • 内部方法被替换为稍后会断言的精确值

第二层:

  • 在隔离外部系统且测试仍会断言本地产品行为时,边界模拟是有效的
  • 不要重复 ln-635 中的隔离问题;此检查关注的是证明力度,而非依赖项控制

严重性: 当测试看似覆盖关键逻辑,但实际只验证了模拟对象时为 高;其他情况为 中

建议: 执行真实的本地行为,仅模拟外部边界;断言产品契约,而非实现调用

工作量: M 操作: STRENGTHEN_ORACLE

5. 变异测试证据

内容: 使用变异报告或等效证据,检测生产行为发生变化时不会失败的测试

检测:

  • 如果存在变异报告,将存活的变异映射到断言较弱的测试/模块
  • 如果不存在变异报告,识别测试已显示判定依据较弱信号且可能适合进行变异检查的关键模块

严重性: 仅缺少变异证据时为 低;存活的变异证实断言较弱时为 中

建议: 仅为关键本地逻辑添加变异测试证据;不要要求整个测试套件都进行变异测试

工作量: M-L 操作: ADD_MUTATION_EVIDENCE

评分算法

必须阅读: 加载 references/audit_scoring.md。

严重性映射:

  • 关键行为没有判定依据、关键逻辑过度模拟 -> 高
  • 语义断言较弱、仅快照测试、存活的变异 -> 中
  • 对于存在判定依据较弱信号的关键模块,缺少变异证据 -> 低

输出格式

必须阅读: 加载 references/templates/audit_worker_report_template.md。

按照 references/audit_summary_contract.md 编写 JSON 摘要。在托管模式下,调用方会传入 runId 和 summaryArtifactPath;在独立模式下,工作器会根据共享契约生成自己的运行级产物路径。

将报告写入 {output_dir}/ln-638--global.md,其中 category: "Oracle Effectiveness",检查项包括:assertion_strength、meaningful_oracle、snapshot_oracle、over_mocking、mutation_style_evidence。

按照 references/audit_summary_contract.md 返回摘要。

当 summaryArtifactPath 缺失时,将独立运行摘要写入 .hex-skills/runtime-artifacts/runs/{run_id}/evaluation-worker/{worker}--{identifier}.json,并可选择在结构化输出中回显相同摘要。

Report written: .hex-skills/runtime-artifacts/runs/{run_id}/audit-report/ln-638--global.md
Score: X.X/10 | Issues: N (C:N H:N M:N L:N)

关键规则

遵循已加载的 references/audit_worker_core_contract.md。

  • 不要自动修复: 仅报告
  • 唯一评估角度: 仅审查 oracle/断言的有效性。不要评估产品与平台的侧重点、端到端旅程价值、组合价值、覆盖缺失、可信度、人工证据或结构。
  • 不强制变异测试: 除非已有相关证据,或关键模块的 oracle 较弱,否则不要要求进行变异测试。
  • 必须采取行动: 每项发现都使用 STRENGTHEN_ORACLE、DELETE_WEAK_ORACLE 或 ADD_MUTATION_EVIDENCE 中的一个。
  • 工作量评估: S = <1h,M = 1-4h,L = >4h

完成定义

遵循已加载的 references/audit_worker_core_contract.md。

  • 已成功解析 contextStore(包括 output_dir)
  • 已检查断言强度
  • 已检查 oracle 的有效性
  • 已检查仅使用快照作为 oracle 的候选项
  • 已检查过度模拟对证明强度的影响
  • 有可用的变异测试证据时已使用
  • 已应用第 2 层上下文分析
  • 已收集包含严重程度、位置、工作量、操作和建议的发现
  • 已使用扣分算法计算分数
  • 已将报告写入 {output_dir}/ln-638--global.md(通过单次原子 Write 调用)
  • 已按照契约编写摘要

版本: 1.0.0 最后更新: 2026-05-09

评论

支持 Markdown