用途:对已有测试代码做快速、务实的反模式与质量审查,找出损害测试可靠性、可维护性和诊断价值的问题,输出按严重级别排列的报告并给出具体修复建议。
主要能力:覆盖断言缺失、异步断言漏 await、覆盖率凑数、自指断言、吞异常、恒真断言、被注释掉的断言等会带来虚假信心的严重问题;识别不稳定迹象(睡眠同步、未抽象的时间读取、未播种随机数、环境相关路径)、测试顺序依赖、过度 mock、实现耦合、过宽异常断言;以及命名不佳、魔法值、重复测试、巨型测试、AAA 结构缺失等可维护性问题;还提示未使用的测试基础设施、资源未清理、遗留打印调试、命名风格不一致。
使用方式:识别目标代码库语言与测试框架,调用 test-analysis-extensions 技能并读取匹配的扩展文件(如 extensions/dotnet.md、extensions/python.md、extensions/typescript.md、extensions/go.md),据此确定该语言的 sleep、时间、随机、skip、setup/teardown 等标记;读取待审测试文件,若给出目录或项目则按发现标记扫描测试文件;有生产代码时一并阅读,以便发现耦合实现细节而非行为的测试;逐文件对照反模式清单扫描,按严重级别分组;最后校准严重级别并结构化报告(摘要、严重与高优先级发现、中低优先级汇总、正面观察、优先修复建议)。
适用场景:用户要求评审测试质量、查找测试坏味道、排查测试不稳定原因、询问“我的测试好不好”或“测试有什么问题”,或请求测试审计、测试代码评审、改进既有测试代码。
限制:不用于从零编写新测试、不做直接实现修复、不用于运行测试、不做框架迁移、不测量代码覆盖率、不进行带学术分类的深度正式测试坏味道审计;输入中测试代码为必需,生产代码与具体关注点(如不稳定性、命名)为可选。Go/Rust 的表驱动子测试、pytest 裸 assert、Go 的 got != want 检查、针对不同边界条件的独立测试均属惯用做法,不应误报。若测试写得好,应明确说明,不应为提高发现数量而夸大严重级别。