用途:评估测试套件质量,找出断言盲区,证明测试确实能捕获缺陷,适用于关键发布前的验证。
主要能力:按变异算子改写代码(如 + 改 -、>= 改 >、&& 改 ||、条件置真、删除语句),对每个变异体运行测试,统计被杀死与存活的变异体。变异得分 = Killed / (Killed + Survived)。参考解读:90%+ 优秀,80-90% 良好,60-80% 需关注,低于 60% 缺口明显。
使用方式:以 Stryker 为例,安装 npm install --save-dev @stryker-mutator/core @stryker-mutator/jest-runner,执行 npx stryker init 初始化,在配置中设置 testRunner、coverageAnalysis、mutate 匹配范围与 thresholds(high/low/break),随后运行 npx stryker run。输出包含变异得分、被杀死数、存活数等。
修复存活变异体:为其补充边界测试,例如对 quantity >= 10 的折扣逻辑,新增恰好等于 10 与等于 9 的用例。可结合代理进行变异分析、覆盖率质量关联与缺失测试生成。
限制:高覆盖率不等于好测试,100% 覆盖率但断言薄弱无意义;应优先覆盖支付、认证、数据完整性等关键路径,不必对全部代码做变异测试。具体平台支持、性能开销与收费信息资料暂未提供。