Создание тестов без редактора. Часть III

Аннотация

Продолжаем беседу о возможности создания тестов для системы 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". Что измениться после этих манипуляций?

  1. Ответы будут выводиться всегда последовательно, вне зависимости, что указывает атрибут random.
  2. Не будет выводиться описание ответов, даже если оно есть.
  3. Самое главное: Поля для ввода ответов будут выводиться прямо в тексте вопроса, в тех местах, где расположены соответствующие элементы answer.

Допустим нам требуется составить такой вопрос:

Расставьте недостающие слова в пословице:

Без .... не вытащишь и ..... из пруда.

Как бы мы записали этот вопрос в стандартном формате? Ну, например так:

		
		<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, загружаете полученный файл в редактор тестов и уже в редакторе разбиваете вопросы на секции и добавляете сообщения.