SuperAPI AI 工具集

atdd-mutate

测试与质量

查看项目

更新于 10-16 10:22

技能介绍

用途:在验收测试与单元测试均通过后,引入第三层验证——变异测试,用来自动验证测试套件是否真能捕获缺陷。资料指出,即使代码覆盖率达100%,变异得分仍可能只有60%。

主要能力:向源码注入变异体(如+↔-、>↔>=、==↔!=、布尔与常量替换、返回值修改、删除方法调用等),运行测试;测试失败表示变异体被杀死,测试继续通过表示存在测试缺口。报告变异体总数、杀死数、存活数与变异得分。支持差分变异测试,仅重测代码或其覆盖测试发生变化的函数,并复用缓存结果。

使用方式:先确认两个测试流全绿且无未提交改动。推荐构建自定义变异工具,按四个模块组织(变异规则、运行器、核心编排、哈希与选择),其中哈希与选择模块调用 dae_mutmap.py 先 select 后 update,结果写入 mutation-manifest.json。另一路径是安装已有框架,如 JavaScript/TypeScript 用 Stryker、Python 用 mutmut、Java 用 PIT、C# 用 Stryker.NET、Rust 用 cargo-mutants、Go 用 go-mutesting、Ruby 用 mutant、Scala 用 Stryker4s,并启用其增量模式。流程分六步:验证前置条件、配置工具、运行变异、分析存活体、编写新单元测试杀死存活体、汇总报告。在 ATDD 团队工作流中属于第 6 阶段,由独立于实现者与重构者的架构师代理执行。

限制与注意:只对源码做变异,绝不修改测试文件、规格文件或生成代码;等效变异体可忽略;100% 变异得分通常不现实,建议目标 90% 以上;变异测试较慢,需启用差分或增量模式以控制开销。具体命令、配置与工具内部细节请参见其 references 目录。