|
|
(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:Справка]] | + | |