你可以在 github 课堂自动评分中使用秘密测试吗?

问题描述

对于新的机器学习课程,我们希望设计一系列编码作业,让学生获得一些入门代码,并在单元测试通过之前进行改进。然后他们提交代码并将其推送回远程,在那里自动评分工作流会运行更多测试以查看他们是否做了足够的工作。

我们想做的是给学生一些他们可以研究的测试,看看一般的编程目标是什么;但也有一个秘密的单元测试,在学生从未见过的数据上尝试他们的代码在这个看不见的测试数据上,他们必须至少达到一定的准确度分数才能获得及格分数。

问题是:这个可以在github课堂上做吗?似乎认设置是在入门代码存储库中公开提供所有测试。但是我们希望有一些学生看不到的测试,以便我们可以测试他们是否只是狭隘地编写可见测试或实际编写适当的通用解决方案。

如果这不是直接可行的,是否有变通策略?

解决方法

不知道这是否可行或可行,但可以尝试here 中的最佳答案:

" GitHubPages(如 Bitbucket Pages 和 GitLab Pages)仅提供静态页面,因此唯一的解决方案是客户端(Javascript)。

一种解决方案可能是,不使用真正的身份验证,只与所有授权人员共享一个秘密(密码)并实施以下方案之一:

将所有私有文件放在(未列出)子目录中,并使用所选密码的散列命名该子目录。索引页面要求您(使用 Javascript)输入密码并构建正确的开始链接以计算哈希值。

参见示例:https://github.com/matteobrusa/Password-protection-for-static-pages

PRO:保护整个子目录树的非常简单的方法

缺点:

可能的攻击:嗅探以下请求以获取子目录的名称 托管站点的管理员可以访问完整内容 使用密码加密页面并使用 javascript 即时解密

参见示例:https://github.com/robinmoisson/staticrypt

PRO:周围没有明文页面代码(解密发生在客户端)

缺点:

只是一个页面,每次刷新都需要重新插入密码 管理员可以更改您的 Javascript 代码以在您插入密码时获取密码"