新闻详情

新闻详情

首页 / 资讯中心 / 详情

RS School App 自动化测试(Auto-Test)配置指南:从创建题目到 JSON Attributes 参数详解

发布时间:2026/11/9 23:27:09来源:尧图网络
RS School App 自动化测试(Auto-Test)配置指南:从创建题目到 JSON Attributes 参数详解
教育后端前端【免费下载链接】rsschool-appAn application for the RS School education process项目地址https://gitcode.com/gh_mirrors/rs/rsschool-app点击查看免费下载导读本文面向 RS School 平台的教练trainers与管理员admins完整讲解如何在 RS School App 中为课程添加RS School App Test类型的自测任务Self-Education Test包括创建全局任务、挂载到课程、通过 Auto-Test 菜单验证的完整操作流程以及决定测试评分逻辑的核心配置 JSON Attributes 中每个参数的含义与取值规则。读完本文你将能够独立配置一套带严格尝试次数、超时限流与阈值判定等规则的课程自测题并理解其在前端渲染与后端判分中的底层实现。一、功能定位什么是 RS School App 的 Auto-Test 自测任务在 RS School 的教学流程中除了自动代码检查Cross-Check / 代码仓库测试平台还内置了一套题库式自测任务Self-Education教练以 JSON 形式录入题目与答案学生在前端作答后由后端即时判分并写入课程成绩。该功能在仓库中对应两套实现后端判分核心nestjs/src/courses/task-verifications/self-education.service.ts负责校验答案、计算正确率与得分、执行尝试次数与限流规则前端作答页面client/src/modules/AutoTest/components/SelfEducation/SelfEducation.tsx负责把题目渲染为单选Radio或多选Checkbox表单。后端通过TaskType.SelfEducation识别这类任务见 auto-test.service.ts并将其统一暴露给Auto-Test页面。下面按官方流程逐步说明配置方法。二、创建全局测试任务Manage Tasks 页面2.1 进入任务管理页并新建任务在平台导航中进入Manage Tasks页面这是所有课程的全局任务库见下图点击Add Task按钮开始新建2.2 填写任务表单在弹出的表单中依次填写以下字段字段说明Name任务标题会展示在课程任务列表与 Auto-Test 页面中Task Type必须选择RS School App Test后端据此以TaskType.SelfEducation存储见 task.ts 的枚举定义Discipline选择与课程相关的学科Discipline用于归类和筛选Tags可选。设置标签以标明该题与课程的哪个知识点相关例如javascript、html/css等Description URL任务描述的外部链接JSON Attributes核心配置把包含测试设置、题目与答案的 JSON 内容整体粘贴进来完整格式见下文四、JSON Attributes 详解提示JSON Attributes 中的题目结构直接决定了学生端作答表单的渲染方式。前端组件会按multiple字段选择渲染单选还是多选见 SelfEducation.tsx因此务必保证 JSON 结构合法、字段完整。三、将测试任务挂载到具体课程Course Tasks 页面全局任务创建完成后还需要把它挂载到目标课程上学生才会看到该任务在课程菜单中进入Course Tasks页面同样点击Add Task按钮再次填写课程维度的任务配置并保存字段说明Task选择上一步刚创建的全局任务Task Type选择RS School App TestChecker选择Auto-Test表示由平台自动判分而非人工检查Task Owner该任务的负责人Start Date – End Date任务下发时间与截止时间DeadlineScore学生可获得的该任务最高分后端以此作为maxScore参与计算Score Weight任务权重默认1。此值由课程管理者后续统一修正教练在创建任务时请勿修改说明Score Weight属于课程管理层面的调分手段教练创建任务时保留默认值即可避免干扰课程统一的评分口径。四、验证任务是否配置成功Auto-Test 菜单任务添加完成后回到课程菜单进入Auto-Test页面即可看到当前课程下所有 Self-Education 类型任务后端 AutoTestService.getAll 会按TaskType.SelfEducation过滤并关联课程信息返回在 Auto-Test 页面的下拉列表中选择刚创建的测试检查题目渲染、得分与尝试次数提示是否正常前端 Auto-Test 页面由 client/src/modules/AutoTest/pages/AutoTests/AutoTests.tsx 承载任务卡片通过 TaskCard 展示阈值与得分信息例如当学生分数未达到tresholdPercentage时卡片会标记为未通过见 TaskCard.tsx。五、JSON Attributes 详解决定测试评分规则的核心配置JSON Attributes 是整个自测功能的关键。它分为public对学生可见/参与判分的公开配置与answers标准答案两大块。5.1 参数说明参数含义与取值规则strictAttemptsMode严格模式开关默认开启true。为false时关闭严格模式。严格模式下达到最大尝试次数后学生不得再提交得 0非严格模式下学生可以无限次提交但超过最大次数后最终得分减半maxAttemptsNumber最大尝试次数。严格模式下提交次数达到该值后学生本次任务直接得 0非严格模式下超过该次数后每轮得分除以 2numberOfQuestions题目数量必须等于answers数组长度也等于public.questions数组长度否则后端计算的正确率基数会出错tresholdPercentage通过阈值百分比原文拼写即如此。学生正确率需达到该百分比任务才算通过否则得 0 并消耗一次尝试机会oneAttemptPerNumberOfHours提交限流设为正整数时限制为每 N 小时仅可提交 1 次默认 0 表示关闭该限制public.questions题目与选项数组。每道题含question题干、answers选项数组、multiple是否多选设为true渲染为复选框answers标准答案数组元素为正确选项的下标单选为单个数字多选为数字数组顺序必须与public.questions一一对应注意学生重新提交后最终得分为最后一次提交获得的分数——也就是说即使之前的提交拿了高分最后一次提交也可能得 0最终成绩按最后一次记录。5.2 完整示例以下是一个包含单选、多选的标准 JSON 配置{ public: { tresholdPercentage: 70, numberOfQuestions: 10, maxAttemptsNumber: 2, strictAttemptsMode: false, questions: [ { question: Do you like html?, answers: [Yes, No, Maybe], multiple: false }, { question: What is css?, answers: [Cascade style sheets, cosmic super solutions, cool super stuff], multiple: true }, { question: What is not a css selector?, answers: [div, div, a.a, pdiv], multiple: true } ] }, answers: [ [0], [0, 2], [0, 3] ] }示例中的判分逻辑第 1 题为单选正确选项下标为0Yes第 2 题为多选正确选项为[0, 2]即第 0 项和第 2 项第 3 题为多选正确选项为[0, 3]numberOfQuestions在示例中填了10但只列了 3 道题——实际使用时必须把该值改为与题目数量一致的数值否则正确率基数100 / numberOfQuestions会与真实题数不符。5.3 判分算法与参数如何被后端消费后端 verifySelfEducationAnswers 完整实现了上述参数的全部逻辑提交合法性校验答案数量不能超过题目总数且不能为空所有答案值必须是非负整数题目下标必须在answers范围内且不能重复self-education.service.ts。次数与限流判定oneAttemptPerNumberOfHours通过对比上次提交时间与当前时间的小时差实现isNextSubmitAllowed严格模式下attempt maxAttemptsNumber直接抛出ForbiddenException禁止再提交self-education.service.ts。答案比对多选答案先排序再以|连接成字符串进行比较serializeAnswers保证选择顺序不影响正确性判定。得分计算correctAnswersPercent round(100 / numberOfQuestions * correctAnswersCount)若正确率低于tresholdPercentage则得 0 分否则score floor(maxScore * correctAnswersPercent * 0.01)非严格模式下若attempt maxAttemptsNumber得分再floor(score / 2)self-education.service.ts。写库与计分保存TaskVerification记录含答案明细并调用WriteScoreService.saveScore把最终得分写入课程成绩self-education.service.ts。该流程在 task-verifications.service.ts 中对TaskType.SelfEducation分支触发。以上规则均有对应的单元测试覆盖可参见 self-education.service.test.ts如严格模式达到上限抛异常、非严格模式减半得分、oneAttemptPerNumberOfHours为 0 时不限流等用例。5.4 前端如何解释这些参数学生体验侧学生作答页会先对题目做随机打乱再按numberOfQuestions截取展示SelfEducation.tsx因此同一任务每次进入题目顺序可能不同每道题按multiple渲染为单选Radio.Group或多选Checkbox.Group答案以选项下标为提交值SelfEducation.tsx提示文案剩余尝试次数、通过阈值、限流倒计时由 useAttemptsMessage.ts 统一生成例如非严格模式下提示After limit attempts is over you can get only half of a score.设置了oneAttemptPerNumberOfHours时会额外提示only one attempt per N hours其测试用例见 useAttemptsMessage.test.ts任务卡片会展示最大尝试次数、严格模式开关与阈值达成状态AutoTestTaskCard.tsx。5.5 进阶带图片的题目题目与选项均支持图片形式仓库中对应的功能扩展见 PR #798 描述题干图片在题目对象中添加questionImage字段值为图片 URL渲染时显示在题干下方SelfEducation.tsx选项图片将answersType设为image并把answers数组中的元素替换为图片 URL选项会以图片形式展示SelfEducation.tsx。类型定义可参考 client/src/services/course.ts 中的SelfEducationQuestionquestionImage?: string; answersType?: image对应渲染测试见 SelfEducation.test.tsx。六、功能演进参考PR / Issue以下历史改动展示了该功能能力的扩展脉络可帮助你判断当前实例支持的配置范围基础示例首个支持RS School App Test任务类型与 JSON Attributes 的 PR包含上述判分逻辑的雏形对应本文 5.2 节示例题目/选项图片支持为题目与选项增加图片展示能力对应 5.5 节按小时限制提交次数引入oneAttemptPerNumberOfHours参数用于限制每小时提交次数对应 5.1 节参数表。七、常见问题与排错建议现象可能原因与处理学生端题目数量与预期不符numberOfQuestions与public.questions数组长度不一致或前端按numberOfQuestions截取了随机题目请核对 JSON 中两者数值学生提交后被拒绝Forbidden严格模式下尝试次数已达上限或oneAttemptPerNumberOfHours限流未到期见 useAttemptsMessage.ts 中allowStartTask的判定得分低于预期检查tresholdPercentage是否过高非严格模式下超过maxAttemptsNumber后得分强制减半Score字段决定任务最高分多选答案判错确认answers中多选的下标数组与public.questions中该题的选项顺序一致下标从 0 开始创建任务后 Auto-Test 页面看不到确认该任务Task Type为 RS School App Test 且已挂载到当前课程Course Tasks后端仅返回TaskType.SelfEducation且有关联课程的任务赞分享教育后端前端【免费下载链接】rsschool-appAn application for the RS School education process项目地址https://gitcode.com/gh_mirrors/rs/rsschool-app点击查看免费下载相关推荐speed-test高级配置指南自定义服务器和测试参数详解speed test高级配置指南自定义服务器和测试参数详解 speed test是一款强大的命令行工具能够帮助用户通过speedtest.net测试互联网连开发工具miniblink49 内置 Google Test 示例详解从 TEST 宏到参数化测试与监听器 APIv8_6_7 测试套件miniblink49 内置 Google Test 示例详解从 TEST 宏到参数化测试与监听器 APIv8_6_7 测试套件 在 miniblink4前端桌面应用Gcovr深度解析现代C/C代码覆盖率报告的架构设计与实战指南Gcovr深度解析现代C/C代码覆盖率报告的架构设计与实战指南 在持续集成和代码质量保障体系中代码覆盖率分析是不可或缺的一环。对于C/C项目而言传上一篇Gemma-4-12B-it API完全指南从文本生成到函数调用的全场景代码示例下一篇告别AI上色偏色Style2Paints色彩平衡全攻略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

单片机毕设项目:基于 STM32 或 51 单片机步进电机驱动防盗智能遮阳系统设计 基于 STM32 或 51 单片机多传感语音交互智能晾衣架控制系统设计(025608) 2026/11/10 17:32:17

单片机毕设项目:基于 STM32 或 51 单片机步进电机驱动防盗智能遮阳系统设计 基于 STM32 或 51 单片机多传感语音交互智能晾衣架控制系统设计(025608)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

阅读更多 →
OpenCV dnn_superres 模块实战指南:EDSR / ESPCN / FSRCNN / LapSRN 四种 CNN 超分辨率模型从编译、推理到基准测试 2026/11/5 14:06:44

OpenCV dnn_superres 模块实战指南:EDSR / ESPCN / FSRCNN / LapSRN 四种 CNN 超分辨率模型从编译、推理到基准测试

计算机视觉图像处理深度学习机器学习 【免费下载链接】opencv_contrib Repository for OpenCVs extra modules 项目地址: https://gitcode.com/gh_mirrors/op/opencv_contrib 点击查看 免费下载 dnn_superres 是 OpenCV contrib 扩展库中专门用于"基于卷积神经…

阅读更多 →
openJiuwen Agent Store 进阶实战:用 TomatoReviewer 多智能体架构打造 PEP 驱动的 Python 代码审查工具 2026/10/7 17:38:18

openJiuwen Agent Store 进阶实战:用 TomatoReviewer 多智能体架构打造 PEP 驱动的 Python 代码审查工具

openJiuwen Agent Store 进阶实战:用 TomatoReviewer 多智能体架构打造 PEP 驱动的 Python 代码审查工具 【免费下载链接】agent-store openJiuwen agent-store承载基于openJiuwen构建的智能体,欢迎各路英豪发挥想象力,积极贡献 项目地址: …

阅读更多 →

最新相关资讯

【外设】之大彩串口显示屏 2026/11/10 4:49:37

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/9 8:37:19

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/10 9:14:31

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/10 1:10:29

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/10 15:15:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉