用途
该技能面向“刚完成一个功能后”的场景,用于审查最近的代码改动,并在真正重要的地方补充缺失的测试覆盖。它的目标不是提升覆盖率数字,而是覆盖对行为有实质影响的部分。
主要能力
技能按六个步骤执行:
-
识别最近改动:运行
git diff HEAD~1(若在分支上则用git diff main...HEAD)找出变更内容。如果没有 git 改动,则询问用户要覆盖哪些文件。关注点包括新增的函数、方法或组件,现有代码中变更的行为,新增的 API 端点或路由,以及被修改的业务逻辑。 -
审计现有覆盖:对每个变更文件检查是否存在对应测试,例如
src/foo.ts对应查找src/foo.test.ts、tests/foo.test.ts、__tests__/foo.test.ts,并遵循项目的测试文件约定。将每个变更的函数/组件分类为:Untested(无测试文件或该函数无测试)、Under-tested(有测试但遗漏重要路径)、Covered(测试充分覆盖行为)。 -
按风险排优先级:优先测试复杂逻辑(条件、循环、状态机、计算)、错误路径(失败时会发生什么)、数据转换(解析、格式化、映射)、集成边界(API 调用、数据库查询、外部服务)、用户可见行为(出错会破坏体验的部分)。跳过简单 getter/setter、纯透传函数、框架样板代码以及已被充分覆盖的代码。
-
编写测试:遵循项目现有测试模式(框架、断言风格、文件结构、mock 方式),先阅读 1–2 个现有测试文件以匹配约定。每个测试要求:名称描述行为而非实现(如“returns empty array when no results found”而非“test getResults”);采用 Arrange-Act-Assert 结构;一个测试只验证一个行为(若测试名含“and”则拆分);覆盖真实边界情况(空输入、null/undefined、边界值、并发访问、错误响应)。
-
验证:运行新测试确保通过。若有失败,视为潜在缺陷并标记出来,而不是删除测试。
-
报告:输出“New Test Coverage”报告,包含分析文件数、新增测试数、发现的潜在缺陷数;列出新增测试文件及其覆盖的行为;列出因覆盖充分而跳过的文件;列出潜在缺陷(测试名、期望值 X 与实际值 Y、文件与行号)。
使用方式
在完成一个功能后调用该技能。技能会自行通过 git diff 定位改动;若没有 git 改动,会向用户询问要覆盖的文件。编写测试前会先读取现有测试文件以匹配项目约定。
适用场景
- 刚完成一个功能,需要补充测试覆盖。
- 需要按风险而非覆盖率来安排测试优先级。
- 希望在遵循项目既有测试风格的前提下新增测试。
限制
资料未提供该技能的具体安装命令、支持的测试框架清单、收费或价格信息、平台限制,以及除上述步骤外的其他功能。