Quiz Markup Language (QuizML)

Что такое QuizML?

QuizML (Quiz Markup Language) — это простой формат разметки на основе XML, предназначенный для описания тестов различного назначения. Основными целями разработки была простота представления опросника, легкость изменения и независимость от платформы. Для достижения этих целей в качестве исходного формата был выбран язык XML, с помощью которого и была создана обобщенная структура опросника, подходящая для большинства типовых тестов.

Авторы

Версии

Текущая версия: QuizML 1.0

Статус

Бета

Замечания и комментарии можно отправить на адреса разработчиков, указанные выше.

Права

Все права принадлежат авторам

Разрешается использовать формат для любых целей, изменения и распространения, как это указано в лицензии GNU GPL. Описание формата представляется «как есть». Авторы не несут ответственности за последствия использования и не дают каких-либо гарантий относительно надежности, безопасности и т.п..

Оглавление

  1. Введение
  2. Предыстория
  3. Цели разработки
  4. Требования
  5. Синтаксис
  6. Примеры
  7. Примечания

1. Введение

Quiz Markup Language (QuizML) — это простой, многоцелевой и расширяемый формат метаданных для описания различных (не любых!) тестов, опросников, анкет, голосований и т.п. QuizML является прикладным форматом на основе XML и наследует все присущие XML преимущества, как, впрочем, и недостатки.

2. Предыстория

Одним из путей, решающих вопрос нехватки времени при увеличении объема изучаемой информации, является применение тестирования в ходе изучения учебной дисциплины. Тесты позволяют получить объективные оценки уровня знаний, умений, навыков и представлений, выявить пробелы в подготовке. Тесты позволяют перейти к адаптивному обучению и контролю знаний.

За время развития компьютерных технологий появилось множество программных продуктов, предназначенных для разработки и проведенияя тестов различной сложности и направленности. Каждый из них имеет какие-то преимущества, но всем (опробованным авторами) присущ один недостаток — несовместимость форматов при переходе с одной программы на другую. Конечно же имеются возможности тем или иным способом переместить тест из одной системы в другую, но это сопровождается по меньшей мере сохранением структуры и наполнения опросника в какой-то стандартизованный формат (.txt, .sql и т.п.), а потом импорт из этого формата. Еще один отмеченный недостаток — это непереносимость таких программ, что существенно ограничивает их применение.

Для устранения приведенных недостатков и был разработан формат QuizML, который был опробован при проведении промежуточных и итоговых тестов по ряду дисциплин учебного плана кафедры АСОИУ Омского технического университета.

3. Цели разработки

Основная цель разработки QuizML — создание унифицированного формата описания тестов, применимого для контроля знаний в изучаемой предметной области.

Дополнительными целями явились:

4. Требования

Исходные требования к формату:

Предъявленные требования оказалось возможным выполнить с помощью XML. Краткие пояснения к реализации некоторых требований приведены ниже.

4.1 Формат хранения и обеспечение переносимости

Текстовый формат позволяет создавать и изменять ранее созданные тесты с помощью обычного текстового редактора (gedit, vim и т.п.). Поскольку текстовый формат (text/*) является стандартным mime-типом, то он поддерживается всеми системами и проблема переносимости легко решается.

4.2 Отображение

Имеются реализации контрольных тестов на основе QuizML с веб-интерфейсом, написанным на php (например, http://4stud.info/controls/ ).

В разработке (на уровне учебных заданий) — оболочки на языках ObjectPascal и C#.

4.3 Типовая структура

Описание теста на QuizML представлено в виде структуры: Тест -> Список_Вопросов. Список_Вопросов, в свою очередь, представлен в виде Вопрос -> Описание_Вопроса. Короткий пример, поясняющий сказанное приведен в листинге 1.

Листинг 1. Пример описания теста

<?xml version="1.0" encoding="UTF-8"?> 
<test cid="1">

<title>Сетевые технологии</title>

<question type="radio" qid="1">
<text>
	Какой из компонентов сетевого приложения отвечает за реализацию бизнес-логики?
</text>
<time>30</time>
<choice aid="2">Компонент представления</choice>
<choice aid="3">Компонент доступа к ресурсам</choice>
<choice aid="1">Прикладной компонент</choice>
<answer>1</answer>
</question>

<question type="text" qid="2">
<text>
	Какой метод протокола HTTP используется для пересылки данных в теле запроса?
</text>
<time>30</time>
<answer>post</answer>
<explanation link="http://www.w3.org/Protocols/rfc2616/rfc2616.html">
	См. RFC2616 
</explanation>
</question>

<question type="checkbox" qid="5">
<text>Какие права доступа к файлу могут быть установлены в UNIX?</text>
<time>30</time>
<choice aid="1">чтение</choice>
<choice aid="2">запись</choice>
<choice aid="3">исполнение</choice>
<choice aid="4">архивирование</choice>
<answer>1,2,3</answer>
<explanation>
	Права доступа в UNIX-системах регламентируют операции чтения, записи и 
	исполнения для различных пользователей и групп. Смысл этих операций 
	различается для файлов и каталогов. 
</explanation>
</question>

</test>

4.4 Поддержка сети

Файл, содержащий описание теста в формате QuizML, является источником данных. Он может быть размещен на сетевом ресурсе, при этом доступом к файлу управляют операционная система и сервисное и/или прикладное ПО.

4.5 Именование и количество элементов

В именах элементов используются полные англоязычные слова (test, answer, question и т.п.), которые делают описание более простым и понятным для пользователя. В именах атрибутов поддерживается тот же принцип, за исключением атрибутов-идентификаторов (cid, qid, aid). Эти имена представлены сокращениями от category identifier, question idintifier, answer identifier.

Общее количество используемых элементов (тегов описания) — не превышает десятка.

4.6 Виды ответов и ограничение времени

Значение атрибута type тега question задает правила интерпретации списка вариантов ответа:

Атрибут time тега question задает время, выделенное на ответ в секундах. Программа-парсер может суммировать значения этого атрибута для всех вопросов и управлять общей продолжительностью выполнения теста. Либо отображать текущий вопрос в течении указанного времени, а потом переходить к следующему.

Минимальное и максимальное значения времени не регламентируются. Фактическое значение времени определяется автором опросника в соответствии с применяемой им методикой.

4.7 Целостность теста

Синтаксис и структурная целостность теста обеспечивается общими правилами для XML-документов (well-formed XML) и может быть проверена валидаторами XML, например, здесь.

Тег question инкапсулирует всю информацию о вопросе, вариантах ответа на него, правильном ответе и источнике информации. Пример описания вопроса приведен листинге 2.

Листинг 2. Пример использования тега question

...
<question type="checkbox" qid="5">
	<text>Какие права доступа к файлу могут быть установлены в UNIX?</text>
	<time>30</time>
	<choice aid="1">чтение</choice>
	<choice aid="2">запись</choice>
	<choice aid="3">исполнение</choice>
	<choice aid="4">архивирование</choice>
	<answer>1,2,3</answer>
	<explanation>
		Права доступа в UNIX-системах регламентируют операции чтения, 
		записи и исполнения для различных пользователей и групп. Смысл этих 
		операций различается для файлов и каталогов. 
	</explanation>
</question>
...

4.8 Возможность расширения и модификации

QuizML — открытый формат, разработчики могут изменять его в соответствии с потребностями, при этом помня об обеспечении совместимости. Иначе, программы-парсеры сторонних разработчиков скорее всего будут вести себя непредсказуемо.

5. Синтаксис

Общий синтаксис, необходимость, порядок следования и расположение элементов QuizML приведены в DTD (Document Type Definition). Ниже приведены комментарии к элементам этой структуры.

<test>

Назначение: Корневой элемент как этого требует спецификация XML. Содержит прочие вложенные элементы. Для идентификации теста может содержать атрибут cid.

Применение: Обязательный. Единственный.

Синтаксис: <test [cid="число"]>прочие_элементы</test>

Атрибуты:

cid
Идентификатор теста, задаваемый целым числом. Программа-парсер может использовать это значение, например, в качестве параметра скрипта в гипертекстовом списке тестов.

<title>

Назначение: Название или тема опросника.

Применение: Обязательный.

Синтаксис: <title>текст</title>

<comment>

Назначение: Комментарий или краткое описание теста.

Применение: Необязательный.

Синтаксис: <comment>текст_комментария</comment>

<question>

Назначение: Описание вопроса. Инкапсулирует такую информацию, как текст вопроса, тип вопроса, варианты ответов, правильный ответ, время на ответ и справочную информацию. Должен быть хотя бы один элемент question, иначе тест как таковой теряет смысл.

Применение: Обязательный.

Синтаксис: <question qid="число" type="checkbox|radio|text">текст_вопроса</question>

Атрибуты:

qid
question identifier — идентификатор вопроса, задаваемый целым числом. Значение qid должно быть уникальным в пределах опросника. Спецификация не требует, чтобы значения qid были последовательными или упорядоченными.
type
Значение атрибута type задает тип вопроса и может быть использовано программой-парсером для генерации соответствующих элементов пользовательского интерфейса. Можно использовать следующие значения:
  • radio — для выбора только одного варианта из нескольких;
  • checkbox — для выбора нескольких вариантов из нескольких возможных;
  • text — свободный вариант; пользователь должен ввести текст.

Далее приведены вложенные элементы, используемые в <question>.

<text>

Назначение: Вопрос как таковой. Вопрос должен быть представлен в виде строки символов или другом, совместимом с тектовым форматом, виде.

Применение: Обязательный.

Синтаксис: <text>текст_вопроса</text>

<time>

Назначение: Целое число, задающее время в секундах, отведенное на ответ. Программа-парсер должна просуммировать значения атрибута time всех элементов question, чтобы получить максимальное время выполнения теста.

Применение: Опциональный. Если хотя бы в одном элементе question использован этот элемент, то имеет смысл задать его и во всех прочих.

Синтаксис: <time>количество_секунд_на_ответ</time>

<choice>

Назначение: Вариант ответа. Значением элемента должна быть текстовая строка или данные в совместимом формате. Каждый вариант имеет свой номер, задаваемый атрибутом aid (answer identifier).

Применение: Опциональный. Если тип вопроса подразумевает выбор варианта (см. radio и checkbox ), то должны быть использованы по меньшей мере два элемента choice в описании вопроса. Если выбор варианта ответа не подразумевается (вопрос типа "text"), то элементы choice не нужны и программа-парсер должна их проигнорировать.

Синтаксис: <choice aid="число">текст_ответа</choice>

Атрибуты:

aid
Целое число, идентифицирующее вариант ответа. Значение этого атрибута должно быть уникальным в пределах родительского элемента <question>.

<answer>

Назначение: Символьная строка, содержащая правильный ответ.

Применение: Обязательный, зависимый. Содержание строки зависит от типа вопроса (значения атрибута type). Если вопрос подразумевает выбор одного ответа, то в ответе должно быть значение, равное значению aid правильного варианта. Если возможно несколько правильных ответов, то в ответе должны быть перечислены номера правильных ответов, разделенные символом «,» (запятая). Если ожидается ввод пользовательского варианта, то в ответе должна быть строка-образец, с которой программа-парсер должна сравнить полученный от пользователя ответ.

Синтаксис: <text>aid_правильного_ответа|список_правильных_aid|текст_ответа</text>

<explanation>

Назначение: Информация о первоисточнике, формальное определение или подобная информация, из которой можно узнать правильный ответ. Эта информация может быть использована, например, при разработке обучающих тестов или в качестве преамбулы к вопросу.

Применение: Необязательный. Фактический смысл информации из этого элемента определяется автором опросника и разработчики программ-парсеров должны это учитывать.

 !  Пока нет решения, как исключить неоднозначность в использовании этого элемента, при этом сохранив общую структуру формата и обеспечив универсальность описания, приемлемую как для обучающих, так и для контрольных тестов. Т.е., если <explanation> отображается при проведении итогового теста, то будет своего рода шпаргалкой, если не отображается в ходе обучающего — то снижает эффективность обучения.

Синтаксис: <explanation [link="адрес"]>текст</explanation>

Атрибуты:

link
Адрес первоисточника, как это описано в URL (RFC 1738) и URI (RFC 3986).

6. Примеры

«Один из нескольких»

В листинге 3 приведен пример описания вопроса типа «один из нескольких». В этом примере определено время на ответ в 30 секунд, отсутствует описание источника информации (<explanation>), в качестве правильного ответа указан вариант 1.

 !  Обратите внимание: Нумерация вариантов не последовательная и это не баг, а возможность. Дело в том, что автор опросника теоретически может ошибиться в нумерации и разработчики парсеров должны учитывать это.

Листинг 3. Вопрос типа «один из нескольких»

<question type="radio" qid="1">
	<text>
		Какой из компонентов сетевого приложения отвечает за реализацию бизнес-логики?
	</text>
	<time>30</time>
	<choice aid="2">Компонент представления</choice>
	<choice aid="3">Компонент доступа к ресурсам</choice>
	<choice aid="1">Прикладной компонент</choice>
	<answer>1</answer>
</question>

На рис. 1 — результат обработки этого описания и представления его в виде html-файла.

один-из-многих

Рис. 1. Пример отображения вопроса типа «radio»

«Несколько из нескольких»

В листинге 4 — пример описания вопроса типа «несколько из нескольких» (значение checkbox).

Листинг 4. Вопрос типа «несколько из нескольких»

<question type="checkbox" qid="52">
	<text>
		Какие функции представляет промежуточное ПО?
	</text>
	<time>40</time>
	<choice aid="1">обеспечение прозрачного доступа к сетевым сервисам и приложениям</choice>
	<choice aid="2">возможность передачи данных в гетерогенной сетевой среде</choice>
	<choice aid="3">независимость от других сетевых сервисов</choice>
	<choice aid="4">обеспечение надежности, масштабируемости и постоянной готовности систем</choice>
	<choice aid="5">представление интерактивного доступа пользователя к сетевому сервису</choice>
	<answer>1,3,4</answer>
	<explanation link="http:4stud.info/networking/lecture05.html">
		См. Конспект лекций. Тема № 5 «Middleware»
	</explanation>
</question>

На рис. 2 — результат обработки этого описания и представления его в виде html-файла. Несмотря на наличие в описании тега explanation, он не использован при обработке, т.е. это по сути фрагмент контрольного теста.

несколько-из-нескольких

Рис. 2. Пример отображения вопроса типа «checkbox»

7. Примечания

Настоящая спецификация не регламентирует алгоритмы сравнения, используемые для проверки ответов. В реализованной системе тестирования для этого была использована библиотечная функция similar_text языка php. Практика показала, что она не панацея и не позволяет определить точное соответствие в ряде случаев.