首页
/ SWE-bench系统测试指南:端到端功能验证全流程

SWE-bench系统测试指南:端到端功能验证全流程

2026-02-05 05:52:17作者:房伟宁

1. 测试环境搭建

SWE-bench采用Docker容器化环境进行测试,确保不同平台间结果一致性。首先需完成Docker环境配置,推荐至少16GB内存和120GB磁盘空间。

Docker安装完成后,通过以下命令验证环境:

# 检查Docker版本
docker --version

# 运行测试容器
docker run hello-world

# 查看Docker磁盘使用情况
docker system df

1.1 资源管理配置

SWE-bench提供多级缓存策略平衡速度与存储需求:

缓存级别 描述 存储影响 性能
none 无缓存 最小(~120GB运行时) 最慢
base 仅缓存基础镜像 最小(~120GB运行时)
env (默认) 缓存基础和环境镜像 中等(~100GB) 中等
instance 缓存所有镜像 高(~2000GB) 最快

配置缓存级别命令:

python -m swebench.harness.run_evaluation \
    --predictions_path <path_to_predictions> \
    --cache_level env \
    --clean True

2. 测试执行流程

2.1 基本测试命令

SWE-bench测试主入口为swebench.harness.run_evaluation模块:

python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench_Lite \
    --predictions_path <path_to_predictions> \
    --max_workers 8 \
    --run_id my_evaluation_run

对于初学者,建议从SWE-bench Lite子集开始:

python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench_Lite \
    --predictions_path <path_to_predictions> \
    --max_workers 8 \
    --run_id my_first_evaluation

完整数据集测试命令:

python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench \
    --predictions_path <path_to_predictions> \
    --max_workers 12 \
    --run_id full_evaluation

2.2 测试架构

SWE-bench测试系统采用三层Docker镜像架构:

  • 基础镜像:所有测试共享的通用依赖
  • 环境镜像:不同配置的Python环境(~60个)
  • 实例镜像:每个测试任务的特定依赖

测试架构

3. 测试数据准备

3.1 预测文件格式

测试预测结果需采用JSONL格式,每行包含:

{
  "instance_id": "repo_owner__repo_name-issue_number",
  "model_name_or_path": "your-model-name",
  "model_patch": "the patch content as a string"
}

示例:

{"instance_id": "sympy__sympy-20590", "model_name_or_path": "gpt-4", "model_patch": "diff --git a/sympy/core/sympify.py b/sympy/core/sympify.py\nindex 6a73a83..fb90e1a 100644\n--- a/sympy/core/sympify.py\n+++ b/sympy/core/sympify.py\n@@ -508,7 +508,7 @@ def sympify(a, locals=None, convert_xor=True, strict=False, rational=False,\n         converter[type(a)],\n         (SympifyError,\n          OverflowError,\n-         ValueError)):\n+         ValueError, AttributeError)):\n     return a\n"}

3.2 数据集选择

SWE-bench提供多种测试数据集:

4. 高级测试选项

4.1 指定实例测试

如需测试特定实例,使用--instance_ids参数:

python -m swebench.harness.run_evaluation \
    --predictions_path <path_to_predictions> \
    --instance_ids astropy__astropy-14539 sympy__sympy-20590 \
    --max_workers 2

4.2 云端测试执行

通过Modal在云端运行测试:

# 安装Modal
pip install modal swebench[modal]

# 首次使用需配置
modal setup

# 运行云端测试
python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench_Lite \
    --predictions_path <path_to_predictions> \
    --parallelism 10 \
    --modal true

5. 测试结果分析

5.1 结果文件说明

测试结果存储在evaluation_results目录,包含:

  • results.json:总体测试指标
  • instance_results.jsonl:每个实例的详细结果
  • run_logs/:各测试实例的日志文件

5.2 关键指标解析

测试报告包含以下关键指标:

  • Total instances:数据集中的实例总数
  • Instances submitted:模型尝试解决的实例数
  • Instances completed:完成测试的实例数
  • Instances resolved:补丁成功修复的实例数
  • Resolution rate:成功解决的实例百分比

5.3 测试流程图

测试流程图

6. 常见问题排查

6.1 资源相关问题

  1. 磁盘空间不足

    • 使用docker system prune清理未使用资源
    • 降低缓存级别:--cache_level=base
  2. 性能优化

    • 根据CPU核心数调整工作线程:
    # 8核CPU推荐设置
    --max_workers 6
    
    # 16核CPU推荐设置
    --max_workers 12
    

6.2 日志分析

查看测试日志定位问题:

# 查看特定实例的日志
cat evaluation_results/run_logs/<instance_id>.log

主要日志目录:日志目录

7. 自动化测试集成

7.1 批量测试脚本

创建批量测试脚本run_tests.sh

#!/bin/bash
# 基础测试
python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench_Lite \
    --predictions_path ./predictions \
    --max_workers 8 \
    --run_id daily_test

# 清理资源
docker system prune -f

7.2 持续集成配置

配置GitHub Actions工作流:

name: SWE-bench Tests
on: [push]
jobs:
  evaluate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Docker
        uses: docker/setup-buildx-action@v2
      - name: Run tests
        run: |
          python -m swebench.harness.run_evaluation \
            --dataset_name princeton-nlp/SWE-bench_Lite \
            --predictions_path ./test_predictions

8. 测试工具链参考

登录后查看全文
热门项目推荐
相关项目推荐