SuperAPI AI 工具集

smart-test

测试与质量

查看项目

更新于 10-15 23:57

技能介绍

用途:根据代码变更智能选择要运行的测试,避免每次都跑全量测试套件。它通过 import 依赖分析把源文件映射到受影响的测试文件,提供分层测试策略,并跟踪测试可靠性以在快速运行中优先稳定测试。

主要能力:

  1. 分层测试。Tier 1 快速测试(<1 分钟):直接受影响的单元测试,仅高可靠性测试,命令 pytest -m "not slow and not integration" [selected_tests];Tier 2 受影响测试(<5 分钟):直接加传递依赖的测试,含集成测试,命令 pytest [selected_tests];Tier 3 全量套件,命令 pytest。
  2. import 依赖分析。构建依赖图,区分直接测试(test_{module}.py 或 {module}_test.py)与间接测试(导入被改模块的模块的测试)。
  3. 可靠性跟踪。测试按 0.0-1.0 评分,<0.5 视为 flaky 并从 Tier 1 排除,数据存于 ~/.amplihack/.claude/data/test-mapping/reliability.yaml。

使用方式:提及“run affected tests”“smart test”“which tests to run”“fast tests”等即可激活。可分析 git diff 或暂存变更并返回分层测试命令;可构建或刷新映射缓存,保存到 .claude/data/test-mapping/code_to_tests.yaml;可查看 flaky 测试。流程为识别变更文件、构建 import 图、映射到测试、应用可靠性过滤、生成 pytest 命令。

适用场景:pre-commit 用 Tier 1,pre-push 与草稿 PR 用 Tier 2,就绪 PR 与 CI main 用 Tier 3。与 DEFAULT_WORKFLOW.md 集成,配合 pytest 标记 slow、integration、e2e、neo4j、requires_docker 使用。

限制:仅支持 Python import 分析;传递分析仅一层;可靠性数据需先由测试运行播种;无法检测动态或字符串导入。首次搭建测试、大规模重构、配置变更、CI 环境变量变化、数据库 schema 迁移、flaky 调查、合并前最终检查时不应使用。缓存需在新增测试文件、模块结构显著变化或超过 7 天时重建。