Открытая система прокторинга для дистанционного сопровождения онлайн-экзаменов

    Летом прошлого года в Университете ИТМО прошел дистанционный экзамен для поступающих в аспирантуру, а в январе этого года для слушателей курсов Национальной платформы открытого образования, желающих получить подтвержденный сертификат, была предоставлена возможность пройти итоговую аттестацию по выбранному курсу под присмотром проктора. Все это было организовано на базе открытой системы дистанционного надзора, специально разработанной для этих целей. В данной статье я постараюсь провести обзор системы, а также рассказать о некоторых особенностях ее разработки.

    Дистанционный экзамен с проктором

    Система дистанционного надзора (далее СДН) предназначена для сопровождения процесса территориально удаленного прохождения экзаменов, подтверждения личности испытуемого и подтверждения результатов его аттестации. Конечно, эта система не уникальна, есть зарубежные сервисы, предоставляющие услуги дистанционного ассистирования, такие как ProctorU, Mettl Online Assessment, ProctorExam или Pearson VUE, а есть отечественный сервис Экзамус и система ProctorEdu. Однако у разрабатываемой СДН есть основное отличие — это не услуга, а программное обеспечение с открытым исходным кодом, которое может использовать в своих целях любой желающий, будь то организация собственного прокторинг-центра, проведение подтвержденных аттестаций в своей системе электронного обучения или что-то еще. Конечно, для полноценного функционирования системы нужны люди (прокторы), рабочие места с камерами и аудиогарнитурами, а также серверное оборудование и системные администраторы для развертывания и обслуживания системы. Но когда необходимая инфраструктура уже есть, остается вопрос программного обеспечения. И именно на этот вопрос дает ответ данная система.

    Работа с СДН делится на две основные части: интерфейс испытуемого и интерфейс проктора. Сначала испытуемый скачивает и запускает приложение, авторизуется в нем и видит список доступных ему экзаменов для прохождения в режиме прокторинга (список экзаменов создается заранее, либо автоматически подгружается из LMS через API). Далее он может запланировать время прохождения этих экзаменов, на каждый запланированный экзамен испытуемому назначается доступный в данное время проктор. Доступное время формируется на основе расписания, которое составляют прокторы, у них для этого есть соответствующий интерфейс. Далее студент в указанное им время через приложение подключается к проктору и экзамен начинается. Проктор сопровождает испытуемого на протяжении всего времени прохождения экзамена, в его обязанности входит проведение процедуры идентификации и отслеживание нарушений правил прохождения экзамена. После завершения сеанса прокторинга студент видит заключение проктора по данному экзамену и его комментарий.

    Интерфейс испытуемого до начала экзамена
    Интерфейс испытуемого до начала экзамена

    Проктор работает с СДН также через приложение. Главный интерфейс проктора — это таблица расписания экзаменов, где он видит все экзамены, на которые он назначен, и их состояние, которое меняется в режиме реального времени. Когда студент подключается к экзамену, проктор это видит, подключается к нему, и экзамен начинается. Проктор видит испытуемого через веб-камеру, а также видит его рабочий стол. Перед началом экзамена проктор должен провести процедуру идентификации, при которой студент показывает удостоверяющий личность документ, а проктор сверяет указанные данные в профиле испытуемого с фотографией документа и лицом испытуемого на веб-камере. При успешной идентификации данные и фотография документа сохраняются в протоколе экзамена, а испытуемому открывается доступ к экзамену в LMS. После этого испытуемый заходит в LMS и приступает к выполнению заданий. На протяжении всего экзамена проктор может делать заметки и сохранять скриншоты в протоколе экзамена, которые могут пригодиться при разрешении спорных моментов в будущем. По окончанию экзамена проктор подписывает протокол и выносит заключение, которое отображается студенту и передается в LMS по API. В случае нарушения правил прохождения экзамена проктор может прервать экзамен с указанием причины досрочного завершения экзамена. Проктор может одновременно наблюдать за несколькими испытуемыми, число одновременных сессий ограничивается возможностями проктора, ресурсами его компьютера и пропускной способностью сети.

    Таблица экзаменов в интерфейсе проктора
    Таблица экзаменов в интерфейсе проктора

    Интерфейс проктора, процедура идентификации личности
    Интерфейс проктора, процедура идентификации личности

    Общая архитектура СДН приведена рисунке ниже. Все используемые технологии являются открытыми и распространяются под свободными лицензиями.

    Архитектура СДН

    Система полностью написана на JavaScript, в качестве среды разработки использовалась облачная IDE Cloud9. Основные части системы — это сервер на node.js и express, база данных MongoDB с хранением небольших файлов в GridFS, медиасервер Kurento, хранилище архива медиаданных (видеозаписи сеансов прокторинга) с доступом по протоколу WebDAV и декстопное приложение на node-webkit (в качестве альтернативы приложению можно использовать специальное расширение Chrome для работы из веб-браузера).

    В качестве основы для передачи видео был выбран протокол WebRTC и медиасервер Kurento для организации и управления медиапотоками между клиентами, а также записи этих потоков. На данный момент Kurento удовлетворяет всем потребностям как по функционалу, так и по производительности, однако стоит упомянуть другие похожие решения — это Licode и Jitsi Videobridge.

    Авторизация в СДН основана на модуле PassportJS, на данный момент поддерживается вход по логину и паролю или через OAuth. При необходимости можно добавить стратегию авторизации из уже поддерживаемых в PassportJS или написать собственную, как это было сделано для авторизации через систему единого входа Университета ИТМО (для этого написана специальная стратегия passport-ifmosso).

    Клиент реализован в виде одностраничного веб-приложения, которое может работать в веб-браузере, однако функция захвата экрана и скриншоты доступны только после установки специального расширения Chrome или через специальное приложение node-webkit, которое доступно для платформ Windows, Linux и OS X. Отдельное приложение особенно полезно, если не хочется привязываться к веб-браузеру и его версиям, где, к тому же, могут быть установлены сторонние расширения, которые могут влиять на работу приложения в браузере, что нежелательно.

    СДН не содержит в себе функций системы управления обучением (LMS), однако может быть связана с ней через API. Для взаимодействия с Национальной платформой открытого образования (НПОО) был реализован специальный API, который может быть расширен для взаимодействия с другими LMS. Ниже на рисунке приведена диаграмма взаимодействия участников системы с использованием такого API.

    Диаграмма взаимодействия участников СДН
    В рамках одной сессии передается несколько видеопотоков: камера испытуемого, камера проктора и рабочий стол испытуемого. Параметры каждого потока задаются в настройках приложения, где можно задать видео- и аудиоисточник, максимальное разрешение и частоту кадров. Для проверки качества связи и картинки есть соответствующий интерфейс, что позволяет заранее узнать о возможных технических проблемах.

    Все видео- и аудиопотоки сессии прокторинга записываются. Видеозаписи сессий сохраняются на отдельном хранилище с доступом по протоколу WebDAV, что позволяет логически отделить хранилище от самой системы. Благодаря протоколу WebDAV, для хранения видеозаписей можно, например, использовать Яндекс.Диск. Позже эти записи и протоколы экзаменов можно просматривать через интерфейс СДН. Для перекодирования видеозаписей и загрузки их на сервер написан специальный модуль, с описанием которого можно ознакомиться в отдельной статье.

    В приложении используется точное серверное время, которое не зависит от компьютерных часов, для удобства восприятия время корректируется с учетом часового пояса клиента.

    Для доступа к базе данных СДН реализован специальный JSON REST API с гибкой настройкой прав доступа и параметров выдачи данных. Например, можно настроить доступ по токену доверенному серверу, который будет агрегировать и обрабатывать статистику. Данный API полностью поддерживает CRUD (создание, чтение, обновление и удаление) для работы с коллекциями MongoDB на основе созданных в СДН моделей Mongoose, а также поддерживается оригинальный синтаксис запросов Mongo.

    Минимальные технические требования

    Параметр Минимальные требования
    Клиентская часть
    Операционная система Windows XP+; OS X 10.7+; Linux
    Процессор Intel i3 1.2 ГГц или эквивалент
    Скорость сетевого соединения 1 Мбит/c
    Свободное место на диске 100 МБ
    Свободная оперативная память 1 ГБ
    Разрешение веб-камеры 640x480
    Частота кадров веб-камеры 15 кадров/с
    Разрешение экрана монитора 1280x720
    Серверная часть
    Операционная система Ubuntu 14.04 (64 бита)
    Процессор AMD Six-Core Opteron 2427 2.2 ГГц или эквивалент
    Средняя нагрузка на процессор 5% / сессия
    Оперативная память 2 ГБ + 100 МБ / сессия
    Сетевое соединение 1.5 Мбит/c / сессия
    Запись на диск 150 КБ/c / сессия
    Дисковое пространство 10 ГБ + 500 МБ/час / сессия
    Архивирование видео 100 МБ/час / сессия (5 кадров/с со звуком)

    На данный момент через систему было проведено около 120 сессий прокторинга, однако в этом году планируется провести уже несколько тысяч сессий. Систему можно развернуть самостоятельно, либо использовать готовый Vagrant бокс. Инструкции и исходные коды выложены на GitHub.

    Упоминания в СМИ

    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 15
    • –4
      Блин, вот почему я сразу начинаю относится к (казалось бы хорошему) ПО негативно, стоит ему засветиться в Российских СМИ? (
      • +1
        Потому что Болгенос, Болгенос everywhere.

        П.С. это про телевидение. А софт для дистанционного обучения — всегда +.
        • 0
          Видимо да
          • 0
            Вы имели ввиду для оценки знаний? Зачем это вообще нужно?
          • 0
            Наверно потому что увидел зелёненький логотип :)
            P.S. Отсюда вопрос — а где же менты и бандиты на этой картинке?
        • +2
          Я не совсем понимаю как в таком случае происходит защита от списывания, кто мешает повесит на стену за монитором шпаргалки или попросит приятеля, который вне действия камеры писать правильные ответы на листке бумаги или искать ответ в гугле и показывать его на планшете? Или от студента требуется показывать камерой всю комнату? Или тест такой что это все равно не поможет, если студент не знает ответов?
          • 0
            Может, надо ввести в этот комплекс LMS еще и какой-нибудь обруч с веб-камерой, надеваемый на голову экзаменуемому?
            • 0
              Пока используется только обычная веб-камера и микрофон, однако исследования в этом направлении ведутся несколькими университетами. Уже есть прототипы биометрических датчиков и алгоритмы, помогающие проктору более эффективно выявлять факты нарушения правил прохождения экзаменов. Появится ли что-то подобное на рынке в ближайшее время, сказать сложно.
            • 0
              Перед началом каждого испытания (экзамена) проктор просит испытуемого выполнить ряд действий, такие как показать (обвести камерой) свое рабочее место и помещение, в котором он находится. В помещении не должны находиться посторонние лица, на рабочем месте не должно быть ничего постороннего, кроме листка бумаги и ручки, должен быть только один компьютер с одним монитором, не допускается использование наушников или аудиогарнитур и пр. Вот условия проведения итоговой аттестации на НПОО. Эти правила не являются чем-то новым, например, известный зарубежный сервис тестирования Pearson VUE предъявляет достаточно жесткие условия прохождения онлайн тестирования (вот ссылка на правила прохождения онлайн-экзамена от Microsoft, которые пользуются услугами Pearson VUE).
              • 0
                Можно попросить друга повесить после «проверки» =)
                • +2
                  Умудрялся списывать, когда преподаватель стоял надо мной, а уж тут при желании вариантов 100500 можно придумать.
                  • 0
                    Задача системы и подобных сервисов повысить степень доверия к результатам дистанционных экзаменов. Понятно, что говорить о 100% достоверности результатов нельзя, потому как даже очные центры тестирования не дают такого показателя. Но без подобных мер доверия к дистанционным экзаменам нет вообще никакого, так что даже такой вариант на данный момент лучше, чем ничего.
                  • 0
                    ПО сможет определить, что запущено на виртуальной машине?
                    Иначе я могу открыть в отдельном окне бразур в основной операционке. А виртуальная машина при этом не будет ловить событий смены активного окна.
                    • 0
                      Определение нахождения внутри ВМ — это частный случай и не решает проблемы в целом. А если подключиться к другому компьютеру через удаленный рабочий стол, или подключить второй компьютер к одному монитору с возможностью переключения с клавиатуры? Возможность решения этой проблемы на данный момент исследуется. Есть идея отслеживать события клавиатуры и мыши, и визуализировать их в интерфейсе проктора для сопоставления поведения испытуемого (на камере) и его взаимодействия с компьютером (события мыши и клавиатуры). В дальнейшем этот процесс можно частично автоматизировать.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.