1.4 课题的研究思路
本文以 Java 编程题为例,结合人工评阅的方法,对不同的考生程序采用不同的评分方法。考生的程序大致可分为两种情况: 可以通过编译和无法通过编译。
第一种情况,对于可以通过编译的考生程序,利用 Java 反射机制提取考生程序的相关信息进行黑盒测试。反射机制可以轻松提取考生程序中与输入有关的变量或对象属性,系统根据变量或对象属性的数据类型给定输入值,然后调用具有返回值的方法来验证该方法的输出结果是否与预期的输出值一致,给出测试分,再结合语法分、结果分,计算出总得分。该评分方法简称为“功能性测试评分方法”。
第二种情况,对于无法通过编译的考生程序,利用本地 jdk 包中自带的编译器对考生程序进行编译,结合使用错误流获取编译的错误信息,然后使用Scanner 类来分解错误信息并进行局部错误,每纠正一个错误都要重新编译以消除虚假错误。对于纠错后能顺利通过编译的考生程序,采用“功能性测试评分方法”计算总得分。对于无法纠错的考生程序,则采取放弃纠错,根据错误种类适当给出语法分,再结合知识要点匹配情况计算总得分,称该评分方法为“知识要点匹配评分方法”。
1.5 研究目标
本文以设计出能对 Java程序进行自动评分,并且评分过程能够较合理、灵4活及评分结果与人工评分大致相符为目标。避免因极小错误或标准答案中没有给出多种可能的参考答案而导致失分严重的情况的发生。对于有极小错误的考生程序,应该采取查错并纠正错误,如果运行正确,适当扣点语法分,考生仍然
本文以 Java 编程题为例,结合人工评阅的方法,对不同的考生程序采用不同的评分方法。考生的程序大致可分为两种情况: 可以通过编译和无法通过编译。
第一种情况,对于可以通过编译的考生程序,利用 Java 反射机制提取考生程序的相关信息进行黑盒测试。反射机制可以轻松提取考生程序中与输入有关的变量或对象属性,系统根据变量或对象属性的数据类型给定输入值,然后调用具有返回值的方法来验证该方法的输出结果是否与预期的输出值一致,给出测试分,再结合语法分、结果分,计算出总得分。该评分方法简称为“功能性测试评分方法”。
第二种情况,对于无法通过编译的考生程序,利用本地 jdk 包中自带的编译器对考生程序进行编译,结合使用错误流获取编译的错误信息,然后使用Scanner 类来分解错误信息并进行局部错误,每纠正一个错误都要重新编译以消除虚假错误。对于纠错后能顺利通过编译的考生程序,采用“功能性测试评分方法”计算总得分。对于无法纠错的考生程序,则采取放弃纠错,根据错误种类适当给出语法分,再结合知识要点匹配情况计算总得分,称该评分方法为“知识要点匹配评分方法”。
1.5 研究目标
本文以设计出能对 Java程序进行自动评分,并且评分过程能够较合理、灵4活及评分结果与人工评分大致相符为目标。避免因极小错误或标准答案中没有给出多种可能的参考答案而导致失分严重的情况的发生。对于有极小错误的考生程序,应该采取查错并纠正错误,如果运行正确,适当扣点语法分,考生仍然