测评系统揭秘
——从发展到智能应用

2022-11-07 06:12
中国信息技术教育 2022年21期
关键词:测试数据评测程序设计

编者按:提到测评系统,很容易想到的是输入一个选项就会得到一个评判结果。事实上,随着计算机技术和用户需求的不断发展,人们对测评系统的要求也越来越多,已经不再停留在简单客观题目的评判。本期,我们来了解测评系统的发展过程,特别是人工智能技术的应用。

主持人:

倪俊杰 浙江省桐乡市凤鸣高级中学

嘉 宾:

刘宗凡 广东省肇庆市四会中学

邱元阳 河南省安阳县职业中专

金 琦 浙江师范大学附属中学

杨 磊 天津市第五中学

虞颖健 浙江省海宁市第一中学

倪俊杰:在线测评系统(Online Judge System,简称OJ系统)作为一种采用黑盒测试原理进行计算机程序正确性判断的自动化程序,越来越受到人们的追捧。这一期,我们先继续探讨有关程序设计OJ系统的话题,接着探讨测评系统以及智能技术的应用。

程序设计OJ系统的发展

虞颖健:OJ系统最早是1995年的UVa(University of Valladolid)系统,来自于国际大学生程序设计竞赛(ACM/ICPC)。在计算机类的在线评测系统中,一般包含各种不同的考题类型,如填空题、选择题和需要编写程序代码的主观题。OJ系统广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习及作业的自动提交判断。

国外对在线评测系统的研究起步较早。1999年,英国华威大学开发的BOSS系统可以对学生通过Web提交的程序进行评改。该系统需要提前准备测试数据集,并将每组测试数据输入,然后将测试输出与期望结果进行比对。该系统的主要优点是将各个功能模块独立开来,避免了单个

模块出现故障后影响其他功能模块的正常运行。2002年,英国Open College系统正式上线,该系统是英国政府和大学合作开发的一款在线学习和测评系统,每年有百万左右的英国人通过在线学习和考试获得相关行业的专业证书。美国加利福利亚大学的PC2系统是目前最具影响力的程序评测系统之一,其提供编程竞赛控制、阅卷、计分等功能,支持绝大多数的编程语言。PC2系统采用Java语言编写,几乎可以适用于任何机器环境,能够极大地提高教师在竞赛和考试中的效率。澳大利亚的马丁·多格玛斯(Martin Dougiamas)博士主持开发的Moodle网络教育平台系统,因为功能强大而享誉中外,并且完全免费,易于安装,发展迅速。

刘宗凡:国内的在线评测系统发展迅速,2002年以来许多高校和重点中学建立了面向竞赛的在线编程评测平台。较为知名的有北京大学的POJ、华中科技大学的HUSTOJ、杭州电子科技大学的HDU、浙江大学的ZOJ、湖南师大附中的OJ、学军中学的OJ等,高校或重点中学将这类在线评测系统应用于课外教学培训,提供给学生进行自主练习,以弥补课内编程教学的不足。

我国的一些高校,编程类的期末考试已经开始使用OJ,相对传统的纸质试卷方式,使用在线评测系统不仅方便快捷,而且省时省力。随着信息化教育的不断深入,越来越多的考试形式转移到了网上,OJ系统在我们的日常生活中扮演着越来越重要的角色。

如何使用程序设计OJ系统

倪俊杰:在线评测系统大多是基于B/S架构的程序,它运行在服务器上,学生或者评测者通过浏览器就可以进行编程类题目的评测,直接通过网页提交程序源代码,并不需要在本地安装系统。虽然OJ系统有多种类型,平台架构与开发技术也存在差异,但对于程序设计类的OJ系统,其使用方法大致相同。

邱元阳:的确如此,我们可以从测试类型和评测结果来了解。

第一,程序数据测试类型。①测试样例。题目中给出的测试样例一般都是非常简单的实例,仅凭样例难以测出程序的完整性能。但是,OJ系统后台有着大量的测试数据,其中包含一些极限情况,如数据小于0等特殊情况,以考查编程者的思维完整度;还有超大数据(指规模n很大的测试数据),以考查程序的时间复杂度等。因此,通过简单的样例并不意味着此题能得满分,样例只是一个示范。②单点测试。后台的测试数据是放在一个数据文件中的,其中有n组不同的测试数据。单点测试要求代码只需要处理一组数据输入即可,OJ系统通过n次运行该代码实现对n组数据的测试,如PAT就是采用单点测试。③多点测试。要求代码能循环处理完所有的测试数据,即OJ系统只运行一次代码实现对n组数据的测试,如CSP、codeup都采用多点测试。

第二,常见评测结果,OJ系统会有各种反馈,主要包括下列情形:①Accepted正确通过;②Compile Error编译错误(选错语言/头文件/语法等);③Runtime Error运行时错误:内存非法访问(指针指向非法内存区,数组越界等)、递归爆栈、浮点运算错误(除数为0,模数为0);④Wrong Answer答案错误:程序逻辑问题、多输出了调试信息;⑤Presentation Error格式错误:已经极为接近Accepted,一般是多输出了换行或空格符;⑥Time Limit Exceeded运行超时:检查数据规模与时间复杂度;⑦Memory Limit Exceeded内存超限:不能在函数内部开过大的局部数组,大数组应在全局区开辟;⑧Output Limit Exceeded输出超限:死循环输出过多内容。

搭建一个程序设计OJ系统

倪俊杰:那么,我们能不能自己搭建一个OJ系统呢?现在OJ系统也有很多是集成的,可以根据需要自己搭建。

金琦:是的,下面以青岛OJ为例介绍如何搭建OJ网站系统。在搭建之前,先简要介绍docker。docker是Docker Lnc公司开源的一个基于LXC(Linux Container)技术搭建的Container容器引擎,诞生于2013年。Docker的主要特点包括更高效的系统资源利用、更快速的启动速度、一致的运行环境、更轻松的迁移。

首先,网站服务器配置,可以购买云空间服务。使用Termius软件注册后开始配置主机。在服务器上新建一个“qingdaoj”的文件夹,存储OJ系统。

docker-compose up -d

最后,通过浏览器访问服务器HTTP 80端口或HTTPS 443端口,就可以查看OJ系统。如果需要汉化,也可以通过修改配置文件改成中文格式。

文件自动测评技术

倪俊杰:除了针对程序的测评系统,还有很多面向文件的测评系统,尤其是针对Office文件的自动测评技术,在文件校验、技能测评、教学考试等领域发挥了重要的作用。

金琦:操作类文件的自动测评,其难点在于不仅要校验结果文件,还要匹配分析过程性记录数据。大部分应用型软件提供了可编程接口(自动化接口),利用这些接口可以获取相关的信息。例如,可以利用VBA(全称Visual Basic for Application,是由微软公司开发的新一代标准宏语言)控件技术实现对Office文件的自动测评。这种技术也广泛用于Office操作的自动评测,如技能水平考试中。这种技术比较适合B/S架构,任何用户只需在浏览器中输入网址即可使用系统,不需要在客户端安装软件。

邱元阳:Office文件测评系统,可以设计成四层结构方式,如展示层(网页端)、逻辑层(.NET程序集)、宏比对层(Office VBA)、数据库层(数据库系统)。这种方式具有良好的扩展性,若要对操作题进行修改则只需修改操作步骤并修改对应标准文件宏代码即可。除了VBA,还可以借助OLE(Object Linking Embedding)技术来实现文件自动测评。这是一种微软系统中的进程交互通信机制,实际上就是一个编程接口,是面向对象实现嵌入与链接的最佳方案,也是Windows应用程序之间互相操纵的一种技巧。其主要目的是为一些功能强大的软件设计一个标准接口,可以让应用程序通过对象的方式来使用Office软件的对应功能。

人工智能测评系统应用

倪俊杰:计算机技术与人工智能的发展为测评领域注入了新的活力,推动了智能化测评的产生。

虞颖健:在软件测试领域中,人工智能(AI)增加了自动响应外部输入和实时变化的功能。自动化应用程序测试可以加速验证和确认代码。例如,可以将人工智能添加到组合中,使发现和修复错误变得更快,更容易。随着软件复杂性的增加,自动化也必须进行扩展,以提供更多的功能,在工作流程中更早地识别和解决问题。

邱元阳:在视力测评系统中,美国斯坦福大学计算机科学家克里斯·皮奇(Chris Piech)和他的同事开发了一种人工智能(AI)在线视力测试系统。该系统的测试诊断结果比传统的字母表测试更准确。用户只需打开网页(https://myeyes.ai/),通过校准屏幕大小、输入与屏幕的距离即可进行测试,测试过程中可以运用四个方向键来判断字母“E”的方向。该算法会根据每一个答案,使用统计数据对下一次显示的字母大小进行调整。随着测试的进行,该算法能够对测试分数做出更准确的预测。

刘宗凡:人工智能技术在教育测评领域也有很多应用。2020年11月,华南师范大学发布了国内首个运用人工智能、大数据等技术,辅助教师能力水平提升的系统产品,即“教师能力AI测评系统”。该系统是由AI+教师能力发展实验室、教师能力测评指标体系,以及教师能力AI测评云平台三部分构成,为教师课堂教学能力进行“画像”、帮助教师进行教学反思、为教师专业发展精准助力的产学研合作产品。

实际上,关于人工智能测评系统的应用需求越来越广泛,也有专门做测评服务的机构,如中国信息通信研究院。

我们可以期待,人工智能等新型技术会给测评技术注入强大的活力,在更多领域更大范围内发挥重要的作用。

猜你喜欢
测试数据评测程序设计
基于ID3决策树算法的大学生体能测试数据管理系统设计
基于回收测试数据特点的判读方案设计与实现
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
测试数据管理系统设计与实现
基于自适应粒子群优化算法的测试数据扩增方法