可执行程序,能够进行强大的操作系统内核功能调用, 运行速度极快。 2.2.4 黑盒测试[71 黑盒测试又称功能测试、数据驱动测试。把程序看 作一个黑盒子,在不考虑程序内部结构情况下,测试者 在程序接口进行测试,检查程序是否接收预设的输人 数据而产生正确的输出信息。本训练系统只检查用户 程序是否达到预定的功能,无需考虑程序的实现逻辑。 学生的发散思维也可得到培养。 3 系统运行逻辑 由于系统要运行用户的可执行程序,因此安全性 要提到最高级别,防止用户编写恶意代码攻击服务器。 本系统的核心判题部分的设计和运行逻辑步骤如下所 示。 ①用户提交源程序,训练系统从Apache接管数 据。 ②创建子进程,初始化,对进程的错误输出和标准 输出进行重定到文件,根据用户源程序所使用的语言, 调用相应的编译器并设置参数,编译用户源程序,等待 并监控编译程序结束。 ⑧如果编译器结束编译,没有生成可执行文件,表 示编译出错,则输出相关编译错误信息,提示用户排 错。转@;如果编译器产生输出文件,转④。 ④启动进程会计,创建子进程,设置进程资源(对 进程最大输出数据大小、允许打开的文件数、执行时 间、执行内存、执行堆栈、权限等进行设置限制),重定 向标准输入到测试文件,重定向标准输出到用户输出 文件,运行用户程序,等待子进程结束,结束进程会计。 ⑤监控用户程序运行,如果用户程序正常结束并 产生输出文件,转⑦;如果捕获到信号,转⑥。 ⑥根据信号类型(如超时、运算错误、异常终止、过 量输出等,见表1),反馈相应错误信息,把用户的尝试 追加到历史记录,鼓励用户再接再厉。转⑥。 ⑦调用比较模块比较用户输出文件与标准答案文 件。根据一定的匹配规则,如果用户文件与答案文件匹 配,转⑧;否则转⑩。 ⑧读取进程会计信息,取得时间和内存消耗,计算 排名,并输出时间、内存和排名作为参考。 ⑨根据用户的历史记录,按照教师设定的教学计 划,引导用户解决下一任务或问题。转⑩。 ⑩反馈结果错误信息,把用户的尝试追加到历史 记录,鼓励用户再接再厉。 ⑩释放进程资源,结束运行。 4 结束语 设计并开发了一个自动化的程序设计训练系统,该系统适合高职高专院校计算机程序设计教学的训练 平台。经实际运行,可有效提升学生的编程能力。 |