Это расширение для браузера, предназначенное для автоматизации процесса прохождения тестов на сайтах, использующих систему moodle.
На данный момент разработка расширения приостановлена, и официальных релизов не планируется. Исходный код расширения был адаптирован для работы с сайтом Системы управления обучением ВГУ имени П. М. Машерова (newsdo.vsu.by). Вся архитектура и парсинг были написаны исключительно под этот сайт. Для создания универсальной архитектуры, способной работать на любом форке moodle, была разработана новая архитектура расширения. Она более оптимизирована, устойчива к сбоям, документирована и легко понимаема. К сожалению, эта архитектура осталась только на схемах и не была реализована. Для энтузиастов, готовых продолжить разработку, схема будет загружена в репозиторий. На данный момент другой документации к расширению нет или она была утрачена.
Работа расширения полуавтоматизирована. Оно анализирует загруженную страницу и начинает взаимодействие, понимая, какая страница moodle сайта в данный момент открыта. Расширению не требуется доступ в интернет (для случая наличия proxy-сервера, ограничивающего доступ к некоторым ресурсам). Расширение основано на парсинге результатов уже пройденных тестов (или ответов, которые еще не отправлены на проверку). Для парсинга результатов необходимо включить функцию "Collect Questions" в меню расширения. При просмотре результатов теста расширение автоматически парсит ответы (убедитесь, что все вопросы отображаются на одной странице) и сохраняет их в базе данных (ответы не хранятся в оперативной памяти, используется база данных IndexedDb). В меню расширения пользователь может контролировать свои ответы, видеть их количество, экспортировать в файл для передачи другим пользователям и импортировать. Для разработчиков важно отметить, что структура данных в файле не оптимальна, но она работает) Необходимость в обновлении алгоритма сохранения была отложена из-за возможных проблем с импортом существующих баз данных.
Вы, возможно, сталкивались с тестами, где результаты не предоставляются для просмотра, а только выставляется оценка. Таким образом, намеренно ограничивается доступ к информации об ошибках, что влияет на анализ тестовых вопросов. Для решения этой проблемы была создана функция "explicit parsing", которую можно включить в расширении. Что она предоставляет?
Когда тест уже пройден, его вопросы не могут быть проанализированы из-за закрытого доступа. Мы не взламываем систему, а лишь анализируем данные, предоставленные сайтом. Функция сохраняет ваши ответы перед отправкой на проверку. На последней странице перед отправкой появляется кнопка "explicit parsing". После ее нажатия расширение проходит по вашим ответам и сохраняет их в файл.
Далее, отправляете на проверку. Если результат приемлемый, то у вас сохранены потенциальные ответы. Слово "потенциальные" использовано не просто так, так как если ваш результат не 100%, то имеются ошибки, и, соответственно, они были записаны в нашу базу. И чисто теоретически, если ваш тест пройден правильно на 80%, то 20% у вас неверных (логично). В качестве примера давайте возьмем 10 вопросов (8 правильных и 2 нет), и при следующем прохождении вами или вашим другом есть вероятность напороться на неприятную ситуацию. В новой попытке прохождения теста вопросы могут быть следующими: 3 из 8 наших верных, 2 из 2 неверных (но они записаны как верные), и 5 новых. То есть ваш коллега или вы сразу выберете 5 тех, которые вам подскажет расширение, и 5 других ответите сами. Допустим, вы сами ответили на 2 из 5 верно (иначе вы бы не использовали это расширение :) ), итого: 5 верных из 10. Это одна из важных проблем, её нужно понимать и учитывать.
Следующая проблема связана с перезаписью ответа (о ней кратко). Тот же пример: 8 верных из 10 вопросов. Ваш друг Вася, наученный горьким опытом предыдущей проблемы, решает, что расширение ему врет, и ответ в 7 вопросе точно другой, не тот, который ему советует расширение, и решает выбрать другой. После проверки результат 70% (а могло быть 80%). Васю это полностью устраивает, это же выше 50%. Он передает этот результат другому другу Пете, и у него может пройти всё хорошо, а может и нет. Может, может, может... Заметьте, это пример на 10 вопросах. Если вопросов 100, а в базе их вообще 1000, то это влечет за собой большую беду. И теперь объединим эти две проблемы и добавим к ним наши ответы, которые были добавлены самим расширением. То есть человек случайно может повредить ответы, собранные расширением. Грусть.
Как решить эту проблему? Ответ прост: никак. Либо не парсить эти вопросы вовсе, либо страдать от этих проблем. Не парсить такого рода вопросы нас совсем не устраивало. Мы защитились и запрограммировали все так: есть две категории ответов - "проверенные" и "ручные". Очевидно, когда вы сохраняете ответы вручную, они будут помечаться как "ручные", то, что расширение сохраняет самостоятельно без вашего вмешательства - "проверенные". Мы придумали систему приоритета и описали, в каких случаях вопрос нужно перезаписывать, объединять или игнорировать ту или иную ситуацию.
Все подробности представлены в таблице:
Обычным юзерам не обязательно вдаваться в эти подробности. Достаточно просто знать о проблемах и передавать результаты с оценкой выше 80%.
В меню расширения представлены разные режимы помощи в ответах на вопросы. Их 5:
Adventure Mode - выделяет правильные и не правильные ответы зелеными и красными цветами, так сказать, преключенческий режим, добавлен, чтобы в спокойной обстановке видеть то, что записано в бд и контролировать ситуацию.
Exam Mode - режим скрытности, вас палит только наличие расширения в браузере. При наведении на вопрос расширение черной точкой подсказывает вам, верный или неверный этот ответ.
(существует ещё moodle safe-browser, тест с отдельным окном, типа защенное от скриптинга, там точки показываются внизу экрана (см. скриншот выше))
Hack Mode - режим хацкера, само выбирает правильные ответы. вам даже думать не надо, только щеклать на кнопку далее.
Roll Mode - режим рандома, рандомно выбирает ответы (если в бд есть верный ответ, то оно возьмет из бд), как Hack Mode, только если в бд нет ответа, выбирает случайный.
Disabled - режим не для казуальщиков