Продолжаем беседу о возможности создания тестов для системы VeralTest без использования встроенного редактора тестов. В предыдущих двух статьях мы узнали как использовать язык XML для написания тестов, рассмотрели тест с вопросами одиночного и множественного выбора ответа, познакомились с возможностями форматирования текста.
В данной статье мы рассмотрим остальные три типа вопросов, которые поддерживает VeralTest: "Вопрос с вводом числа", "Вопрос с вводом строки", "Вопрос с сопоставлением".
Прежде чем перейти непосредственно к материалу статьи, отмечу одну деталь, о которой запамятовал упомянуть в предыдущих статьях. Когда мы обсуждали, как проверить правильность синтаксиса описания теста, я советовал открыть файл content.xml в веб браузере, если, конечно, вы не пользуетесь специализированными xml редакторами. Наверное, попробовавшие это сделать, столкнулись с тем, что при открытии файла веб браузер выдавал сообщение о невозможности найти файл test.dtd. Данную проблему можно решить двумя способами:
1. Можно на время проверки закомментировать ссылку на DTD файл. Вот так:
<!--<!DOCTYPE test SYSTEM "test.dtd">-->
2. Можно скопировать файл test.dtd в ту же папку, где лежит content.xml. Файл test.dtd можно найти в подкаталоге DTDShema, который расположен в каталоге установки TestEditor (по умолчанию c:\Program Files\VeralTest\TestEditor).
Во многом описание вопросов, которые мы будем рассматривать, схоже с описанием вопросов с выбором ответа. Каждому типу вопроса соответствует свой элемент (number – вопрос с вводом числа; text – вопрос с вводом строки; box – вопрос с сопоставлением), внутри элемента вопроса содержится текст описания вопроса и несколько элементов answer. Различие в том, что элемент answer задает уже не вариант ответа, а, т.н., "шаблон ответа". Шаблон ответа определяет описание ответа, правильный ответ и количество баллов за правильный ответ. Более подробно о шаблонах ответов мы поговорим, рассматривая каждый вопрос в отдельности.
Данный тип вопроса предполагает числовой ответ тестируемого. Рассмотрим сначала простой вопрос:
Сколько будет 2 x2 ?
Возьму на себя смелость утверждать, что правильным ответом здесь будет 4.
Вот как должен быть записан этот вопрос на языке XML:
<nubmer>
Сколько будет 2x2 ?
<answer right="4" rating="1"/>
</number>
Разберем данный пример более подробно:
Первый элемент – number определяет, собственно, сам вопрос с числовым вводом ответа.
Далее следует описание вопроса и элемент answer, определяющий шаблон ответа.
Обратите внимание на атрибут right, значение этого атрибута задает правильный ответ.
Параметр rating здесь определяет количество баллов, которое получит тестируемый, дав правильный ответ. В нашем примере за правильный ответ будет начислен 1 балл, ну а за неправильный ответ, конечно, 0 баллов.
Элементов answer может быть несколько, что удобно использовать, когда в рамках одного вопроса необходимо получить несколько ответов. Например:
Бассейн объемом 15 куб.м полностью заполнен водой. Найдите: Объем воды в литрах, массу воды в тоннах.
Придумал вопрос, придется считать ответы. И так: поскольку в одном куб.м 1000 литров, то первый ответ будет 15000. Поскольку для воды 1л – это примерно 1кг., то масса будет 15000 кг или 15 тон.
Теперь запишем этот вопрос на языке XML:
<number>
Бассейн объемом 15 куб.м полностью заполнен водой. Найдите:
<answer right="15000" rating="1"> Объем воды в литрах</answer>
<answer right="15" rating="1">Массу воды в тоннах</answer>
</number>
Если тестируемый ответит правильно дважды, то он получит 2 балла, если даст 1 правильный ответ – то 1 балл, ну а если ошибется дважды – 0 баллов.
Во многих случаях точное числовое значение правильного ответа неизвестно и правильный ответ должен соответствовать некоторому числовому диапазону. Например:
Какова высота горы Эверест в метрах?
По разным данным высота составляет от 8844 до 8846 метров.
Вот как можно записать этот вопрос:
<number>
Какова высота горы Эверест в метрах?
<answer right="8844..8848" rating="1"/>
</number>
И так: правильный ответ для может быть задан не только в виде единичного числа, но и в виде числового диапазона, где нижняя и верхняя границы диапазона разделяются двумя точками ("..").
Кстати, правильный ответ может быть и вещественным числом, в этом случае в качестве разделителя целой и дробной части следует использовать десятичную точку (".").
Этот тип вопроса задается элементом text и предполагает текстовый ответ.
Пример:
Назовите фамилию первой женщины космонавта.
Вот как записывается этот вопрос на языке XML:
<text>
Назовите фамилию первой женщины космонавта.
<answer rigth="Терешкова" rating="1" />
</text>
Атрибут right здесь указывает верный ответ: "Терешкова". Следует заметить, что при проверке ответа регистр символов не учитывается, т.е, на данный вопрос правильными ответами могут быть: "терешкова", "Терешкова", "ТЕРЕШКОВА" и т.д.
Конечно, как и в остальных типах вопросов, шаблонов ответов может быть несколько:
<text>
Как звали первого космонавта?
<answer right="Юрий" rating="1">Имя</answer>
<answer rigth="Гагарин" rating="1">Фамилия</answer>
</text>
Очень часто в вопросах с текстовым ответом правильный ответ точно задать нельзя. Например, в вопросе:
Как зовут человечка, который живет на крыше?
Можно ответить "Карлсон", а можно – "Карлсоном".
Поэтому, в строке правильного ответа можно использовать специальные управляющие символы: "\?" и "\*". Символ "\?" означает, что на этом месте в ответе тестируемого должен находиться один любой символ. Символ "\*" означает, что на этом месте в ответе тестируемого может находится любое количество (включая 0) символов.
Используя эти управляющие символы, наш вопрос можно записать так:
<text>
Как зовут человечка, который живет на крыше?
<answer right="Карлсон\*" rating="1"/>
</text>
Данный тип удобно применять для вопросов, в которых требуется расположить элементы в определенном порядке или для вопросов, в которых требуется отнести элементы к определенным группам.
Рассмотрим вопрос с упорядочиванием:
Расположите эти величины в порядке возрастания: тонна, грамм, килограмм.
Вот как будет записан этот вопрос:
<box>
Расположите величины в порядке возрастания
<answer right="3" rating="1">тонна</answer>
<answer right="1" rating="1">грамм</answer>
<answer right="2" rating="1">килограмм</answer>
</box>
В вопросах с сопоставлением атрибут right задает правильный вариант сопоставления для каждого шаблона. В нашем случае – правильный порядковый номер.
При тестировании этот вопрос будет выглядеть так:
Тестируемый будет выбирать номер для каждой величины из списка.
Рассмотрим теперь вопрос с группировкой:
Какие из этих животных считаются домашними, а какие дикими? (лошадь, собака, лось, кролик, заяц).
На языке XML запишем этот вопрос так:
<box>
Какие из этих животных считаются домашними, а какие - дикими?
<answer right="домашнее" rating="1">лошадь</answer>
<answer right="домашнее" rating="1">собака</answer>
<answer right="дикое" rating="1">лось</answer>
<answer right="домашнее" rating="1">кролик</answer>
<answer right="дикое" rating="1">заяц</answer>
</box>
При тестировании вопрос будет выглядеть так:
Одной из интересных и полезных особенностей VeralTest является возможность записи вопросов в, так называемом, "Свободном формате". Здесь я постараюсь объяснить что это такое и как это использовать.
Стандартно при выполнении теста, все вопросы выводятся следующим образом: Сначала выдается текст вопроса, ниже идут поля для ввода ответов и их описания. Ответы выводятся либо по-порядку, если атрибут random="n", или перемешиваются случайным образом, если random="y".
В то же время, существует много вопросов, для которых такой порядок вывода ответов нежелателен. Примером могут служить вопросы, в которых требуется расставить пропущенные слова в тексте. Именно в таких ситуациях и помогает свободный формат записи вопроса.
Перевести любой вопрос в свободный формат очень просто. Для этого в элементе вопроса нужно указать атрибут format : format="free". Что измениться после этих манипуляций?
Допустим нам требуется составить такой вопрос:
Расставьте недостающие слова в пословице:
Без .... не вытащишь и ..... из пруда.
Как бы мы записали этот вопрос в стандартном формате? Ну, например так:
<text random="n">
<p>Расставьте недостающие слова в пословице:</p>
<p>Без (1).... не вытащишь и (2)..... из пруда.</p>
<answer right="труда" rating="1">(1)</answer>
<answer right="рыбку" rating="1">(2)</answer>
</text>
Выглядеть этот вопрос на экране, как и следовало ожидать, будет так:
По-моему, недостатки очевидны: Слишком сложная запись, да и выглядит вопрос как-то неестественно.
Теперь рассмотрим, как можно записать этот вопрос в свободном формате.
<text format="free">
<p>Расставьте недостающие слова в пословице:</p>
<p>Без <answer right="труда" rating="1" /> не вытащишь и
<answer right="рыбку" rating="1" /> из пруда.</p>
</text>
Вот и все!
А выглядеть такой вопрос будет следующим образом:
Как говорится: "Почувствуйте разницу!"
Теперь вы уже знаете, как составлять любые вопросы на встроенном языке XML без использования редактора тестов. Впереди у нас еще знакомство с секциями и сообщениями теста. Впрочем, можно использовать и смешанный подход: Вы составляете файл с вопросами на языке XML, упаковываете его в XTF, загружаете полученный файл в редактор тестов и уже в редакторе разбиваете вопросы на секции и добавляете сообщения.