SuperAPI AI 工具集

refine-tests

测试与质量

查看项目

更新于 10-16 07:26

技能介绍

Refine Tests 是一个审计现有测试套件的技能,适用于单元、集成或端到端测试——当测试通过但缺陷仍然上线、覆盖率看似很高却漏掉真实问题时使用。它不追求更多测试,而是让测试更“能失败”:对每个测试提出“变异问题”——若某个有能力的初级开发者在被测代码中引入细微但严重的缺陷(翻转比较、丢弃分支、反转条件、硬编码返回值、忽略参数),此测试是否会失败?若不会,测试就是装饰性的;覆盖工具看不到这一点,执行到代码不等于检查了能暴露缺陷的可观察结果。

硬性规则:永远不弱化或简化测试,不为让测试通过而放宽断言;永远不删除覆盖率,变更只能是新增或强化重写;有疑问时增加断言而非删除;套件保持绿色,强化后修改文件须通过,并保持全套件、类型检查与 lint 干净;不稳定测试须通过消除非确定性(注入时钟、真实同步)修复,绝不靠放宽容差或删除断言。

流程:先重读仓库的代理指令(AGENTS.md、CLAUDE.md、测试约定),记录测试运行器与运行单个文件的命令;盘点所有测试文件并映射到其测试的源码,记录无对应测试的源码文件;依据高收益猎场分类筛查可疑项;对照源码深读测试与源码对;按分类法归类发现,记录在发现台账(文件、行、类别、严重度、问题、会漏过的真实缺陷类别);立即修复而非只标记;先窄验证再跑全套件。严重度:H 为资金、认证、数据完整性或并发路径上的空洞或缺失测试;M 为真实逻辑中的弱断言或未测分支;L 为命名、卫生或附带缺口。

发现分类包括:测错对象(负例被前置过滤或规范化掉、夹具等于派生值、对手写 mock 断言);同义反复或空洞(断言结构性保证、正则含逃生口、只断言 ok:true、grep 源码、快照 mock);断言不足(裸 toThrow、toMatchObject 只查部分字段、未断言 clamps);因错误原因而脆弱(断言生成查询文本、读构建产物、sleep 计时、mock 内部协作者);完全缺失测试(资金/认证/安全门、错误与清理分支、从不触发的定时器、过期与 TTL、边界值两侧、单向套件、序列化与哈希敏感);setup/teardown 隐患(单例、env、假定时器未恢复、夹具被跨测试修改、清理吞错、假并发);误导性命名。

高收益猎场涵盖负例测试、校验器/篡改测试、并发测试、错误路径、超时与定时器、边界、资金/认证/管理面、往返、mock 密集文件。修复模式包括隔离负例夹具、精确失败断言、双向边界、非对称夹具、真实交错、守卫假件、完整形状断言、钉住契约。若疑为生产缺陷,不静默修代码也不静默断言错误行为,而是以“疑为缺陷”注释钉住当前行为并列出待人工决定。报告格式含范围、计数、发现表、被钉住的疑似生产缺陷、残余风险。不适用场景:为新代码写测试(用 TDD 技能)、诊断单个失败测试(那是调试)。