SuperAPI AI 工具集

mutation-testing

测试与质量

查看项目

更新于 10-15 23:43

技能介绍

用途:在创建 PR 前把变异测试作为质量门禁运行。变异测试对生产代码做小改动(变异),检查测试能否捕获;存活的变异体说明测试存在盲区。要求变异杀死率为 100%。

主要能力:自动识别项目类型并选用对应工具——Cargo.toml 用 cargo mutants,package.json 用 npx stryker run,pyproject.toml 或 setup.py 用 mutmut run,mix.exs 用 mix muzak。解析输出中的变异体总数、杀死数、存活数、超时数与变异得分;对每个存活变异体报告文件、行号、变异内容及其放过的缺陷类型(算术、比较、布尔、返回值、语句删除等)。

使用方式:先确认工具已安装,未安装时给出安装命令,如 cargo install cargo-mutants、npm install --save-dev @stryker-mutator/core、pip install mutmut,Elixir 在 deps 中加入 {:muzak, "~> 1.0", only: :test}。尽量把范围限定到改动文件或包,例如 cargo mutants --package <package> --jobs 4、mutmut run --paths-to-mutate=src/ 后接 mutmut results。完成后生成 MUTATION_RESULT 证据包,含 tool、scope、total_mutants、killed、survived、score、survivors 与 verdict;改动文件得分为 100% 时 PASS,否则 FAIL。流水线模式下写入 .factory/audit-trail/slices/<slice-id>/mutation.json,独立运行时仅作信息展示。

场景覆盖检查:为存活变异体推荐测试前,先确认是否有验收或领域场景要求该行为。有场景但缺测试则给出具体测试建议;无场景则标记交人工决定(删除代码或补充场景),不得为凑指标而写无场景测试。

限制:100% 杀死率是硬约束,低于 100% 需用户显式覆盖并记录每个存活变异体可接受的理由;流水线模式为门禁,失败阻止合并,独立模式为建议性。超时变异体视为已杀死。避免对未改动模块全量运行变异测试。