mcpField
T
test-review

test-review

github.com/athola测试与质量34398 次安装1 天前更新
代码仓库

关于 test-review

用于审查测试套件、覆盖缺口和测试场景质量的技能,尤其关注编码设计不变量的测试。它侧重评估与改进规划,不用于编写或更新测试。

主要功能

  1. 01识别语言与测试框架
  2. 02盘点覆盖率与缺口
  3. 03评估测试场景质量
  4. 04检查编码不变量的测试
  5. 05规划测试改进
  6. 06核验有证据支持的发现

适用场景

  1. 01发布前审查测试套件
  2. 02调查测试失败和覆盖缺口
  3. 03检查测试是否保留设计不变量

安装

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

$npx skills add https://github.com/athola/claude-night-market --skill test-review

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

modules/
content-assertion-quality.md
coverage-analysis.md
framework-detection.md
remediation-planning.md
scenario-quality.md

详细介绍

测试审查工作流

以 TDD/BDD 的严谨性评估并改进测试套件。

快速开始

/test-review

**验证:**运行 pytest -v,确认测试通过。

适用场景

  • 审查测试套件质量
  • 分析覆盖率缺口
  • 主要版本发布前
  • 测试失败后
  • 规划测试改进

不适用场景

  • 编写新测试——使用 parseltongue:python-testing
  • 更新现有测试——使用 sanctum:test-updates

必需的进度项

  1. test-review:languages-detected
  2. test-review:coverage-inventoried
  3. test-review:scenario-quality
  4. test-review:invariant-preservation
  5. test-review:gap-remediation
  6. test-review:evidence-logged
  7. test-review:findings-verified

渐进式加载

根据审查深度按需加载模块:

  • 基本审查:核心工作流(本文件)
  • 框架检测:加载 modules/framework-detection.md
  • 覆盖率分析:加载 modules/coverage-analysis.md
  • 质量评估:加载 modules/scenario-quality.md
  • 补救规划:加载 modules/remediation-planning.md

工作流

步骤 1:检测语言(test-review:languages-detected)

识别测试框架和版本约束。 → 参见:modules/framework-detection.md

快速检查:

find . -maxdepth 2 -name "Cargo.toml" -o -name "pyproject.toml" -o -name "package.json" -o -name "go.mod"

**验证:**使用 --help 标志运行该命令,确认命令可用。

步骤 2:盘点覆盖率(test-review:coverage-inventoried)

运行覆盖率工具并找出缺口。 → 参见:modules/coverage-analysis.md

快速检查:

git diff --name-only | rg 'tests|spec|feature'

**验证:**运行 pytest -v,确认测试通过。

步骤 3:评估场景质量(test-review:scenario-quality)

使用 BDD 模式和断言检查评估测试质量。 → 参见:modules/scenario-quality.md

重点关注:

  • Given/When/Then 的清晰度
  • 断言的具体程度
  • 反模式(无效等待、模拟内部实现、重复样板代码)
步骤 4:规划补救措施(test-review:gap-remediation)

制定包含负责人和日期的具体改进计划。 → 参见:modules/remediation-planning.md

步骤 5:记录证据(test-review:evidence-logged)

记录已执行的命令、输出和建议。 → 参见:imbue:proof-of-work

测试质量检查清单(精简版)

  • 测试结构清晰(Arrange-Act-Assert)
  • 覆盖关键路径(身份验证、校验、错误)
  • 断言具体且包含上下文
  • 无不稳定测试(无效等待、顺序依赖)
  • 使用可复用的固件/工厂函数
  • 保留编码不变量的测试(见下文)
不变量编码测试

测试既验证行为,也编码设计不变量。 断言“模块 A 从不导入模块 B”的测试 编码了层级边界。断言“此函数是纯函数”的测试编码了并发 模型。这些测试至关重要,而覆盖率指标无法体现其作用。

评审期间,请检查:

  1. 不变量编码测试是否被删除或弱化? 用于约束架构边界、数据结构或 API 契约的测试,不应 在未明确说明将放弃哪个不变量、且未上报请人类判断的情况下被删除。

  2. 测试预期是否被修改,以迁就有缺陷的实现? 如果断言值发生变化,请问: 需求是否变了,还是 Agent 修改了 测试来让代码通过?后者是最危险的 测试篡改形式。

  3. 新的不变量是否被编码为测试? 做出设计 决策时(例如选择数据结构、模块边界、错误处理策略),应至少有 一个测试,其失败意味着该 不变量遭到违反。

危险信号模式:

模式风险
在通过的测试中添加 @pytest.mark.skip不变量被悄然舍弃
将断言从具体改为宽泛约束被放宽
重命名测试以描述新行为旧不变量从历史记录中被抹去
因为“测试的是旧代码”而删除测试不变量被移除,且未作替代

检测到不变量弱化时:

请勿批准。将其标记为阻塞性质量问题,并向人类提出以下三个选项:

  1. 保留:还原测试更改,修复实现以满足该不变量
  2. 分层:保留不变量测试,并在其旁边添加新行为(即使不够优雅也接受)
  3. 修订:该不变量确实有误;删除旧测试,并编写新测试来编码 替代不变量

这是模型经常判断错误的事项。当没有人类可供咨询时, 默认选择选项 1(保留)。

输出格式

## Summary
[Brief assessment]

## Framework Detection
- Languages: [list] | Frameworks: [list] | Versions: [constraints]

## Coverage Analysis
- Overall: X% | Critical: X% | Gaps: [list]

## Quality Issues
[Q1] [Issue] - Location - Anchor: `verbatim source text at file:line` - Fix

## Remediation Plan
1. [Action] - Owner - Date

## Recommendation
Approve / Approve with actions / Block

**验证:**运行带有 --help 标志的命令以验证其是否可用。

集成说明

  • 使用 imbue:proof-of-work 捕获可复现的证据
  • 参考 imbue:diff-analysis 评估风险
  • 使用 imbue:structured-output 模式格式化输出

验证发现有据可依(test-review:findings-verified)

将发现写入 .review/findings.json,运行引文验证器 (Skill(imbue:review-core) 第 5 步),并删除验证器拒绝的发现,或将其标记为 UNVERIFIED。

退出条件

  • 已检测并记录框架
  • 已分析覆盖率并识别缺口
  • 已评估场景质量
  • 已制定包含负责人和日期的补救计划
  • 已记录带有引文的证据
  • 每条已报告的发现都包含经 citation_verifier.py 确认的 Location + 原文 Anchor(退出码为 0),或者未验证的发现已被删除或标记为 UNVERIFIED

故障排除

常见问题

未发现测试 确保测试文件符合 test_*.py 或 *_test.py 模式。运行 pytest --collect-only 进行验证。

导入错误 检查被测试的模块是否位于 PYTHONPATH 中,或使用 pip install -e . 安装

异步测试失败 安装 pytest-asyncio,并使用 @pytest.mark.asyncio 装饰测试函数

评论

支持 Markdown