两晚搭建一个超简易的OpenJudge

两晚搭建一个超简易的OpenJudge

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

大二时为数据结构与算法课程搭建的简易调试平台:用户选择题目和语言,粘贴代码上传测试。平台后台运行数据生成器、标准代码与用户代码并比对结果。随机数据可帮未考虑某些情况的同学定位错误;针对极端用例,平台将导致失败的数据存入“重要数据集”,提交时优先测试,并支持用户贡献数据,由标准代码审核后加入,使测试数据更全面。

🔎

延伸解读

随机测试与极端用例的互补

文章通过两位同学的案例说明:随机数据生成器能帮助未考虑某些情况的同学定位错误,但对仅缺极端用例的情况效果有限。平台因此采用随机测试与重要数据集结合的方式,先测试重要数据集再跑20组随机数据,兼顾两类问题。

重要数据集的积累机制

平台将导致程序失败的随机数据自动加入重要数据集,随着提交次数增加,该数据集越来越可靠。这种机制利用群体测试经验,让后续提交者优先面对已知的易错数据,提高测试效率。

用户贡献数据的审核流程

用户可通过“我想贡献数据”功能提交输入和输出,平台的标准代码会运行审核,若结果匹配则加入重要数据集。这鼓励用户分享极端用例,使测试数据更全面,但依赖标准代码的正确性。

平台定位与使用限制

文章强调这不是OJ系统,每次测试随机生成数据,结果可能不同。平台仅测试20组随机数据,受服务器性能限制。此外,因教师要求降低作业难度,平台已关闭,但产品思路仍有参考价值。

❓

Q&A

OpenJudge平台的主要功能是什么?

OpenJudge是一个简易的调试平台,用户可以选择题目和语言,粘贴代码上传测试。平台后台运行数据生成器、标准代码与用户代码并比对结果,提供反馈。

为什么需要随机数据生成器来测试代码?

随机数据生成器可以帮助未考虑某些情况的同学定位错误。例如,学生A通过随机数据对比测试,多次修改后通过了题目。

平台如何处理极端测试用例?

平台将导致失败的数据存入“重要数据集”,提交时优先测试。此外,用户可贡献极端数据,由标准代码审核后加入,使测试数据更全面。

用户如何贡献测试数据?

用户通过“我想贡献数据”功能提交输入和输出。平台的标准代码会审核,如果运行结果匹配,数据将加入重要数据集。

平台每次提交测试多少组随机数据?

由于服务器性能考虑,每次提交只测试20组随机数据。

OpenJudge平台目前是否可用?

由于应教师要求显著降低了作业难度,平台已关闭。

🏷️

标签

➡️

继续阅读