mutation-testing · git:20260928.1f1d004 · 2026-09-28 · sha256 eb1ce839338aed1f
mutation-testing git:20260928.1f1d004A
Immutable. This exact content never changes and is served at /api/v1/blob/eb1ce839338aed1f.
--- name: mutation-testing description: 测试有效性审计能力。当需要通过突变测试验证测试是否真正覆盖业务逻辑、定位存活突变体、发现测试漏网点或评估测试质量时使用。支持 Java、Python、Go、JavaScript、TypeScript。该能力只生成审计报告,不修改代码或测试。 user-invocable: true --- # 测试有效性审计 ## 目标 通过突变测试回答: > 如果把生产代码中的一小段逻辑改错,现有测试能不能失败? 重点发现: - **存活突变体**:代码被改动后测试仍然通过 - **无覆盖代码**:突变工具无法执行到相关逻辑 - **测试断言不足**:测试执行了代码,但没有验证关键结果 ## 委派 需要独立上下文时,用宿主通用子 agent 工具实际派发。传入目标项目的绝对路径、范围/基线、约束、所需技能资源的绝对路径和交付要求(资源不可读时附必要方法);子 agent 只做分配的任务,回报证据、完成状态与未验证项。仅在任务及文件/工具产物互不冲突时并行;无派发能力时自行执行并说明。 ## 支持范围 本技能至少支持以下语言。支持的含义是:能够识别项目、选择对应的既有工具配置、限定目标范围、执行工具并统一解读报告;**不负责自动安装突变测试工具**。 | 语言 | 首选工具 | 适配文档 | |---|---|---| | Java | PIT | `references/java-pitest.md` | | Python | mutmut | `references/python-mutmut.md` | | Go | go-mutesting | `references/go-mutesting.md` | | JavaScript | Stryker | `references/javascript-stryker.md` | | TypeScript | Stryker | `references/typescript-stryker.md` | 如果项目已经配置了其他工具(如 cosmic-ray、gremlins),优先遵循项目现有配置,并在报告中说明实际使用的工具。 ## 执行 1. 目标按用户指定 > 指定 git 基线 > 最近改动确定;没有目标时询问,不默认全量运行。 2. 识别项目已有的突变工具与配置,按语言读取上表对应 reference。只选择目标源码,排除测试和生成代码;工具无法精确过滤时说明实际范围与成本。 3. 确认工具的隔离和恢复机制后执行现有配置。不要擅自安装工具或创建新配置;结束后核对并清理本次工具产生的临时源码变更和报告,保留用户已有改动。 4. 重点分析 `survived`(测试未发现错误)与 `no-coverage`(目标逻辑未执行)。构建、测试或工具失败应标为结果不完整,不能当作通过。 ## 输出报告 重点报告: - 目标范围和实际运行范围 - 识别到的语言、构建系统和突变工具 - 实际执行的命令 - 存活突变体:位置、突变类型、原始逻辑、为什么测试没有失败 - 无覆盖代码:模块、方法、建议补充的测试场景 - 工具输出是否完整 - 未解决的环境问题 ## 边界 只报告测试漏洞和建议断言,不提交业务或测试代码修复;不为杀死突变体添加无意义断言。