MediawikiQuizzer — расширение MediaWiki.

Включение в сборку Mediawiki4Intranet:

Позволяет:

Contents

MediaWiki4Intranet и дистанционное обучение

Сборка MediaWiki4Intranet является очень удачной (близкой к идеальной) технологией дистанционного обучения — то есть, с учетом всевозможных расширений, в MediaWiki4Intranet можно использовать и удобную для ручного ввода Wiki-разметку, и HTML-код, и даже LateX-верстку, которая дает неограниченные возможности в представлении математики. Также можно размещать различные диаграммы (посредством Graphviz, Gnuplot, PlantUML), видеоролики, а также просто изображения, включая векторные.

Для получения полноценной системы дистанционного обучения, необходимо лишь дополнить MediaWiki4Intranet средствами контроля представленных знаний. Наиболее распространенная IT-технология контроля знаний — это тесты, являющие собой набор сформулированных вопросов, снабженных вариантами ответа, часть из которых являются правильными, а часть — нет. Это дает как максимальную простоту тестирования, так и точность проверки.

Проектировщику обучающих материалов нужно только сформулировать проверочную структуру — набор вопросов, каждый из которых имеет варианты правильных и неправильных ответов, и возможно разьяснение.

Технология будет удачной и используемой, если все это (редактирование структуры, формулировка вопросов) будет удобным — тогда написание тестов можно сделать обязательным для любого обучающего материала, как написание тестов для программного кода.

Для этого и служит расширения MediawikiQuizzer.

Установка MediaWikiQuizzer

Как обычно с расширениями MediaWiki, нужно скопировать исходники в поддиректорию extensions/mediawikiquizzer/ вашей установки MediaWiki, добавить в LocalSettings.php несколько строчек и запустить скрипт php maintenance/update.php.

В LocalSettings.php:

$egMWQuizzerAdmins = array('WikiSysop');
require_once('extensions/mediawikiquizzer/mediawikiquizzer.php');
MediaWikiQuizzer::setupNamespace(104); // 104 - свободный индекс пространства имён

Attention niels epting.svg Но есть нюанс!

В связи со спецификой расширения, а именно в связи с тем, что все вопросы и правильные варианты ответов для удобства создаются и сохраняются на обычных вики-страницах в отдельном пространстве имён Quiz, требуется защита от просмотра его обычными пользователями. Однако в рамках MediaWiki это проблема: система изначально рассчитана на открытый доступ. Единственными расширениями, которые способны надёжно защищать вики-страницы от просмотра, являются IntraACL и его предок — HaloACL, и не все пользователи mediawikiquizzer’а захотят устанавливать и настраивать эти расширения — HaloACL имеет большое число проблем удобства, багов и производительности, наш IntraACL получше, но тоже неидеален.

Поэтому есть второй способ, более простой: создать рядом с уже установленной MediaWiki ещё одну, полностью закрытую (например, HTTP-авторизацией) и воспользоваться фичей MediaWiki под названием «Разделяемые таблицы БД». То есть, прописать следующее в её LocalSettings.php:

$wgSharedDB = 'original_wiki'; // база данных основной wiki
$wgSharedTables = array('user', 'mwq_choice', 'mwq_choice_stats', 'mwq_question', 'mwq_question_test', 'mwq_test', 'mwq_ticket');
$wgSharedPrefix = ''; // или префикс, используемый основной wiki

Таким образом получится, что дополнительная вики будет использовать ту же базу данных пользователей и ту же базу данных вопросов/ответов/тестов/результатов тестирования MediaWikiQuizzer’а, но именно на её страницах будут располагаться исходники самих тестов, и поэтому они будут закрыты от обычных пользователей.

Создание и редактирование тестов

Для ведения проверочной структуры тестов применяется человеческий язык :)

Тесты

Отдельный тест описывается отдельной невложенной вики-страницей в пространстве имён Quiz. Например, Quiz:Тест задаёт тест. Quiz:Тест/Вопросы не задаёт тест.

Тест состоит из:

И то, и другое описывается по-человечески и может включаться с других вики-страниц обычными вики-включениями {{Quiz:ИмяСтраницы}}. То есть, например, можно создавать библиотеки вопросов, а потом, набирая разные вопросы, формировать разные тесты.

Обновление теста происходит при пересохранении страницы теста или любой статьи пространства имён Quiz, включаемой в страницу теста.

Attention niels epting.svg Если в тест включаются статьи не из пространства имён Quiz, то тест не обновится автоматически при сохранении включаемой статьи! Все вопросы нужно хранить в пространстве имён Quiz!

Параметры теста

Параметры теста описываются обычным списком определений в вики-синтаксисе со специальными именами «терминов». Имена локализованы, нужно использовать либо английские (они работают всегда), либо соответствующие $wgContLang, то есть, языку вашей вики по умолчанию.

Параметр (рус.) Параметр (англ.) Значение
Название Name Просто некий заголовок. Если этого пункта нет, в качестве заголовка будет взято название вики-страницы.
Введение Intro Этот текст будет показан в режиме тестирования над тестом. Если для введения мало одной строчки, в начале страницы можно создать подраздел с заголовком == Введение ==, и его содержимое будет принято за этот текст.
Режим Mode Возможные значения: TEST или TUTOR. Подробнее см. #Обучающие тесты
Число вопросов Limit questions Если на странице много вопросов, а тестировать нужно только по части из них, здесь задаётся размер этой части.
Переставлять вопросы Shuffle questions Если «да», то вопросы теста будут случайным образом переставлены. Если при этом задано «Число вопросов» равное, к примеру, 10, то будет выбрано 10 случайных вопросов из всех доступных.
Переставлять ответы Shuffle choices Если «да», то варианты ответа на каждый вопрос также будут случайным образом переставлены.
Процент завершения Completion percent Требуемый % правильных ответов для того, чтобы результат был признан успешным прохождением теста.
Мин. попыток слишком простых вопросов Autofilter min tries См. подробнее #Автоудаление простых вопросов
% успехов слишком простых вопросов Autofilter success percent См. подробнее #Автоудаление простых вопросов
Спросить пользователя Ask user (Необязательный) Список названий полей через запятую, которые будут добавлены к форме тестирования для анкетирования проходящих тест людей. Если не пусто, то также всегда требуется заполнение поля «Ваше имя».
Секретный Secret Если «да», то тест будет только администраторам (тем, кто может просмотреть его исходный текст), либо по заранее сгенерированным администраторами одноразовым ссылкам.

Пример кода с параметрами теста:

;Название: Основый SQL
;Введение: Данный тест позволит вам проверить базовы навыки в области языка запросов SQL.
;Режим: TUTOR
;Число вопросов: 10
;Переставлять вопросы: да
;Переставлять ответы: да
;Процент завершения: 80
;Мин. попыток слишком простых вопросов: 5
;% успехов слишком простых вопросов: 90
;Спросить пользователя: ВУЗ, Факультет

Анкета

Одновременно с тестированием можно отображать анкету с различными видами полей.

Вопросы

Каждый вопрос задаётся отдельной секцией статьи («подзаголовком» статьи) и имеет:

Чтобы секция была принята за вопрос, её заголовок должен называться == Вопрос == или == Вопрос: метка вопроса ==. Уровень заголовка роли не играет.

Ответы

Варианты ответа можно задать двумя способами:

1. Одной секцией с названием == Ответы == или Варианты ответа, содержащей в себе нумерованный (*) или маркированный (#) список, каждый элемент которого будет признан отдельным вариантом ответа. При этом правильными вариантами будут признаны те, в начале текста которых есть слова Правильный ответ: (далее текст ответа).

2. Если на текст варианта ответа недостаточно одной строчки, его можно задать отдельной секцией с названием == Ответ == или == Правильный ответ ==. В принципе, оба способа задания можно также и смешивать.

Лог разбора страницы

После сохранения вверху страницы каждого теста можно увидеть ссылку «[+] Показать лог разбора страницы теста». Если на неё кликнуть, будет показана некоторая отладочная информация, по которой можно понять, как mediawikiquizzer разбирал страницу теста. Зелёные маркеры говорят о том, что всё ОК, жёлтые — о возможной ошибке, красные — о явной ошибке. Явной ошибкой является, к примеру, вопрос без единого правильного варианта ответа.

Тестирование

После сохранения вверху страницы каждого теста можно увидеть также и две ссылки:

Как несложно догадаться, первая служит для перехода на саму страницу тестирования, а вторая — для вывода печатной версии теста.

Каждый раз при тестировании или выводе печатной версии генерируется новый вариант теста. Вариант теста, по сути, есть выборка из его вопросов и ответов, по которой в будущем можно восстановить, как именно был перемешан тест при показе пользователю. Реальные номера вопросов и ответов пользователь увидеть не может. Для удобства вариант теста характеризуется некоторой 32-битной цифрой, по этой цифре можно искать результаты на странице просмотра результатов (см. #Просмотр результатов).

После выбора вариантов ответа и их отправки на сервер пользователь увидит свой результат. Это будут две цифры:

Печатная версия теста

Печатная версия теста включает в себя три части, разделённые разрывами страниц:

Обучающие тесты

Если задать для теста режим TUTOR (см. #Параметры теста), то тест станет «обучающим». Это означает, что после прохождения теста будет показан не только количественный результат правильных/неправильных ответов, но и будут перечислены вопросы, на которые человек ответил неправильно, причём будут показаны и тексты вопросов, и выбранные ответы, и правильные ответы, и объяснения к вопросам. Таким образом человек сможет учиться, или по крайней мере заучить правильные ответы, что тоже неплохо, если их много.

Автоудаление простых вопросов

Предположим, у вас есть куча вопросов, но какие-то из них, возможно, слишком простые и их в будущем хотелось бы удалить. А какие — неизвестно. С помощью MediawikiQuizzer’а можно воспользоваться статистическим методом их удаления :)

Нужно задать 2 параметра теста:

Мин. попыток слишком простых вопросов
N. Чтобы фильтрация работала, N нужно задать обязательно. При N <= 0, или когда N не задан, фильтрация отключается.
% успехов слишком простых вопросов
M. По умолчанию M=80.

Тогда вопросы, на которые ответило по меньшей мере N человек, и из них успешно ответило >= M процентов, будут признаны «слишком простыми» и в следующие варианты тестов не попадут.

Например, можно задать N=5, M=80.

Просмотр результатов

Для просмотра результатов используется служебная страница «Опросы MediaWiki». Просматривать результаты могут администраторы и/или те, кто имеет доступ к исходному коду теста.

Можно выбирать результаты по варианту, пользователю, времени начала/окончания тестирования; можно просматривать полученный список по страницами и выбирать количество записей на странице. Некоторые хитрые ссылки:

Note.svg Обратите внимание — на печатной версии теста возле вопросов есть ссылки «править» (похожие на обычные вики-ссылки правки секций), которые направят вас сразу на редактирование нужного раздела нужной страницы! Это даёт возможность очень легкой отладки тестов: тестируемый пожаловался на ошибку в «вопросе таком-то, варианте таком-то», вы открываете просмотр результатов, открываете вариант и редактируете вопрос прямо оттуда!

Остальные колонки говорят сами за себя. Разве что ещё «Очки» и «Ответы» красятся в зелёный цвет, если попытка прохождения была засчитана успешной, и в красный, если нет.

QR-коды

Ещё одно замечание — QR-коды. На странице с результатом теста пользователю отображается QR-код, содержащий ссылку на этот результат. Зачем это надо, как это можно применить: например, пройдя тест на мобильном устройстве, можно быстро передать ссылку администратору для проверки результата. Ссылка содержит секретный код, и поэтому будет ясно, что человек, показавший ссылку — это именно тот, кто проходил тест, а не кто-то другой.