学生的测试答案
当您在 MATLAB® Grader™ 中创建练习题时,请定义用于评判学生答案是否符合您设定的成功标准的测试。
定义测试
要定义测试,您可以使用测试类型列表中提供的预定义测试,也可以编写自己的 MATLAB 代码。预定义测试选项包括:
变量等于参考答案 - 检查变量的存在性、数据类型、大小和值。此选项仅在脚本练习题的测试类型列表中可用。默认容差
1e-4适用于数值。函数或关键字存在 - 检查是否存在指定函数或关键字。
函数或关键字缺失 - 检查学生答案中是否未包含指定函数或关键字。
例如,如果您希望学生使用 taylor 函数来计算给定函数的泰勒级数逼近值,请指定以下选项:
在测试类型列表中,选择函数或关键字存在。
将
taylor函数指定为学生必须使用的函数。可以选择指定学生在未使用预期函数时收到的补充反馈。

对于脚本练习题,您可以使用预定义测试类型变量等于参考答案来评判变量。例如,通过将某个变量与参考答案中具有相同名称的变量进行比较,评判该变量的大小是否合适,以及是否具有期望的值和数据类型。

您还可以通过在测试类型列表中选择 MATLAB 代码选项来编写 MATLAB 代码。请遵循以下规范:
评判正确性 - 您可以使用与预定义测试类型对应的函数:
assessVariableEqual、assessFunctionPresence和assessFunctionAbsence。您也可以编写针对错误结果返回错误的自定义测试。脚本练习题中的变量名称 - 要引用参考答案中的变量,请添加前缀
referenceVariables,例如referenceVariables.。要引用学生变量,请使用变量名称。myvar函数练习题中的函数名称 - 要调用练习测试中的参考答案,请添加前缀
reference,例如reference.。要调用学生函数,请使用函数名称。myfunction变量作用域 - 您在测试代码中创建的变量仅存在于练习测试内。
例如,假设学生必须计算变量 X 的值,该值的变化可能会超出默认容差。要将学生答案中的值与参考答案中的值进行比较,请通过调用 assessVariableEqual 函数来指定变量和容差。

要测试函数练习题,请使用测试输入调用学生函数和参考函数,并比较输出。例如,以下代码检查名为 tempF2C 的学生函数是否正确地将温度从华氏度转换为摄氏度。
temp = 78;
tempC = tempF2C(temp);
expectedTemp = reference.tempF2C(temp);
assessVariableEqual('tempC',expectedTemp);
提示
来自 assessVariableEqual 函数的默认错误消息包含被测变量的名称,例如上述示例中的 X 和 tempC。对于函数练习题,此变量在练习测试脚本中,而不在学生代码中。请使用学生可识别的有意义的名称,例如函数声明中的输出。
单项练习测试可以包含多项测试。例如,以下代码检查学生是否实现了一个名为 normsinc 的函数,该函数可以正确处理零值和非零值。零值情况包括使用 assessVariableEqual 函数中的 Feedback 名称-值参量向学生提供额外反馈。
nonzero = 0.25*randi([1 3]); y_nonzero = normsinc(nonzero); expected_y_nonzero = reference.normsinc(nonzero); assessVariableEqual('y_nonzero',expected_y_nonzero); y_zero = normsinc(0); expected_y_zero = reference.normsinc(0); assessVariableEqual('y_zero',expected_y_zero, ... Feedback='Inputs of 0 should return 1. Consider an if-else statement or logical indexing.');
提供部分学分
默认情况下,如果所有测试均通过,则软件会将答案视为正确;如果有任何测试失败,则将答案视为错误。要提供部分学分,请将评分方法更改为加权评分,从而分配测试的相对权重。MATLAB Grader 会根据相对权重的总和计算每项测试的百分比,因此,您可以将权重定义为分数或百分比。
例如,若将所有测试的相对权重设置为 1,则会为每项测试分配相等的权重。如果将一些权重设置为 2,则这些测试的权重是权重设置为 1 的测试的两倍。

您也可以输入权重的百分比。

指定自测
自测是练习测试,学生可以运行这些测试来确定他们的答案是否正确,然后再提交进行评分。当多种方法正确但您的测试需要特定方法时,或者当您为作业设置了提交次数限制时,请考虑使用自测来指导学生。
自测与常规练习测试有以下不同之处:
在提交之前,自测结果不会记录在成绩簿中。
运行自测不计入提交次数限制。
无论测试是通过还是失败,学生都可以查看自测代码和详细信息,包括 MATLAB 代码测试的输出。请确保自测不包含练习题答案。
与常规练习测试一样,自测在学生提交答案时运行,并且会影响最终成绩。
例如,假设学生必须定义一个可以用多种方式组织的线性方程组。可以定义一项自测来确保学生答案具有期望的阶数和系数。

如果测试失败,学生会看到错误,并可以修改答案。

控制脚本练习题的错误显示
在脚本练习题中,初始错误可能会导致后续错误。您可以鼓励学生首先关注初始错误。
默认情况下,如果选择仅对初始错误显示反馈选项,系统会对初始错误显示详细反馈,而对后续错误隐藏详细信息。学生可以通过点击显示反馈来显示该额外的反馈。
