Читайте также:
|
|
На рисунке 1 показана диаграмма взаимодействия компонентов системы T-BMSTU. Пользователь взаимодействует через Web-браузер по протоколу HTTP с Web-сервером, который обеспечивает вход пользователя в систему, отображение списка имеющихся в системе задач, показ условия выбранной задачи, отправку решения на один из серверов тестирования и отображение вердикта системы тестирования.
Рис. 1 – Диаграмма взаимодействия компонентов системы
Web-сервер имеет базу задач, составляемую преподавателем. Задача представляет собой совокупность условия в формате HTML и проверочных данных. Проверочные данные в простейшем случае представляют собой набор тестов. Под тестом мы будем понимать вариант входных данных, на которых должно быть запущено решение, предоставляемое пользователем. Каждый тест может сопровождаться правильным ответом, с которым сравнивается результат выполнения решения. Если проверочные данные не содержат правильных ответов, то вместо ответов допускается включать в проверочные данные эталонное решение. В этом случае подразумевается, что для каждого теста сервер тестирования будет запускать решение пользователя и эталонное решение, а затем сравнивать результат выполнения обоих решений. Кроме этого, поддерживается возможность включения в проверочные данные генератора тестов, который представляет собой программу, запускаемую на сервере тестирования и порождающую набор тестов. В случае наличия генератора проверочные данные могут вообще не содержать ни одного теста.
Каждое решение, отправляемое Web-серверу пользователем, сохраняется в базе решений. Преподаватель имеет возможность изучения базы решений. В будущем в систему T-BMSTU планируется встроить автоматический детектор плагиата, который будет работать с базой решений, сравнивая между собой решения одной и той же задачи, присланные разными пользователями, и обнаруживая похожие решения.
Для проверки решений Web-сервер взаимодействует с одним или несколькими серверами тестирования. Получив решение от пользователя, Web-сервер отправляет это решение и, если нужно, проверочные данные на один из подключённых к нему серверов тестирования. Сервер тестирования прогоняет решение через тесты, содержащиеся в проверочных данных или сгенерированные генератором тестов, сравнивает результаты выполнения решения с правильными ответами и выносит вердикт.
Так как проверочные данные могут быть весьма велики (десятки мегабайт для одной задачи), нецелесообразно пересылать их всякий раз вместе с решением. Вместо этого на каждом сервере тестирования расположен кэш задач, в котором хранятся проверочные данные ко всем задачам, решения которых проверялись когда-либо на этом сервере. Web-сервер отправляет проверочные данные задачи только по запросу сервера тестирования, когда тот обнаруживает, что данная задача отсутствует в его кэше.
На одном компьютере с сервером тестирования должны быть установлены компиляторы всех языков, на которых могут быть написаны решения. В данный момент поддерживаются три языка: ANSI C, C++ и Go. В ближайшем будущем планируется добавление поддержки языков Pascal и Java. Получив очередное решение, сервер тестирования запускает нужный компилятор и, в случае успешной компиляции, получает исполняемый файл, который помещается в так называемую «песочницу». «Песочница» представляет собой защищённую площадку для безопасного управляемого запуска решений. Перед каждым запуском в «песочницу» помещается один из тестов, а после выполнения решения из «песочницы» же извлекается результат работы решения. «Песочница» обеспечивает завершение выполнения решения в случае исчерпания лимита по времени или по памяти, не даёт запускаемой программе обращаться к файловой системе компьютера, на котором работает сервер тестирования.
Дата добавления: 2015-08-21; просмотров: 52 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Введение | | | Структура задачи |