SuperAPI AI 工具集

test-run

测试与质量

查看项目

更新于 10-15 08:14

技能介绍

用途

test-run 用于执行 keel 项目的测试套件并生成测试报告,同时支持检查受影响测试与追溯覆盖。它面向需要运行测试、验证测试覆盖率、以及进行追溯验证(确认验收标准 AC 是否被通过的测试覆盖)的场景。关键词包括“执行测试”“跑测试”“全量测试”“回归测试”“run tests”。

该技能不负责设计测试用例(应使用 /test-cases),也不用于对运行中系统做黑盒实测(应使用 e2e-test-flow)。

主要能力

  • 全量执行:按 UT → IT → E2E 顺序分层执行所有测试。
  • 按类型执行:--ut 仅单元测试、--it 仅集成测试、--e2e 仅 E2E 测试。
  • 按功能点执行:/test-run F-001,通过追溯矩阵查找功能点关联的所有测试并执行。
  • 追溯验证:--trace 在全量执行基础上增加追溯完整性验证。
  • 受影响测试:--affected 基于 git diff 识别变更文件,仅运行关联测试,可与 --ut/--it/--e2e 组合。
  • 测试框架检测:扫描 package.json、pyproject.toml、go.mod、Makefile 等识别 Jest/Vitest/pytest/Go test 等框架并确定运行命令。
  • 报告生成:输出到 docs/devdocs/05-test-report.md,包含执行摘要、分层结果、失败详情、追溯验证结果与建议。

使用方式

运行模式语法:

/test-run              # 全量执行(UT + IT + E2E)
/test-run --ut         # 仅单元测试
/test-run --it         # 仅集成测试
/test-run --e2e        # 仅 E2E 测试
/test-run F-001        # 按功能点关联的测试
/test-run --trace      # 全量执行 + 追溯验证
/test-run --affected   # 仅运行受变更影响的测试
/test-run --affected --ut  # 受影响的单元测试

前置条件:测试用例文档 docs/devdocs/03-test-cases*.md;项目已配置测试框架(Jest/Vitest/pytest/Go test 等)。

执行流程:读取测试用例文档并解析用例清单与追溯矩阵;--affected 时识别变更范围;检测测试框架;按 UT → IT → E2E 分层执行;收集通过/失败/跳过统计、覆盖率与失败详情;--trace 时进行追溯验证;生成测试报告;输出摘要。

测试命令在 workspace_context.code_roots 各路径下执行,代码根多于一项时逐个执行并在报告中按 root 分组。测试报告恒写 <workspace_context.docs_dir>/devdocs/05-test-report.md。

适用场景

  • 开发完成后执行回归测试与全量测试。
  • 验证测试覆盖率与追溯完整性。
  • 按功能点或变更范围运行关联测试。
  • 与 /dev-workflow 协作:批量完成后建议调用(--trace),单任务完成后必须调用(--affected)。
  • 与 /test-cases(提供用例清单与追溯矩阵)、/testing-guide(覆盖率与断言质量标准)、/sync(追溯矩阵状态更新)协作。

限制

  • 执行前必须检测到测试框架,无法检测时询问用户。
  • 分层执行顺序固定为 UT → IT → E2E,不可打乱。
  • 单个测试失败不终止后续测试;UT 全部失败时,独立调用可提示用户,被调用时继续执行。
  • 单个测试套件超时 5 分钟(可配置)。
  • 必须生成测试报告,失败详情必须包含文件路径和行号。
  • --trace 模式必须包含追溯验证结果,且必须覆盖所有 AC,未覆盖的 AC 必须明确标记。
  • 不检查 CON-XXX;仅当某条 CON 的验证方式引用了测试编号时,该测试才进入本技能范围。
  • 追溯结果不修改源文件,仅报告,修改由 /sync 负责。

追溯验证规则

检查项 通过条件 失败标记
AC 测试覆盖 每个 AC 至少有 1 个关联测试 ❌ 未覆盖
测试通过 AC 关联的所有测试全部通过 ⚠️ 测试失败
用例覆盖 文档中的测试编号在实际测试中有对应用例 ⚠️ 用例缺失
孤立测试 测试用例有对应的 AC 关联 ℹ️ 孤立测试(信息)

子 Agent 摘要格式

当本 Skill 作为子 Agent 运行时,返回结构化摘要:

skill: test-run
status: success | failed
summary:
  headline: "全量测试通过,覆盖率 85%"
  details:
    tests_run:
      unit: { passed: X, failed: 0, total: X }
      integration: { passed: X, failed: 0, total: X }
      e2e: { passed: X, failed: 0, total: X }
    coverage: "XX%"
    trace_verified: true
blockers: []
output_files:
  - docs/devdocs/05-test-report.md
new_ids: {}
next_recommended:
  skill: verify
  args: "--impl"

参考资料

templates/test-report-template.md - 测试报告模板