一种代码自动化校验方法和系统与流程

文档序号:14249358阅读:1008来源:国知局
一种代码自动化校验方法和系统与流程

本发明属于计算机软件技术领域,涉及一种代码自动化校验方法和系统。



背景技术:

自动检测技术已经得到广泛应用,其不仅能够减轻工作人员工作压力,而且可以减少人们对检测结果有意或无意的干扰,避免受到主观因素影响。

然而现有的代码校验方法都是人工校验,纯手工浪费人力,且经常包含人的主观因素并非客观。

人工校验存在的问题:基于人工校验的信息,经常包含人的误差影响,

校验特点:对未通过测试的代码自动进行重复测试,从而有效减少误差,提高测试效率,

降低对服务器资源的请求次数,减轻服务器压力。



技术实现要素:

针对现有技术中存在的技术问题,本发明的目的在于提供一种代码自动化校验方法和系统。

本发明的技术方案为:

一种代码自动化校验方法,其步骤包括:

1)服务器接收客户端发送过来的题目信息及代码;其中,每一题目设置若干得分点和对应的测试脚本;

2)服务器根据收到的题目信息对收到的对应代码进行检测,判断该代码中的各得分点信息与对应的设定值是否匹配,并根据匹配结果给出对应的分值;

3)服务器运行该代码,并根据运行结果给出对应的分值;然后根据匹配结果对应的分值和运行结果对应的分值确定该代码的得分。

进一步的,所述客户端设置一防作弊系统,用于检测客户端的鼠标坐标数据是否超出编辑器窗口;如果超出一次,则视为一次作弊并将所述代码的输入过程中产生的作弊次数发送给所述服务器。

进一步的,所述服务器根据该代码对应的作弊次数、匹配结果对应的分值和运行结果对应的分值确定该代码的得分。

进一步的,所述运行结果包括运行时间、运行占用的内存、运行出错的次数;根据所述运行结果中的各项信息与对应预期值进行比较给出对应的分值。

进一步的,根据匹配结果给出对应的分值的方法为:判断该代码中的方类名,法的名称、方法的返回值以及方法的返回值类型是否与对应的设定值匹配,对于匹配的项给出对应的分值。

一种代码自动化校验系统,其特征在于,包括客户端和服务器;其中,

所述客户端,用于接收用户根据题目信息输入的代码,并将题目信息及代码发送给服务器;其中,每一题目设置若干得分点和对应的测试脚本;

所述服务器,用于根据收到的题目信息对收到的对应代码进行检测,判断该代码中的各得分点信息与对应的设定值是否匹配,并根据匹配结果给出对应的分值;以及用于运行该代码,并根据运行结果给出对应的分值;然后根据匹配结果对应的分值和运行结果对应的分值确定该代码的得分。

本发明主要具有以下优点:

1、通过反射字节码读取配置文件,根据客户端和服务器定义一种交互协议,从而进行识别检测程序,保证了检测正确性。

2、在考试系统的程序检测中,通过重复检测得分点,有效的减小程序误差。

本发明不仅能自动完成校验、数据处理、显示(输出),而且更好地利用资源,将繁琐的任务自动化,还可以解决执行一些手工校验困难或不可能进行的检验。

本发明可以解决同时支持任何规模的考试,系统对于数据的录入的问题,体现教学的双边性和互动性的问题;智能检测系统减少了老师改卷过程中的人力成本、提升了教学本质。

附图说明

图1为本发明核心业务逻辑图;

图2为被测学员的输出代码检测流程图;

图3为本发明的系统架构图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。

一:检测系统架构分析

1、采用c/s技术结构,加入网页前端技术,题目通过网页来实现,但主要业务逻辑在服务器端(server)实现。这样就大大简化了客户端载荷。

2、减轻了系统维护与升级的成本和工作量,完全适应网络控制和移动控制需求。

二:本发明的系统框架如图3所示,其包括人机交互系统、远程服务器系统、控制系统、客户端自动化验证装置、检测系统和防作弊系统。本发明核心业务逻辑如图1所示。

控制系统:自动检测系统的核心,由云端服务器组成。它是在检测程序的作用下,对代码的每一步骤进行控制。

本发明的方法流程如下:

1:先用kotlin语言根据试题的内容,通过io流写入的方式,来生成模版文件,模版文件的作用是让学生在此基础上进一步编写代码。

2:基于开源的idea来改写编辑器,使它可以限制学员编写代码的区域;但是并不能限制鼠标的范围。

3:对学员根据题目设定编写的代码进行编译运行得到结果。

4:执行根据题目设定的测试脚本,比对结果的正确性。

5:将比对信息展示给学员。

防作弊系统:用户进入考试界面后,实时检测学员考试系统,判断学员鼠标是否移出考试系统。一旦鼠标移出考试系统三次,视为作弊。

在编辑器里面鼠标是有一个坐标数据,如果坐标数据超出编辑器窗口矩形的范围。认为移出一次。

人机交互系统:实现学员和服务器的双向通信。学员用键盘向服务器输入信息,服务器将检测结果及操作提示等有关信息送到显示器显示。

检测系统:自动检测系统是进行性能检测和故障诊断的。检测程序完成人机交互、仪器管理和驱动、检测流程控制、检测结果的报表显示等,具体在第三条详述。

三:检测系统:检测被测学员的输出代码,如图2,该方法步骤包括:

1、记录学员编写代码。分析学员代码输出,学员通过人机交互系统在电脑客户端,根据题目信息进行代码输入,然后会直接把代码提交给服务器,服务器就能接收学员所有信息,并进行数据库的持久化操作。

2、通过反射字节码自动检测程序,确定得分点。

反射字节码自动检测:学员提交完成代码输出之后,服务器收到提交信息会根据题目要求对代码自动检测,本发明对每一个题目都会设定若干得分点,比如方法的名称、方法的返回值类型、方法的执行结果和对应的设定值是否相匹配,会对每个得分点的分数进行权重划分,最终会作为程序的得分。

得分点是指,学员的任何一段程序本发明都会限定类名和方法名分别叫什么,如果学员编写的类名和方法名字与对应得分点的设定值不匹配,则直接会被判错误。

3、每一得分点会对应不同的分数比重,进行综合评分。

公式:max(f*10+r*60+t*10+d*10+m*10-min(c*10,30)-min(e*10,30),0)=得分;其中:

f:方法的名称,符合规范得10分,符合规范是指所有的方法名称全部匹配,只要有一个不匹配,就不得分;

r:方法的返回值,如果正确说明程序的逻辑无误,得60分;

t:方法的返回值类型,返回值类型正确即得10分;

d:程序运行时间,如果运行时间符合期望值,则得10分;

m:程序运行占用的内存,如果占用内存符合期望值,则得10分;

c:作弊的次数,作弊一次扣10分,最多纪录3次作弊;

e:程序运行出错的次数,出错一次扣10分,最多纪录3次错误。

得分:各项指标之和减去作弊和出错扣去的分,就是最后的得分,最小为0分。

4、程序代码执行完毕,检测结果分析处理和输出显示生成检测报告。

学生使用本发明系统编写代码,编码过程中的代码提示,编译运行结果,评分机制,报表生成机制都是一体化自动化执行的,不需要学员进行额外的操作,学员只需要根据题目进行编写代码。

5、收集分析被检测对象行为数据,将没有通过检测的错误案例,按照规范生成数据,存到数据库。

行为数据:学生编码的作弊数据,运行结果数据,代码实现的行数,代码执行的时长。

作弊数据:一旦检测到作弊数据即在本地进行数据库存储。

运行结果数据:学生代码运行完毕之后,将结果数据进行本地数据库存储。

代码实现的行数:读取代码文件,根据回车换行符的数量,计算代码共有多少行,然后进行本地数据库存储。

代码执行的时长:当学员运行代码的时候,本发明先记录一个时间点,然后执行学员代码,

代码执行完毕在记录一个时间点,相减即可得到代码运行时长。

6、将错误案例的用户名做为键,同一个用户的错误案例集文件作为值存储到一个全局的哈希数组。

保存用户数据可以用来生成用户的检测报告,方便用户查看考试系统的明细。

7、将上述步骤完成动态生成结果同步至云端。

本发明通过服务器系统模块获取学员的源代码,确定程序的得分点进行匹配是否得分。根据反射匹配作业代码的得分点。输出作业程序明细。

本发明根据远程服务器系统收集到被检测代码,进行检测结果的分析和处理,所述作业程序明细进行存储并持久化到数据库。

本发明中所有的得分点会通过检测控制流程模块进行检测,所有的得分点会通过检测控制流程模块进行检测,通过反射不匹配得分点,则不会通过代码检测;所有得分点匹配完成后,会对代码进行错误判断和检测程序的性能进行检测。

检测系统模块检测完毕之后,会把结果交给控制系统,控制系统在根据具体情况分发给学员。

控制系统把学员代码检测的结果通过人机交互系统展现到学员客户端,这样学员就可以查询被检测程序的明细。

与现有技术相比,本发明可以实现自动检测转化,实现对错误案例进行重复检测,减小误差,降低成本,减轻服务器检测压力。

以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1