ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

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

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),仅供参考
返回列表