Difference between revisions of "MediawikiQuizzer"

From Wiki4Intranet
Jump to: navigation, search
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''MediawikiQuizzer''' — расширение MediaWiki для проведения проверочных тестов.
+
{{Extension4info
 
+
{{Extension4i
+
 
|name=MediawikiQuizzer
 
|name=MediawikiQuizzer
|назначение=Система тестирования знаний на основе MediaWiki, с простым порождением тестов страницами в отдельном пространстве имён.
+
|description en=Quiz for MediaWiki with simple test creation using natural language descriptions on wiki pages.
 +
|description ru=Система тестирования знаний на основе MediaWiki, с простым порождением тестов страницами в отдельном пространстве имён.
 
|mediawiki=1.13-1.18
 
|mediawiki=1.13-1.18
|created=2008-10-14
+
|created=2006-04-25
|version=2012-12-13
+
|version=2013-04-15
 
|included=2008-10-14
 
|included=2008-10-14
 
|status=our
 
|status=our
 +
|useful=likely
 
}}
 
}}
 
+
{{ExtensionFromInfo|lang=en|name=MediawikiQuizzer}}
Позволяет:
+
[[Category:Incomplete extension descriptions]]
 
+
* Создавать тесты как обычные вики-страницы на обычном русском (или английском, или любом другом) языке.
+
* Проводить тестирование через веб-интерфейс.
+
* Просматривать результаты тестов.
+
* Создавать печатные версии тестов — листы вопросов и ответов.
+
 
+
== MediaWiki4Intranet и дистанционное обучение ==
+
 
+
Сборка [[4intranet:MediaWiki4Intranet|MediaWiki4Intranet]] является очень удачной (близкой к идеальной) технологией дистанционного обучения — то есть, с учетом всевозможных расширений, в MediaWiki4Intranet можно использовать и удобную для ручного ввода Wiki-разметку, и HTML-код, и даже [[LateX]]-верстку, которая дает неограниченные возможности в представлении математики. Также можно размещать различные диаграммы (посредством Graphviz, Gnuplot, PlantUML), видеоролики, а также просто изображения, включая векторные.
+
 
+
Для получения полноценной системы дистанционного обучения, необходимо лишь дополнить MediaWiki4Intranet средствами контроля представленных знаний.
+
Наиболее распространенная IT-технология контроля знаний — это ''тесты'', являющие собой набор сформулированных вопросов, снабженных вариантами ответа, часть из которых являются правильными, а часть — нет. Это дает как максимальную простоту тестирования, так и точность проверки.
+
 
+
Проектировщику обучающих материалов нужно только сформулировать проверочную структуру — набор вопросов, каждый из которых имеет варианты правильных и неправильных ответов, и возможно разьяснение.
+
 
+
Технология будет удачной и используемой, если все это (редактирование структуры, формулировка вопросов) будет удобным — тогда написание тестов можно сделать обязательным для любого обучающего материала, как написание тестов для программного кода.
+
 
+
Для этого и служит расширения [[MediawikiQuizzer]].
+
 
+
== Установка MediaWikiQuizzer ==
+
 
+
Как обычно с расширениями <tt>MediaWiki</tt>, нужно скопировать исходники в поддиректорию extensions/mediawikiquizzer/ вашей установки MediaWiki, добавить в <tt>LocalSettings.php</tt> несколько строчек и запустить скрипт <tt>php maintenance/update.php</tt>.
+
 
+
В <tt>LocalSettings.php</tt>:
+
 
+
<code-php>
+
$egMWQuizzerAdmins = array('WikiSysop');
+
require_once('extensions/mediawikiquizzer/mediawikiquizzer.php');
+
MediaWikiQuizzer::setupNamespace(104); // 104 - свободный индекс пространства имён
+
</code-php>
+
 
+
'''<span style="color:red">Но есть нюанс!</span>'''
+
 
+
В связи со спецификой расширения, а именно в связи с тем, что все вопросы и правильные варианты ответов для удобства создаются и сохраняются на обычных вики-страницах в отдельном пространстве имён '''<tt>Quiz</tt>''', требуется защита от просмотра его обычными пользователями. Однако в рамках MediaWiki это проблема: система изначально рассчитана на открытый доступ. Единственными расширениями, которые способны надёжно защищать вики-страницы от просмотра, являются '''<tt>[[4intranet:IntraACL|IntraACL]]</tt>''' и его предок - <tt>HaloACL</tt>, и не все пользователи mediawikiquizzer’а захотят устанавливать и настраивать эти расширения - HaloACL имеет большое число проблем удобства, багов и производительности, наш IntraACL получше, но тоже неидеален.
+
 
+
Поэтому есть второй способ, более простой: создать рядом с уже установленной MediaWiki ещё одну, полностью закрытую (например, HTTP-авторизацией) и воспользоваться фичей MediaWiki под названием «[[mediawikiwiki:Manual:Shared_database|Разделяемые таблицы БД]]». То есть, прописать следующее в её <tt>LocalSettings.php</tt>:
+
 
+
<source lang="php">
+
$wgSharedDB = 'original_wiki'; // база данных основной wiki
+
$wgSharedTables = array('user', 'mwq_choice', 'mwq_choice_stats', 'mwq_question', 'mwq_question_test', 'mwq_test', 'mwq_ticket');
+
$wgSharedPrefix = ''; // или префикс, используемый основной wiki
+
</source>
+
 
+
Таким образом получится, что дополнительная вики будет использовать ту же базу данных пользователей и ту же базу данных вопросов/ответов/тестов/результатов тестирования MediaWikiQuizzer’а, но именно на её страницах будут располагаться исходники самих тестов, и поэтому они будут закрыты от обычных пользователей.
+
 
+
== Создание и редактирование тестов ==
+
 
+
Для ведения проверочной структуры тестов применяется человеческий язык :)
+
 
+
=== Тесты ===
+
 
+
Отдельный тест описывается отдельной '''невложенной''' вики-страницей в пространстве имён '''<tt>Quiz</tt>'''. Например, [[Quiz:Тест]] задаёт тест. [[Quiz:Тест/Вопросы]] не задаёт тест.
+
 
+
{{Warning}} Есть ограничение на длину имени страницы — 32 символа. Связано с тем, что имя страницы используется как «ID» теста. В будущих версиях это будет исправлено.
+
 
+
Тест состоит из:
+
* Параметров теста
+
* Вопросов и вариантов ответов
+
 
+
И то, и другое описывается по-человечески и может включаться с других вики-страниц обычными вики-включениями <tt><nowiki>{{Quiz:ИмяСтраницы}}</nowiki></tt>. То есть, например, можно создавать библиотеки вопросов, а потом, набирая разные вопросы, формировать разные тесты.
+
 
+
Обновление теста происходит при пересохранении страницы теста или любой статьи пространства имён '''<tt>Quiz</tt>''', включаемой в страницу теста.
+
 
+
{{Warning}} Если в тест включаются статьи ''не из пространства имён Quiz'', то тест '''не обновится''' автоматически при сохранении включаемой статьи! Все вопросы нужно хранить в пространстве имён Quiz!
+
 
+
=== Параметры теста ===
+
 
+
Параметры теста описываются обычным списком определений в вики-синтаксисе со специальными именами «терминов». Имена локализованы, нужно использовать либо английские (они работают всегда), либо соответствующие <tt>$wgContLang</tt>, т.е., языку вашей вики по умолчанию.
+
 
+
<tab sep="bar" head="top" class="wikitable">
+
Параметр (рус.) | Параметр (англ.) | Значение
+
Название | Name | Просто некий заголовок. Если этого пункта нет, в качестве заголовка будет взято название вики-страницы.
+
Введение | Intro | Этот текст будет показан в режиме тестирования над тестом. Если для введения мало одной строчки, в начале страницы можно создать подраздел с заголовком == Введение ==, и его содержимое будет принято за этот текст.
+
Режим | Mode | Возможные значения: TEST или TUTOR. Подробнее см. [[#Обучающие тесты]]
+
Число вопросов | Limit questions | Если на странице много вопросов, а тестировать нужно только по части из них, здесь задаётся размер этой части.
+
Переставлять вопросы | Shuffle questions | Если «да», то вопросы теста будут случайным образом переставлены. Если при этом задано «Число вопросов» равное, к примеру, 10, то будет выбрано 10 случайных вопросов из всех доступных.
+
Переставлять ответы | Shuffle choices | Если «да», то варианты ответа на каждый вопрос также будут случайным образом переставлены.
+
Процент завершения | Completion percent | Требуемый % правильных ответов для того, чтобы результат был признан успешным прохождением теста.
+
Мин. попыток слишком простых вопросов | Autofilter min tries | См. подробнее [[#Автоудаление простых вопросов]]
+
% успехов слишком простых вопросов | Autofilter success percent | См. подробнее [[#Автоудаление простых вопросов]]
+
</tab>
+
 
+
Пример кода с параметрами теста:
+
<pre>
+
;Название: Основый SQL
+
;Введение: Данный тест позволит вам проверить базовы навыки в области языка запросов SQL.
+
;Режим: TUTOR
+
;Число вопросов: 10
+
;Переставлять вопросы: да
+
;Переставлять ответы: да
+
;Процент завершения: 80
+
;Мин. попыток слишком простых вопросов: 5
+
;% успехов слишком простых вопросов: 90
+
</pre>
+
 
+
=== Вопросы ===
+
 
+
Каждый вопрос задаётся отдельной секцией статьи («подзаголовком» статьи) и имеет:
+
 
+
* '''Текст вопроса'''.
+
* '''Текст объяснения''' для режима обучающего теста. Этот текст будет показан в результатах тестирования, если человек ответит на вопрос неправильно. Подробнее см. [[#Обучающие тесты]].<br />''Объяснение задаётся секцией с названием <tt>== Объяснение ==</tt>.
+
* '''Метку''' для проверяющего. Эта метка будет показываться в печатных проверочных листах и может использоваться, например, проверяющим, чтобы сразу понять, для тестирования какой темы добавлен этот вопрос.<br />''Метку можно задать в заголовке секции вопроса или отдельной подсекцией с заголовком <tt>== Метка ==</tt>.''
+
* '''Комментарии к вопросу'''. Эти комментарии понимаются как комментарии в языке программирования — при обработке теста они просто вырезаются.<br />''Комментариями считается всё, что располагается в секциях с названием <tt>== Комментарии ==</tt>.
+
* '''Варианты ответа'''.
+
 
+
Чтобы секция была принята за вопрос, её заголовок должен называться <tt>== Вопрос ==</tt> или <tt>== Вопрос: метка вопроса ==</tt>. Уровень заголовка роли не играет.
+
 
+
=== Ответы ===
+
 
+
Варианты ответа можно задать двумя способами:
+
 
+
'''<big>1.</big>''' Одной секцией с названием <tt>== Ответы ==</tt> или <tt>Варианты ответа</tt>, содержащей в себе нумерованный (*) или маркированный (#) список, каждый элемент которого будет признан отдельным вариантом ответа. При этом правильными вариантами будут признаны те, в начале текста которых есть слова <tt>'''Правильный ответ:''' (далее текст ответа)</tt>.
+
 
+
<div class="NavFrame alternative"><span class="NavHead">Пример:</span>
+
<div class="NavContent">
+
<pre>
+
== Вопрос: кролики ==
+
Как быстро кролики размножаются?
+
=== Ответы ===
+
* Медленно
+
* Правильный ответ: Быстро
+
* Очень быстро
+
* Феерически быстро
+
</pre>
+
</div>
+
</div>
+
 
+
'''<big>2.</big>''' Если на текст варианта ответа недостаточно одной строчки, его можно задать отдельной секцией с названием <tt>== Ответ ==</tt> или <tt>== Правильный ответ ==</tt>. В принципе, оба способа задания можно также и смешивать.
+
 
+
<div class="NavFrame alternative"><span class="NavHead">Пример:</span>
+
<div class="NavContent">
+
<pre>
+
== Вопрос: кролики ==
+
 
+
Как быстро кролики размножаются?
+
 
+
=== Ответ ===
+
 
+
Медленно
+
 
+
''y = kx''
+
 
+
=== Правильный ответ ===
+
 
+
Быстро
+
 
+
''y = k<sup>x</sup>''
+
</pre>
+
</div>
+
</div>
+
 
+
=== Лог разбора страницы ===
+
 
+
После сохранения вверху страницы каждого теста можно увидеть ссылку «'''[+] Показать лог разбора страницы теста'''». Если на неё кликнуть, будет показана некоторая отладочная информация, по которой можно понять, как mediawikiquizzer разбирал страницу теста. Зелёные маркеры говорят о том, что всё ОК, жёлтые — о возможной ошибке, красные — о явной ошибке. Явной ошибкой является, к примеру, вопрос без единого правильного варианта ответа.
+
 
+
== Тестирование ==
+
 
+
После сохранения вверху страницы каждого теста можно увидеть также и две ссылки:
+
* Пройти тест «Название теста»
+
* Версия для печати
+
 
+
Как несложно догадаться, первая служит для перехода на саму страницу тестирования, а вторая — для вывода печатной версии теста.
+
 
+
Каждый раз при тестировании или выводе печатной версии генерируется новый вариант теста. Вариант теста, по сути, есть выборка из его вопросов и ответов, по которой в будущем можно восстановить, как именно был перемешан тест при показе пользователю. Реальные номера вопросов и ответов пользователь увидеть не может. Для удобства вариант теста характеризуется некоторой 32-битной цифрой, по этой цифре можно искать результаты на странице просмотра результатов (см. [[#Просмотр результатов]]).
+
 
+
После выбора вариантов ответа и их отправки на сервер пользователь увидит свой результат. Это будут две цифры:
+
* '''Правильные ответы''' — количество правильных ответов.
+
* '''Очки''' — (количество правильных ответов) минус (сумма отношений числа правильных ответов к числу неправильных ответов для каждого ответа). То есть то же значение минус штраф за неправильные ответы. Невыбранный ответ не считается неправильным. При случайном выборе «очки» имеют матожидание, равное нулю :)
+
 
+
=== Печатная версия теста ===
+
 
+
Печатная версия теста включает в себя три части, разделённые разрывами страниц:
+
 
+
* '''Лист вопросов''' — просто список вопросов, выведенных друг под другом.
+
* '''Форма для тестирования''' — таблица с номерами вопросов и пустыми клетками для вписания ответов и примечаний.
+
* '''Проверочный лист''' — похожая таблица с номерами вопросов, номерами правильных ответов, статистикой правильных ответов по каждом вопросу и метками вопросов. Кстати, если на ссылку печатной версии теста попадёт пользователь, не имеющий доступа к странице — исходнику теста, и не являющийся одним из <tt>$egMWQuizzerAdmins</tt> (см. [[#Установка MediawikiQuizzer]]), проверочный лист ему показан не будет. Так как нечего подглядывать правильные ответы! :)
+
 
+
=== Обучающие тесты ===
+
 
+
Если задать для теста режим TUTOR (см. [[#Параметры теста]]), то тест станет «обучающим». Это означает, что после прохождения теста будет показан не только количественный результат правильных/неправильных ответов, но и будут перечислены вопросы, на которые человек ответил неправильно, причём будут показаны и тексты вопросов, и выбранные ответы, и правильные ответы, и объяснения к вопросам. Таким образом человек сможет учиться, или по крайней мере заучить правильные ответы, что тоже неплохо, если их много.
+
 
+
=== Автоудаление простых вопросов ===
+
 
+
Предположим, у вас есть куча вопросов, но какие-то из них, возможно, слишком простые и их в будущем хотелось бы удалить. А какие — неизвестно. С помощью MediawikiQuizzer’а можно воспользоваться статистическим методом их удаления :)
+
 
+
Нужно задать 2 параметра теста:
+
;Мин. попыток слишком простых вопросов: N. Чтобы фильтрация работала, N нужно задать обязательно. При N <= 0, или когда N не задан, фильтрация отключается.
+
;% успехов слишком простых вопросов: M. По умолчанию M=80.
+
 
+
Тогда вопросы, на которые ответило по меньшей мере N человек, и из них успешно ответило >= M процентов, будут признаны «слишком простыми» и в следующие варианты тестов не попадут.
+
 
+
Например, можно задать N=5, M=80.
+
 
+
== Просмотр результатов ==
+
 
+
Для просмотра результатов используется служебная страница '''«[[Special:MediawikiQuizzer|Опросы MediaWiki]]»'''.
+
 
+
Можно выбирать результаты по варианту, пользователю, времени начала/окончания тестирования; можно просматривать полученный список по страницами и выбирать количество записей на странице. Некоторые хитрые ссылки:
+
 
+
* В колонке «'''ID попытки'''» содержится ссылка на результат тестирования в том виде, в котором он был представлен пользователю.
+
* В колонке «'''Тест'''» содержится две ссылки — на страницу теста и на страницу прохождения теста заново.
+
* В колонке «'''Вариант'''» содержится ссылка на печатную версию именно того варианта теста, который проходил пользователь.
+
 
+
{{note}} Обратите внимание — на печатной версии теста возле вопросов есть ссылки «'''править'''» (похожие на обычные вики-ссылки правки секций), которые направят вас сразу на редактирование нужного раздела нужной страницы! Это даёт возможность очень легкой отладки тестов: тестируемый пожаловался на ошибку в «вопросе таком-то, варианте таком-то», вы открываете просмотр результатов, открываете вариант и редактируете вопрос прямо оттуда!
+
 
+
Остальные колонки говорят сами за себя. Разве что ещё «Очки» и «Ответы» красятся в зелёный цвет, если попытка прохождения была засчитана успешной, и в красный, если нет.
+
 
+
[[Category:Справка]]
+

Latest revision as of 18:52, 15 April 2013

MediawikiQuizzer is a MediaWiki extension.

Status for Mediawiki4Intranet distribution:

  • Inclusion date: 2008-10-14
  • Included version: newest available
  • Improvement status: Created by MediaWiki4Intranet project