MediawikiQuizzer
MediawikiQuizzer — расширение MediaWiki.
- Назначение: Система тестирования знаний на основе MediaWiki, с простым порождением тестов страницами в отдельном пространстве имён.
- Репозиторий: https://github.com/mediawiki4intranet/MediawikiQuizzer
- Домашняя страница: http://wiki.4intra.net/MediawikiQuizzer* Версия MediaWiki: гарантирована совместимость с 1.13-1.18, возможна с другими
- Лицензия: GNU GPL версии 2 или новее* Дата создания: 2008-10-14* Последняя версия: 2012-12-13
Включение в сборку MediaWiki4Intranet:
- Дата включения: 2008-10-14
- Включённая версия: последняя
- Состояние доработок: Создано в рамках 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 - свободный индекс пространства имён
В связи со спецификой расширения, а именно в связи с тем, что все вопросы и правильные варианты ответов для удобства создаются и сохраняются на обычных вики-страницах в отдельном пространстве имён 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:Тест/Вопросы не задаёт тест.
Есть ограничение на длину имени страницы — 32 символа. Связано с тем, что имя страницы используется как «ID» теста. В будущих версиях это будет исправлено.
Тест состоит из:
- Параметров теста
- Вопросов и вариантов ответов
И то, и другое описывается по-человечески и может включаться с других вики-страниц обычными вики-включениями {{Quiz:ИмяСтраницы}}. То есть, например, можно создавать библиотеки вопросов, а потом, набирая разные вопросы, формировать разные тесты.
Обновление теста происходит при пересохранении страницы теста или любой статьи пространства имён Quiz, включаемой в страницу теста.
Если в тест включаются статьи не из пространства имён Quiz, то тест не обновится автоматически при сохранении включаемой статьи! Все вопросы нужно хранить в пространстве имён Quiz!
Параметры теста
Параметры теста описываются обычным списком определений в вики-синтаксисе со специальными именами «терминов». Имена локализованы, нужно использовать либо английские (они работают всегда), либо соответствующие $wgContLang, т.е., языку вашей вики по умолчанию.
Параметр (рус.) | Параметр (англ.) | Значение |
---|---|---|
Название | Name | Просто некий заголовок. Если этого пункта нет, в качестве заголовка будет взято название вики-страницы. |
Введение | Intro | Этот текст будет показан в режиме тестирования над тестом. Если для введения мало одной строчки, в начале страницы можно создать подраздел с заголовком == Введение ==, и его содержимое будет принято за этот текст. |
Режим | Mode | Возможные значения: TEST или TUTOR. Подробнее см. #Обучающие тесты |
Число вопросов | Limit questions | Если на странице много вопросов, а тестировать нужно только по части из них, здесь задаётся размер этой части. |
Переставлять вопросы | Shuffle questions | Если «да», то вопросы теста будут случайным образом переставлены. Если при этом задано «Число вопросов» равное, к примеру, 10, то будет выбрано 10 случайных вопросов из всех доступных. |
Переставлять ответы | Shuffle choices | Если «да», то варианты ответа на каждый вопрос также будут случайным образом переставлены. |
Процент завершения | Completion percent | Требуемый % правильных ответов для того, чтобы результат был признан успешным прохождением теста. |
Мин. попыток слишком простых вопросов | Autofilter min tries | См. подробнее #Автоудаление простых вопросов |
% успехов слишком простых вопросов | Autofilter success percent | См. подробнее #Автоудаление простых вопросов |
Пример кода с параметрами теста:
;Название: Основый SQL ;Введение: Данный тест позволит вам проверить базовы навыки в области языка запросов SQL. ;Режим: TUTOR ;Число вопросов: 10 ;Переставлять вопросы: да ;Переставлять ответы: да ;Процент завершения: 80 ;Мин. попыток слишком простых вопросов: 5 ;% успехов слишком простых вопросов: 90
Вопросы
Каждый вопрос задаётся отдельной секцией статьи («подзаголовком» статьи) и имеет:
- Текст вопроса.
- Текст объяснения для режима обучающего теста. Этот текст будет показан в результатах тестирования, если человек ответит на вопрос неправильно. Подробнее см. #Обучающие тесты.
Объяснение задаётся секцией с названием == Объяснение ==. - Метку для проверяющего. Эта метка будет показываться в печатных проверочных листах и может использоваться, например, проверяющим, чтобы сразу понять, для тестирования какой темы добавлен этот вопрос.
Метку можно задать в заголовке секции вопроса или отдельной подсекцией с заголовком == Метка ==. - Комментарии к вопросу. Эти комментарии понимаются как комментарии в языке программирования — при обработке теста они просто вырезаются.
Комментариями считается всё, что располагается в секциях с названием == Комментарии ==. - Варианты ответа.
Чтобы секция была принята за вопрос, её заголовок должен называться == Вопрос == или == Вопрос: метка вопроса ==. Уровень заголовка роли не играет.
Ответы
Варианты ответа можно задать двумя способами:
1. Одной секцией с названием == Ответы == или Варианты ответа, содержащей в себе нумерованный (*) или маркированный (#) список, каждый элемент которого будет признан отдельным вариантом ответа. При этом правильными вариантами будут признаны те, в начале текста которых есть слова Правильный ответ: (далее текст ответа).
== Вопрос: кролики == Как быстро кролики размножаются? === Ответы === * Медленно * Правильный ответ: Быстро * Очень быстро * Феерически быстро
2. Если на текст варианта ответа недостаточно одной строчки, его можно задать отдельной секцией с названием == Ответ == или == Правильный ответ ==. В принципе, оба способа задания можно также и смешивать.
== Вопрос: кролики == Как быстро кролики размножаются? === Ответ === Медленно ''y = kx'' === Правильный ответ === Быстро ''y = k<sup>x</sup>''
Лог разбора страницы
После сохранения вверху страницы каждого теста можно увидеть ссылку «[+] Показать лог разбора страницы теста». Если на неё кликнуть, будет показана некоторая отладочная информация, по которой можно понять, как mediawikiquizzer разбирал страницу теста. Зелёные маркеры говорят о том, что всё ОК, жёлтые — о возможной ошибке, красные — о явной ошибке. Явной ошибкой является, к примеру, вопрос без единого правильного варианта ответа.
Тестирование
После сохранения вверху страницы каждого теста можно увидеть также и две ссылки:
- Пройти тест «Название теста»
- Версия для печати
Как несложно догадаться, первая служит для перехода на саму страницу тестирования, а вторая — для вывода печатной версии теста.
Каждый раз при тестировании или выводе печатной версии генерируется новый вариант теста. Вариант теста, по сути, есть выборка из его вопросов и ответов, по которой в будущем можно восстановить, как именно был перемешан тест при показе пользователю. Реальные номера вопросов и ответов пользователь увидеть не может. Для удобства вариант теста характеризуется некоторой 32-битной цифрой, по этой цифре можно искать результаты на странице просмотра результатов (см. #Просмотр результатов).
После выбора вариантов ответа и их отправки на сервер пользователь увидит свой результат. Это будут две цифры:
- Правильные ответы — количество правильных ответов.
- Очки — (количество правильных ответов) минус (сумма отношений числа правильных ответов к числу неправильных ответов для каждого ответа). То есть то же значение минус штраф за неправильные ответы. Невыбранный ответ не считается неправильным. При случайном выборе «очки» имеют матожидание, равное нулю :)
Печатная версия теста
Печатная версия теста включает в себя три части, разделённые разрывами страниц:
- Лист вопросов — просто список вопросов, выведенных друг под другом.
- Форма для тестирования — таблица с номерами вопросов и пустыми клетками для вписания ответов и примечаний.
- Проверочный лист — похожая таблица с номерами вопросов, номерами правильных ответов, статистикой правильных ответов по каждом вопросу и метками вопросов. Кстати, если на ссылку печатной версии теста попадёт пользователь, не имеющий доступа к странице — исходнику теста, и не являющийся одним из $egMWQuizzerAdmins (см. #Установка MediawikiQuizzer), проверочный лист ему показан не будет. Так как нечего подглядывать правильные ответы! :)
Обучающие тесты
Если задать для теста режим TUTOR (см. #Параметры теста), то тест станет «обучающим». Это означает, что после прохождения теста будет показан не только количественный результат правильных/неправильных ответов, но и будут перечислены вопросы, на которые человек ответил неправильно, причём будут показаны и тексты вопросов, и выбранные ответы, и правильные ответы, и объяснения к вопросам. Таким образом человек сможет учиться, или по крайней мере заучить правильные ответы, что тоже неплохо, если их много.
Автоудаление простых вопросов
Предположим, у вас есть куча вопросов, но какие-то из них, возможно, слишком простые и их в будущем хотелось бы удалить. А какие — неизвестно. С помощью MediawikiQuizzer’а можно воспользоваться статистическим методом их удаления :)
Нужно задать 2 параметра теста:
- Мин. попыток слишком простых вопросов
- N. Чтобы фильтрация работала, N нужно задать обязательно. При N <= 0, или когда N не задан, фильтрация отключается.
- % успехов слишком простых вопросов
- M. По умолчанию M=80.
Тогда вопросы, на которые ответило по меньшей мере N человек, и из них успешно ответило >= M процентов, будут признаны «слишком простыми» и в следующие варианты тестов не попадут.
Например, можно задать N=5, M=80.
Просмотр результатов
Для просмотра результатов используется служебная страница «Опросы MediaWiki».
Можно выбирать результаты по варианту, пользователю, времени начала/окончания тестирования; можно просматривать полученный список по страницами и выбирать количество записей на странице. Некоторые хитрые ссылки:
- В колонке «ID попытки» содержится ссылка на результат тестирования в том виде, в котором он был представлен пользователю.
- В колонке «Тест» содержится две ссылки — на страницу теста и на страницу прохождения теста заново.
- В колонке «Вариант» содержится ссылка на печатную версию именно того варианта теста, который проходил пользователь.
Обратите внимание — на печатной версии теста возле вопросов есть ссылки «править» (похожие на обычные вики-ссылки правки секций), которые направят вас сразу на редактирование нужного раздела нужной страницы! Это даёт возможность очень легкой отладки тестов: тестируемый пожаловался на ошибку в «вопросе таком-то, варианте таком-то», вы открываете просмотр результатов, открываете вариант и редактируете вопрос прямо оттуда!
Остальные колонки говорят сами за себя. Разве что ещё «Очки» и «Ответы» красятся в зелёный цвет, если попытка прохождения была засчитана успешной, и в красный, если нет.