mcpField
P
prune-tests

prune-tests

github.com/riffingonsoftware测试与质量084 次安装今天更新
代码仓库

关于 prune-tests

prune-tests 是一项用于降低测试套件成本、同时保留有效保护的技能。它帮助开发者按测试独有保护的契约、已发布缺陷和关键不变量分类,再删除或合并冗余测试并汇报变更。

主要功能

  1. 01按受保护行为分类测试
  2. 02调查保护范围不明确的测试
  3. 03保留、合并或删除测试
  4. 04变更后重新运行测试
  5. 05汇报删除内容与耗时节省

适用场景

  1. 01精简成本较高的完整测试套件
  2. 02审查受代码差异影响的测试
  3. 03删除重复或过时的覆盖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/riffingonsoftware/agent-skills --skill prune-tests

安装后在 Claude Code 中输入/prune-tests确认已加载。

详细介绍

精简测试

在不削弱有效保护的前提下降低测试套件的成本。

保留

只有当测试能独有地保护以下内容时才保留:

  • 其他仓库、服务或用户依赖的契约。
  • 已发布且可能再次出现的 Bug。
  • 关键安全、权限、兼容性、并发、迁移、协议或数据丢失不变量;每个不变量只保留一个测试,而不是为每个实施该不变量的分支各保留一个测试。

此外,还要保留仓库说明要求的所有测试。

契约位于 API、CLI、协议、工作流或制品边界上。如果 Bug 已进入默认分支或影响了用户,则视为已发布。涵盖私有机制、与更强测试重复、枚举等效用例、保留已废弃行为、测试框架或类型保证、将代码内容改写成断言,或依赖结构而非行为的测试均不符合条件。测试覆盖率百分比不是保留测试的理由。

范围

默认检查整个测试套件。如果调用方将运行范围限定为某个差异,则只考虑该差异新增或修改的测试,以及覆盖其修改或删除代码的测试。

工作流

  1. 运行范围内的测试并记录耗时。如果有任何测试失败,立即停止并报告失败情况。
  2. 根据「保留」部分所述的保护目标,对范围内的每项测试进行分组。将不保护任何内容的测试归为一组。
  3. 调查保护目标不明确的各组。搜索历史记录,找到添加相关测试的修复;阅读测试覆盖的代码及其调用方;并临时破坏断言所依赖的行为,确认是否还有其他测试会失败。只有历史记录显示 Bug 已进入默认分支或影响了用户,才将其视为已发布。
  4. 将每组归类为 keep(保留)、consolidate(合并为一个保护目标相同的测试)或 delete(删除)。如果无法指出某组独有的保护目标,就删除该组。所有组均完成分类后即可结束。
  5. 每次只处理一组变更;不要更改生产行为。
  6. 重新运行范围内的测试,以及所有使用已移除 fixture 的测试。全部通过后即可结束。

报告删除的测试、fixture 和代码行数,节省的运行时间,以及每项删除和合并的原因。

评论

支持 Markdown