用途
test-coverage 是一个测试覆盖率分析技能,用于发现测试覆盖缺口、识别未被测试的代码路径、按风险对测试编写进行优先级排序,并帮助提升整体测试质量。其目标不是追求 100% 覆盖率,而是确保风险最高的代码得到充分测试。
主要能力
该技能提供了一套结构化的分析流程,涵盖以下方面:
-
发现测试环境:检测项目使用的测试框架(Jest、Vitest、Pytest、RSpec、JUnit 等)、覆盖率工具(Istanbul/nyc、coverage.py、SimpleCov、JaCoCo 等)、测试目录结构、命名约定、测试类型以及 CI 集成情况。
-
运行现有覆盖率:针对不同技术栈提供运行覆盖率的命令,记录总体行覆盖率、分支覆盖率、0% 覆盖率的文件、低于 50% 覆盖率的文件以及未覆盖的具体行号。
-
识别未测试内容:查找没有对应测试文件的源文件,定位常见遗漏的代码路径,包括错误处理器与 catch 块、边界情况(null、undefined、空数组、零、负数、边界值)、else 分支、switch 默认分支、提前返回与守卫子句、超时与重试逻辑、竞态条件、清理代码、配置分支、已弃用或特性开关后的代码。同时可查找死代码或不可达代码。
-
基于风险的优先级排序:将未测试代码按风险分为四个等级:
- 🔴 关键:认证与授权、支付与计费、数据变更、API 端点、输入验证、安全敏感代码、核心业务逻辑。
- 🟠 高:错误处理、数据库查询、第三方集成、状态管理、文件操作、后台任务。
- 🟡 中:UI 组件、工具函数、配置、中间件、缓存逻辑。
- 🟢 低:静态组件、类型定义、常量与配置对象、日志、仅开发用代码。
-
测试质量分析:分析断言质量、测试独立性,识别常见测试坏味道,如无断言、测试实现而非行为、过度 mock、不稳定测试、重复测试、巨型测试文件、缺少清理、快照滥用、复制粘贴测试、仅测试正常路径。
-
技术栈特定检查:针对 Node.js/Jest/Vitest、Python/Pytest、React/Next.js、Vue/Nuxt、Go、Java/Spring Boot、Ruby/RSpec、PHP/Laravel、移动端(React Native/Flutter)、API/集成测试、数据库等给出具体检查项。
-
覆盖率改进计划:提供分阶段的改进建议,包括立即(本迭代)、短期(接下来两个迭代)、长期(本季度)的行动项。
使用方式
该技能以结构化流程执行,用户可按照其步骤对项目进行测试覆盖率分析。技能中提供了各技术栈的检测命令、覆盖率运行命令以及查找未测试文件的脚本示例。分析完成后,输出格式包括覆盖率报告(总体覆盖率、未测试文件按风险分类、测试质量问题)、每个未测试区域的详细说明(文件、风险等级、重要性、缺失测试、测试脚手架)以及总结(当前状态、最大缺口、优先编写的 5 个测试、测试质量问题、CI 建议、做得好的地方)。
适用场景
适用于需要评估和改进项目测试覆盖率的开发团队,尤其适合在以下场景使用:新项目建立测试策略、现有项目进行测试审计、代码重构前确保关键路径有测试保护、CI 中设置覆盖率阈值、提升测试质量而非仅仅追求覆盖率数字。
限制
该技能本身不执行测试或自动生成完整测试代码,而是提供分析框架、检查清单和测试脚手架建议。具体测试编写仍需开发者根据项目实际情况完成。技能中未提供关于收费、价格或平台限制的信息。