You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于动态目标Makefile的授课用工具校验与性能整合系统问询

我最近为自己的编程课开发了一套自动化校验与性能对比工具,专门用来批量验证学生实现的多款工具在测试数据上的正确性、行为一致性,还能自动对比它们的性能表现,分享下我的设计思路和实现细节:

核心设计理念

我做这套工具的核心目标就是降低学生的使用门槛,同时方便我批量管理和分析所有学生的解决方案:

  • 学生端:只需要把自己的源码目录按规则放到指定位置,不需要手动配置任何脚本,就能自动完成所有校验和性能测试
  • 教师端:我可以直接把学生的解决方案目录复制到自己的工具副本里,一键完成所有方案的整合与批量测试
目录命名规则与自动触发逻辑

我设置了一个非常简单的目录识别规则:

所有学生的源码目录必须以_src结尾,比如student_alice_src、student_bob_src

当学生把符合规则的目录放到预设的submissions/目录下后,我的主脚本会自动执行以下操作:

  1. 扫描submissions/目录,自动识别所有*_src结尾的目录
  2. 为每个目录创建独立的工作空间,避免不同学生的代码互相干扰
  3. 自动拉取预设的测试数据集(我提前存在test_data/目录下)到对应工作空间
  4. 依次执行正确性校验、一致性对比、性能测试三类脚本
功能模块详解

1. 正确性校验脚本

这个脚本会遍历test_data/里的所有测试用例,每个用例包含输入数据和预期输出:

  • 自动编译/运行学生目录里的源码(支持C、Python、R等多语言,我写了语言判断逻辑)
  • 捕获程序的实际输出,和预期输出做逐行比对
  • 生成详细的校验报告,标记出错误用例和具体的差异点

2. 一致性对比脚本

除了和标准预期对比,我还加入了不同学生实现之间的一致性校验:

  • 收集所有通过正确性校验的学生程序的输出结果
  • 对比这些结果是否完全一致(排除一些允许的格式差异,比如空格、换行符)
  • 标记出结果不一致的程序,方便我排查是否存在逻辑漏洞或者题目理解偏差

3. 性能对比脚本

为了让学生直观看到不同实现的性能差异,我做了自动化的性能统计:

  • 对每个测试用例,重复运行学生程序多次(默认10次)
  • 用time命令或者自定义计时函数统计平均执行时间、最大/最小执行时间
  • 生成可视化的性能对比表格(用Python的tabulate库实现),把所有学生的性能数据按排序展示
教师端整合方案

我自己的工具副本里有一个instructor_analysis/目录,当我需要批量分析学生作业时:

  • 只需把所有学生的*_src目录复制到这个目录下
  • 运行主脚本后,会生成一份汇总报告,包含所有学生的校验结果、一致性对比情况和性能排名
  • 这份报告能帮我快速定位优秀实现和需要重点辅导的学生

内容的提问来源于stack exchange,提问作者Thomas Mailund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:02:33