SuperAPI AI 工具集

ensure-test-coverage

测试与质量

查看项目

更新于 10-16 06:15

技能介绍

用途:针对单个评测(eval)分析其测试覆盖率是否符合仓库测试约定,既能审查现有测试,也能创建缺失测试。调用时需提供 eval_name(一个或多个评测名,如 gpqa、healthbench),未提供则询问用户。

主要能力与工作流:

  1. 发现可测试组件:在 src/inspect_evals/<eval_name>/ 中用 AST 或 grep 扫描 @task、@solver、@scorer、@tool 装饰的函数,查找 record_to_sample、hf_dataset/load_dataset、csv_dataset/json_dataset 调用,检查 compose.yaml/docker-compose.yaml 与 sandbox() 用法,识别含复杂逻辑的工具函数及任务变体。
  2. 运行 autolint 与测量覆盖率:执行 uv run python tools/run_autolint.py <eval_name> 获取结构检查基线;执行 uv run pytest tests/<eval_name>/ --cov=src/inspect_evals/<eval_name> --cov-report=term-missing -q --runslow 获取行级覆盖率,并将未覆盖行分类为可测试、需 LLM/沙箱、死代码或错误处理。无固定覆盖率阈值,按“该路径若损坏能否被发现”判断。
  3. 评估测试质量:检查 scorer 是否验证正确与错误结果、沙箱与 LLM 评分器是否 mock、多评分器 reducer 与 dispatch 分支是否单独测试、是否使用 parametrize、solver 分支逻辑、工具错误路径(pytest.raises(ToolError))、数据集测试是否用真实样本、E2E 变体覆盖及 pytest 标记(dataset_download、huggingface、docker、slow)。
  4. 报告缺口:按优先级列出 autolint 失败、重要未测逻辑、质量缺口。
  5. 创建或修复测试(如用户要求):按 tests/<eval_name>/ 组织文件,参考 references/test-patterns.md 模板,创建后运行 pytest、ruff check/format、autolint 并重新测量覆盖率。
  6. 汇报结果:组件清单、autolint 结果、覆盖率、质量缺口、已采取行动与遗留项。

限制与注意:不要重复 autolint 已做的检查;不要过度测试仅包装 react() 或 Inspect 内置的薄封装(isinstance 足够);含自定义逻辑的 solver/scorer/tool 必须测试;不要用裸字符串等(原文在此处截断)。具体测试模板与共享工具见仓库内 references/test-patterns.md 与 tests/utils/。