用途:验证测试是否真正能捕获缺陷。代码覆盖率只说明测试执行了哪些代码,变异测试则说明测试能否发现代码中的有意义改动。本技能用于一个阶段工作完成、准备提 PR 时,或在用户明确要求变异测试、Stryker、变异分数或存活变异体分析时使用;不放入每个 RED-GREEN 增量中,写测试本身应参考 testing 技能。
主要能力:自动生成变异体、运行测试套件、按杀死/存活/无覆盖/等价分类结果;支持全项目、增量缓存与分支 diff 三种运行;通过 TDD 方式为新存活变异体补强测试。
使用方式:先检查 package.json、Stryker 配置与 diff 范围。若无 Stryker,在获授权后用包管理器安装,例如:pnpm dlx create-stryker@<reviewed-version>。建议添加三个脚本:stryker run、stryker run --incremental、node scripts/stryker-diff.mjs <review-base>。针对单个存活变异体可用:pnpm exec stryker run --incremental --force --mutate src/example.ts:42-57。运行前要求工作区干净,因为 diff 范围不含暂存、未暂存与未跟踪文件。全项目基线最多两次,其余用 scoped 重跑。
适用场景:PR 准备阶段、审查分支改动、验证重构未削弱测试、发现边缘用例缺口。
限制:本技能主要面向 JS/TS 与 Stryker;Vitest 浏览器模式不受 Stryker 的 Vitest runner 支持,需改用 Node 项目。首次配置不应写 thresholds.break,先得到基线分数再考虑阈值。等价变异体无需杀死,但必须逐条给出理由;未分类的存活列表不算已分诊报告。其他语言或工具、具体价格与平台信息资料未提供。