SuperAPI AI 工具集

test-gap-finder

测试与质量

查看项目

更新于 10-23 17:23

技能介绍

用途 Test Gap Finder 用于在代码合并前找出“行为已改变但没有测试验证”的缺口。它指出:行覆盖率只能说明哪些代码被执行过,无法说明是否有测试检查了结果;因此它逐个询问:这个分支新增或修改的每项行为,如果被破坏,是否有测试会失败。

主要能力

  1. 列出变更行为:通过 git merge-base 与 git diff 获取相对目标分支的变更文件,并排除测试目录,只保留源码变更块。对每个变更块记录其所在函数(文件:行号)、新增或改动的分支(if、switch case、提前返回、catch、守卫子句)、新增输入与可能返回的错误、以及副作用(写入、网络调用、事件、任务)。
  2. 定位相关测试:查找与源码路径对应的测试文件(如同名 .test.ts、spec 目录、_test.go),用 git grep 搜索函数名,并查找通过路由、命令或公共方法间接调用它的高层测试。只有在该分支被破坏时会失败的测试才计入覆盖。
  3. 确认覆盖:如果项目已配置覆盖率工具,可用项目自身命令(如 vitest --coverage、pytest --cov、go test -cover、rspec 搭配 SimpleCov)在变更文件上运行,但结果仅作参考,因为被执行的行仍可能未被校验。
  4. 风险分级:高风险包括鉴权与权限检查、金额、数据删除、迁移、公共边界的输入校验、决定重试或放弃的错误处理;中风险包括多分支业务规则、日期时间逻辑、解析、缓存与失效;低风险包括格式化、日志、简单 getter、类型检查可覆盖的接线代码。
  5. 生成报告:对每个缺口给出位置、未测试的行为,以及建议新增的测试(以测试名称加准备数据与断言的形式表达),并列出确实已覆盖该行为的现有测试,便于用户信任“已覆盖”列表。

使用方式 该技能以 git 分支差异为输入,按四个步骤执行:列出变更行为、查找相关测试、对缺口排序、输出报告。可调整排除模式以适配项目的测试布局(如 tests/、tests/、spec/、*_test.go)。报告示例展示了按高、中、低风险分组的缺口条目,以及已覆盖项。

适用场景 适用于功能分支合并前的测试审查、拉取请求评审,尤其是涉及权限、金额、删除、迁移、输入校验和错误处理等高风险改动的场景,帮助团队优先补齐最值得在合并前编写的测试。

限制 只审查当前分支的变更,不审计整个代码库。如果预期行为不明确(例如舍入规则),应说明并询问作者,而不是用测试锁定猜测。只有在用户要求时才编写测试;编写时应先让测试在当前代码上失败以暴露缺陷,或通过故意破坏代码来验证测试有效。未配置覆盖率工具时,不依赖覆盖率结果。