Спецификация описания тестовых заданий

advertisement
Версия: Редакция 1.7 от 12.08.2007
Статус: в эксплуатации
РЕГЛАМЕНТ ОПИСАНИЯ ТЕСТОВЫХ ЗАДАНИЙ
Данный регламент является дополнением регламента описания ресурсов и описывает
спецификацию тестовых заданий и тестовых вопросов.
1. Базовые понятия
Декларация ЦОР – описание содержания для простых ЦОР и структуры для сложных ЦОР в
стандарте SCORM. Для простых ресурсов необходимо указывать стартовый файл. Имя файла
декларации регламентировано: imsmanifest.xml. (см. Регламент описания ресурсов)
Упорядоченный набор ЦОР – набор образовательных ресурсов, описанный с помощью
декларации ЦОР и предназначенный для последовательного прохождения входящих в него
ресурсов. Ресурсы, входящие в упорядоченный набор ЦОР, могут физически находится как в
том же zip-архиве, где находится файл декларации (imsmanifest.xml), так и во внешних zipархивах, в этом случае в файле декларации указываются ссылки на простые ЦОР. Вариант
декларации внешних ссылок в данной версии регламента не рассматривается.
Тестовое задание – Упорядоченный набор ЦОР, включающий тестовые вопросы. Тестовые
задания предназначены для контрольного или тренажерного тестирования учащихся.
Допустимо также включение в тестовое задание стандартных ресурсов, не являющихся
тестовыми вопросами, но в тестовом задании должен быть хотя бы один тестовый вопрос. В
простейшем случае тестовое задание может состоять только из одного тестового вопроса.
Тестовый вопрос – элементарный ресурс, принимающий ответ пользователя. Тестовый
вопрос должны быть включены в тестовое задание (упорядоченный набор ЦОР)
2. Спецификация описания тестовых заданий
Спецификация описания тестовых заданий расширяет спецификацию описания
упорядоченного набора ЦОР, представленного в пункте 3.2 регламента описания ресурсов.
Элементами упорядоченного набора ЦОР в случае описания тестовых заданий являются
тестовые вопросы, разработанные в соответствии со спецификацией данного регламента.
Допускается использование сложной структуры (вложенных друг в друга элементов <item>).
Для элементов <item>, включающих в себя другие элементы, зафиксировано значение
атрибута identifierref="itemgroup".
При описании тестового задания может быть указано количество и порядка выдачи тестовых
вопросов при прохождении тестового задания учащимися с помощью элемента
imsss:sequencing/imsss:randomizationControls. Данный элемент прописывается в элементе
organization файла декларации ресурса или в элементе item, включающем в себя другие
элемнты. При добавлении элемента imsss:sequencing в пространстве имен декларации
тестового задания должно быть добавлено xmlns:imsss="http://www.imsglobal.org/xsd/imsss
imsss:randomizationControls - Определяет правила выборки элементов из списка элементов
упорядоченного набора (item). Позволяет определить сколько тестовых вопросов показывать и
перемешивать.
Атрибуты элемента imsss:randomizationControls:
reorderChildren – определяет, надо ли перемешивать элементы коллекции при показе.
Значение – «true», по умолчанию – «false» (перемешивание не осуществляется)
randomizationTiming – указывает когда осуществлять переупорядочивание, значение
должно быть «onEachNewAttempt». Если атрибут не указан, значение атрибута
reorderChildren будет игнорироваться.
selectCount – целочисленный атрибут, указывающий сколько элементов подборки
показывать пользователю. Данный атрибут полезен в совокупности с reorderChildren.
selectionTiming – указывает когда осуществлять выборку. значение должно быть
«onEachNewAttempt». Если атрибут не указан, значение атрибута selectCount будет
игнорироваться
Пример указания количества и порядка выдачи тестовых вопросов при прохождении
тестового задания:
<imsss:sequencing>
<imsss:randomizationControls
reorderChildren="true"
selectCount="3"
randomizationTiming="onEachNewAttempt"
selectionTiming="onEachNewAttempt" />
</imsss:sequencing>
Данный пример указывает, что при каждом прохождении теста учащимся будет выдаваться 3
тестовых вопроса в произвольном порядке
При описании тестового задания может быть определен порядок работы с элементами
задания. Это можно сделать при помощи подраздела “imsss:controlMode” внутри раздела
“imsss:sequencing”.
Атрибуты imsss:controlMode:

choice (значение по умолчанию — “true”), определяет возможность произвольного
порядка прохождения элементов задания;

choiceExit (значение по умолчанию — “true”), определяет возможность
произвольного прекращения выполнения задания;

flow (значение по умолчанию — “true”), определяет возможность получить
информацию о следующем элементе задания;

forwardOnly (значение по умолчанию — “false”), определяет возможность вернуться
на уже пройденные элементы задания.
Пример указания порядка работы с элементами задания:
<imsss:sequencing>
<imsss:controlMode
choice="true"
choiceExit="true"
flow="false"
forwardOnly="false" />
</imsss:sequencing>
При описании тестового задания может быть определено количество попыток и время,
полагающееся на выполнение одной попытки. Это можно сделать при помощи подраздела
“imsss:limitConditions” внутри раздела “imsss:sequencing”.
Атрибуты imsss:limitConditions:

attemptLimit (значение по умолчанию — 0; т.е. без ограничения количества
попыток), определяет количество попыток выполнения;

attemptAbsoluteDurationLimit (необязательный, значение по умолчанию — пустая
строка, т.е. ограничения по длительности выполнения нет), определяет время в
минутах, полагающееся на выполнение задания. Формат указания времени —
подмножество формата ISO8601:2000:
PT[hH][nM], где:
h — количество часов,
n — количество минут.
Примеры допустимых значений являются:
«PT1H20M» — 1 час 20 минут;
«PT35M» — 35 минут;
«PT2H» — 2 часа.
Пример указания порядка работы с элементами задания:
<imsss:sequencing>
<imsss:limitConditions
attemptLimit="0"
attemptAbsoluteDurationLimit="" />
</imsss:sequencing>
Структура декларации тестового задания (упорядоченного набора ЦОР)
<?xml version="1.0" encoding="windows-1251" ?>
<manifest identifier=”manifest”
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
>
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>CAM 1.3</schemaversion>
<adlcp:location>Имя файла метаописания</adlcp:location>
</metadata>
<organizations default="collection">
<organization identifier=" collection">
<imsss:sequencing>
<imsss:randomizationControls
reorderChildren="true"
selectCount="кол-во вопросов, выдаваемых пользователю"
randomizationTiming="onEachNewAttempt"
selectionTiming="onEachNewAttempt" />
<imsss:controlMode
choice="false"
choiceExit="false"
flow="true"
forwardOnly="true" />
<imsss:limitConditions
attemptLimit="1"
attemptAbsoluteDurationLimit="PT1H20M" />
</imsss:sequencing>
<title>Название коллекции </title>
<item identifier="идентификатор элемента 1"
identifierref="ссылка на идентификатор ресурса (GUID1)">
<title>Название элемента (ресурса) 1</title>
</item>
<item identifier="group1"
identifierref="itemgroup">
<imsss:randomizationControls
reorderChildren="true"
selectCount="2"
randomizationTiming="onEachNewAttempt"
selectionTiming="onEachNewAttempt" />
<title>Группа ресурсов 1</title>
<item identifier="идентификатор элемента 2"
identifierref="ссылка на идентификатор ресурса (GUID2)">
<title>Название элемента (ресурса) 2</title>
</item>
<item identifier="идентификатор элемента 3"
identifierref="ссылка на идентификатор ресурса (GUID3)">
<title>Название элемента (ресурса) 3</title>
</item>
<item identifier="идентификатор элемента 4"
identifierref="ссылка на идентификатор ресурса (GUID4)">
<title>Название элемента (ресурса) 4</title>
</item>
</item>
</organization>
</organizations>
<resources>
<resource identifier=”идентификатор ресурса (GUID1)”
type=”webcontent”
adlcp:scormType=”asset”
href=”Имя и путь к стартовому файлу (обязательно)”>
<file>Имя и путь к стартовому файлу (обязательно)</file>
<file>Имя и путь к другому файлу ресурса (опционально)</file>
<file>Имя и путь к другому файлу ресурса (опционально)</file>
</resource>
<resource identifier=”идентификатор ресурса (GUID2)”
type=”webcontent”
adlcp:scormType=”asset”
href=”Имя и путь к стартовому файлу (обязательно)”>
<file>Имя и путь к стартовому файлу (обязательно)</file>
</resource>
<resource identifier=”идентификатор ресурса (GUID3)”
type=”webcontent”
adlcp:scormType=”sco”
href=”Имя и путь к стартовому файлу (обязательно)”>
<file>Имя и путь к стартовому файлу (обязательно)</file>
</resource>
<resource identifier=”идентификатор ресурса (GUID4)”
type=”webcontent”
adlcp:scormType=”imsqti”
href=”Имя и путь к стартовому файлу (обязательно)”>
<file>Имя и путь к стартовому файлу (обязательно)</file>
</resource>
</resources>
</manifest>
3. Спецификации описания тестовых вопросов
Для обеспечения возможности загрузки тестов в Систему и последующего использования в
учебном процессе для организации тестирования знаний учащихся с фиксацией результатов в
едином журнале, тестовые вопросы, входящие в тестовые задания (ЦОР-коллекции), должны
соответствовать одному из возможных вариантов описания тестов:
1. тестовые вопросы, разработанные в соответствии со спецификацией SCORM
посредством реализации взаимодействия со SCORM Run Time Environment
2. тестовые вопросы, разработанные в соответствии со спецификацией IMS QTI.
3.1. Тестовые вопросы, соответствующие спецификации SCORM
Тестовый вопрос, соответствующий спецификации SCORM, должен представляет собой
стандартный HTML файл, в котором с помощью скриптового языка JavaScript реализуется
взаимодействие с Системой для передачи и получения данных, соответствующей модели
данных SCORM, через объектную модель SCORM Run-time environment (SCORM API).
Пример JavaScript кода для осуществления взаимодействия со SCORM API представлен в
приложении 1.
При реализации тестовых вопросов необходимо включить в JavaScript код вызов
соответствующих функций для передачи в систему организации и поддержки
образовательного процесса оценки за вопрос.
Тестовые вопросы должны быть включены в тестовое задание (упорядоченный набор ЦОР),
при этом атрибут adlcp:scormType должен иметь значение "sco" (см. п. 4.2 регламента
описания ресурсов). Пример описания в файле декларации ЦОР:
<resource identifier="GUID вопроса"
type="webcontent"
adlcp:scormType="sco"
href="Lesson1/sco1.htm">
<file>Lesson1/sco1.htm</file>
<file>Вспомогательные файлы</file>
. . .
</resource>
Поиск SCORM API
Для работы со SCORM API в тестовом вопросе средствами JavaScript необходимо реализовать
сканирование фреймов (окон - объектов window) web-навигатора в поисках объекта с
названием “API_1484_11” (в соответствии со спецификацией SCORM 2004). Поиск
проводится в текущем фрейме/окне, родительских фреймах текущего фрейма, окне
открывшем текущее окно (opener), а также его родительских окнах. Пример кода для поиска
объекта SCORM API приведен в приложении 1 (функция getAPI).
Функции, предоставляемые SCORM API
Функции, предоставляемые Системой посредством SCORM API, подразделяются на 3
категории:
Функции работы с сессией передачи данных
Данные функции предназначены для инициализации и завершения сессии передачи данных
Initialize() – используется для инициализации коммуникационной сессии. Данная функция
должна быть вызвана до вызова функций передачи данных.
Terminate() – используется для завершения сессии и передачи установленных функцией
setValue данных для сохранения в Системе. После вызова функции Terminate вызовы всех
функций API, кроме вспомогательных функций, запрещены.
Пример кода вызова функций инициализации и завершения приведен в приложении 1 –
функции initialize() и terminate(). Рекомендуется прописывать вызов данных функций в
событиях onload и onunload HTML тега body.
Функции передачи данных
Данные функции предназначены для обмена данными с Системой. К ним относятся:
GetValue(parameter) – функция запрашивает у Системы значения элементов модели
данных. В качестве параметра передается строка – название элемента модели данных,
представленных в таблице «Поддерживаемые в рамках ТЗ элементы модели данных».
Возвращает значение элемента данных.
SetValue(parameter_1, parameter_2) – функция назначает значение parameter_2
элементу данных, описанному параметром parameter_1. Данная функция предназначена для
передачи данных в Систему.
Commit() – сохраняет данные, назначенные элементам модели данных
Вспомогательные функции
Данные функции предназначены для определения произошла ли ошибка, получения описания
и диагностики ошибки.
GetLastError() – возвращает код ошибки, возникшей после последнего вызова функции
API. Если ошибки не было, возвращается «0»
GetErrorString(parameter) – возвращает описание ошибки, соответствующей коду
parameter
GetDiagnostic(parameter) – возвращает дополнительную информацию об ошибке
Поддерживаемые в рамках ТЗ элементы модели данных
В рамках данной спецификации го технического задания будут поддерживаються следующие
элементы модели данных SCORM RTE для считывания и записи функциями getValue и
setValue:
Название элемента
cmi.learner_id
Описание элемента
Уникальный идентификатор пользователя, в рамках Системы –
логин пользователя
Элемент доступен только для чтения
cmi.learner_name
Фамилия, имя и отчество пользователля
Элемент доступен только для чтения
cmi.score.scaled
Оценка за вопрос. Проставляется в нормализованном виде
вещественным числом от 0,0 до 1,0 включительно. В
простейшем случае за правильный ответ проставляется 1,
за неправильный – 0.
Проставление оценки за ответ пользователя
обязательно в рамках данного ТЗ
Элемент доступен для чтения и записи
cmi.suspend_data
Переменная для хранения промежуточного значение ответа
пользователя. В процессе прохождения тестового задания
пользователь может, дав частичный ответ на вопрос, перейти
на другой вопрос тестового задания или открыть другой ЦОР.
При этом для восстановления состояния, на котором
остановился пользователь, или показа учителю как ответил
пользователь на данный вопрос, рекомендуется сохранять
ответ пользователя, а затем восстанавливать состояние
вопроса при помощи переменной cmi.suspend_data.
Принимаемое значение – строка в произвольном формате,
длиной до 4000 символов.
Элемент доступен для чтения и записи
Данный список может быть расширен на последующих этапах реализации ТЗ
3.2. Вопросы в формате IMS QTI
Тестовый вопрос в формате IMS QTI представляет собой файл в формате XML со
специальными элементами описания вопроса, а также набором стандартных элементов
XHTML. Каждый такой файл содержит один тестовый вопрос и должен быть включен в
тестовое задание с указанием атрибута adlcp:scormType="imsqti" (см. п. 4.2 регламента
описания ресурсов). Пример описания в файле декларации ЦОР:
<resource identifier="GUID вопроса"
type="webcontent"
adlcp:scormType="imsqti"
href="Lesson1/question1.xml">
<file>Lesson1/question1.xml</file>
<file>Вспомогательные файлы (опционально)</file>
. . .
</resource>
В отличие от тестовых вопросов, созданных в соответствии со спецификацией SCORM RTE,
вопросы, созданные в соответствии со спецификацией IMS QTI, не требуют знания языков
программирования (JavaScript) и более просты в реализации, однако типы тестов, которые
можно создать с их помощью, ограничены.
В данной версии регламента представлена возможность описания трех основных типов тестов:
«выбор одного из многих» (single choice), «выбор многих из многих» (multiple choice) и
«текстовый ввод» (text input). Данный список может быть расширен на последующих этапах
разработки Системы.
Оценивание тестовых вопросов осуществляется автоматически, в соответствии с
прописанным(и) в теге correctResponse значением(ями).
3.2.1 Спецификация
Ниже приведены элементы, используемые в рамках данной спецификации технического
задания. Атрибуты элементов приведены в колонке "Описание", их названия подчеркнуты.
№
Название
assessmentItem
responseDeclaration
Описание
Min Max
Обязательность в
рамках ТЗ
Корневой элемент описания тестового вопроса.
identifier – идентификатор вопроса (обязательный)
title – название вопроса (обязательный)
adaptive – указывает, является ли вопрос адаптивным. В
рамках данного ТЗ всегда имеет значение “false”
(обязательный)
timeDependent – указывает, имеет ли вопрос
ограничения по времени. В рамках данного ТЗ всегда
имеет значение “false” (обязательный)
1
1
Обязательный
Декларация переменной и ее параметров, описывающей
ответ пользователя. В данной спецификации
определяется только одна переменная с
идентификатором RESPONSE – ответ пользователя.
identifier – идентификатор переменной, всегда имеет
значение “RESPONSE”
cardinality – множественность переменной, для
вопросов типа «текстовый ввод», «выбор одного из
многих» и «творческая работа» имеет значение “single”,
1
1
Обязательный
для вопросов «выбор многих из многих» - “multiple”
baseType – тип переменной, для вопросов типа
«текстовый ввод» имеет значение "string", для вопросов
«выбор одного из многих» и «выбор многих из многих»
- "identifier", для заданий «творческая работа» - "file"
correctResponse
0
Описание правильного ответа
ignoreCase – для вопросов типа «текстовый ввод»
разрешается прописывать данный атрибут (не входящий
в спецификацию IMS QTI) со значением “true”,
указывающий, что при сравнении правильного ответа не
учитывается регистр
1
Значение правильного ответа.
В случае тестов «выбор одного из многих» и «выбор
многих из многих» указывается идентификатор
правильного ответа, прописанный тэге simpleChoice
(пример: <simpleChoice identifier="ChoiceB">)
В случае тестов «текстовый ввод» указывается
непосредственно значение правильного ответа
1
N Обязательный
outcomeDeclaration
Декларация переменных и ее параметров, выдаваемых
Системе. В данной спецификации определяется только
одна переменная SCORE – оценка за ответ.
identifier – идентификатор переменной, всегда имеет
значение “SCORE”
cardinality – множественность переменной, всегда имеет
значение “single”
baseType – тип переменной, всегда имеет значение
“integer ”
0
1
Обязательный для
тестовых вопросов
типа «выбор» и
«текстовый ввод»,
для заданий
«творческая
работа» - не
прописывается
itemBody
Тело тестового вопроса, которое отображается
пользователю. В данном элементе допустимы: один из
элементов взаимодействия (choiceInteraction
или textEntryInteraction), а также следующие
элементы XHTML для оформления тела вопроса: <a>,
1
1
Обязательный
value
Обязательный для
тестовых вопросов
типа «выбор» и
«текстовый ввод»,
для заданий
«творческая
работа» - не
прописывается
<abbr>, <acronym>, <address>, <b>, <big>,
<blockquote>, <br>, <caption>, <cite>,
<code>, <col>, <colgroup>, <dd>, <dfn>,
<div>, <dl>, <dt>, <em>, <h1>, <h2>, <h3>,
<h4>, <h5>, <h6>, <hr>, <i>, <img>, <kbd>,
<li>, <object>, <ol>, <p>, <param>, <pre>,
<q>, <samp>, <small>, <span>, <strong>,
<sub>, <sup>, <table>, <td>, <th>, <tr>,
<tt>, <ul>, <var>
choiceInteraction
simpleChoice
Элемент взаимодействия «Выбор». С помощью данного
элемента описываются тестовые вопросы типа «выбор
одного из многих» и «выбор многих из многих»
responseIdentifier - идентификатор переменной,
описывающей ответ пользователя, всегда имеет
значение “RESPONSE”
shuffle – указывает, перемешивать ли варианты ответа.
Для перемешивания вариантов должен иметь значение
“true”
maxChoices – может принимать следующие значения:
“0” – для типа «выбор многих из многих»
“1” – для типа «выбор одного из многих»
Варианты ответа
identifier – уникальный идентификатор варианта ответа
в рамках данного вопроса. Идентификатор
правильного(ых) варианта(ов) указывается(ются) в
Обязательный для
тестовых вопросов
типа «выбор …»,
для тестов типа
«текстовый ввод»
или «творческие
работы» - не
указывается
1
N Обязательный
элементе correctResponse
В данном элементе допустимы следующие элементы
XHTML для оформления тела вопроса: <address>,
<b>, <big>, <blockquote>, <br>, <cite>,
<code>, <div>, <dl>, <em>, <feedbackBlock>,
<feedbackInline>, <h1>, <h2>, <h3>, <h4>,
<h5>, <h6>, <hr>, <i>, <img>, <kbd>,
<object>, <ol>, <p>, <pre>,
<printedVariable>, <q>, <rubricBlock>,
<samp>, <small>, <span>, <strong>, <sub>,
<sup>, <table>, <templateBlock>,
<templateInline>, <tt>, <ul>, <var>
textEntryInteraction
Элемент взаимодействия «текстовый ввод». С помощью
данного элемента описываются тестовые вопросы типа
«текстовый ввод»
responseIdentifier - идентификатор переменной,
описывающей ответ пользователя, всегда имеет
значение “RESPONSE”
uploadInteraction
Элемент взаимодействия для сохранения файла. С
помощью данного элемента описываются задание
«творческая работа»
responseIdentifier - идентификатор переменной,
описывающей ответ пользователя, всегда имеет
значение “RESPONSE”
mimeType – тип (формат) файла
sampleFileURL – путь к шаблону задания (файл,
который предлагается дополнить учащимся)
responseProcessing
Определяет шаблон, по которому будет осуществляться 0
оценивание ответа пользователя.
template – url шаблона, в рамках ТЗ может принимать
одно значение:
"http://www.imsglobal.org/question/qti_v2p0/rptemplates/m
atch_correct" – точное сравнение со значением,
прописанным в элементе correctResponse
(обязательный атрибут)
Обязательный для
тестовых вопросов
типа «текстовый
ввод», для тестов
типа «выбор» или
«творческих работ»
- не указывается
1
Обязательный для
тестовых вопросов
типа «текстовый
ввод», и «выбор»,
для «творческих
работ» - не
указывается
Примеры описания тестов в соответствии со спецификацией IMS QTI представлены в
приложении 2Приложение 1
Пример JavaScript кода по взаимодействию со SCORM RTE
// Файл APIWrapper.js
// Переменная для отладки. Во время отладки устанавливается в true для показа
// отладочной информации, в финальном варианте должна быть false
var _debug = true;
// локальные переменные
var apiHandle = null;
var findAPITries = 0;
var noAPIFound = "false";
/*******************************************************************************
* Функция поиска SCORM API в текущем фрейме (window) и во всех
* родительских (parent)
* Параметры: объект window
* Возвращает: объект SCORM API, если таковой был найден, в противном случае - null
*******************************************************************************/
function findAPI( win )
{
while (win.API_1484_11==null && win.parent!=null && win.parent!=win)
{
findAPITries++;
if ( findAPITries > 100 )
{
alert( "Не удалось найти реализацию SCORM API." );
return null;
}
win = win.parent;
}
return win.API_1484_11;
}
/*******************************************************************************
* Функция возвращает SCORM API, если таковой был найден в текущем фрейме (window),
* в каком либо из его родительских (parent), в окне opener, или его
* родительских. В противном случае возвращается null.
*******************************************************************************/
function getAPI()
{
if ( apiHandle == null && noAPIFound == "false")
{
var theAPI = findAPI( window );
if (theAPI==null && window.opener!=null && typeof(window.opener)!="undefined")
theAPI = findAPI( window.opener );
if (theAPI == null)
{
alert( "Не удалось найти реализацию SCORM API." );
noAPIFound = "true";
}
else
apiHandle = theAPI;
}
return apiHandle;
}
/*******************************************************************************
* Данная функция вызывается для инициализации сессии. Функция должна вызываться
* до вызовов getDataValue, setDataValue, или terminate
* Возвращает: "true", если процесс инициализации прошел успешно, в противном
*
случае - "false".
*******************************************************************************/
function initialize()
{
var result = "false";
var api = getAPI();
if(api != null)
{
result = api.Initialize("");
if ( result != "true" )
displayErrorInfo(getLastErrorCode());
}
return result;
}
/*******************************************************************************
* Данная функция вызывается для завершения сессии. После ее вызова нельзя
* вызывать функции initialize, getDataValue или setDataValue
* Возвращает: "true", если прошло успешно, в противном случае - "false".
*******************************************************************************/
function terminate()
{
var result;
var api = getAPI();
if (api != null)
{
result = api.Terminate("");
if ( result != "true" )
displayErrorInfo(getLastErrorCode());
}
return result;
}
/*******************************************************************************
* Функция запрашивает у Системы значение модели данных. Может вызываться после
* вызова initialize, но до вызова terminate
* Параметры: название элемента модели данных (напр. "cmi.learner_id")
* Возвращает: значение запрашиваемых данных
*******************************************************************************/
function getDataValue(name)
{
var result = "";
var api = getAPI();
if ( api != null )
{
result = api.GetValue(name);
var errCode = getLastErrorCode();
if (errCode != "0")
displayErrorInfo(errCode);
}
return result;
}
/*******************************************************************************
* Функция сохраняет значение в модели данных, определенное значением name.
* Может вызываться после вызова initialize, но до вызова terminate.
* Параметры: name - название элемента модели данных
*
value - сохраняемое значение
* Возвращает: "true" - если успешно, "false" - при ошибке.
*******************************************************************************/
function setDataValue(name, value)
{
var result = "false";
var api = getAPI();
if ( api != null )
{
result = api.SetValue( name, value );
if ( result != "true" )
displayErrorInfo(getLastErrorCode());
}
return result;
}
/*******************************************************************************
* Донная функция дает команду Системе на сохранение последних изменений.
* Может вызываться после вызова initialize, но до вызова terminate.
*******************************************************************************/
function commitData()
{
var result = "false";
var api = getAPI();
if ( api != null )
{
result = api.Commit("");
if ( result != "true" )
displayErrorInfo(getLastErrorCode());
}
return result;
}
/*******************************************************************************
* Функция возвращает код последней ошибки.
* Возвращает: строку с кодом ошибки (возвращает "0" - если не было ошибки).
*******************************************************************************/
function getLastErrorCode()
{
var api = getAPI();
return (api==null?"":api.GetLastError());
}
/*******************************************************************************
* Вспомогательная функция для показа информации об ошибке (код ошибки, описание
* и диагностическую информацию)
* Параметры: errCode - код ошибки
*******************************************************************************/
function displayErrorInfo(errCode)
{
var errString, errDiagnostic;
if ( _debug )
{
var api = getAPI();
if ( api != null )
{
errString = api.GetErrorString(errCode);
errDiagnostic = api.GetDiagnostic("");
}
alert( "ERROR: " + errCode + " - " + errString + "\n" +
"DIAGNOSTIC: " + errDiagnostic );
}
}
Приложение 2
Примеры описания тестовых вопросов в соответствии со спецификацией IMS QTI
Пример 1. Описание тестового вопроса типа «выбор одного из многих»
<?xml version="1.0" encoding="UTF-8" ?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p0"
identifier="GUID1"
title="Пример тестового вопроса "Выбор одного из многих ""
adaptive="false"
timeDependent="false"
>
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
<correctResponse>
<value>ChoiceB</value>
</correctResponse>
</responseDeclaration>
<outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer" />
<itemBody>
<p><b>Выберите один правильный ответ из предложенных вариантов</b></p>
<p>На графике показана зависимость скорости тела от времени при прямолинейном движении
в инерциальной системе отсчета. Можно утверждать, что другие тела не действовали на это
тело (или их действие было скомпенсировано) в промежутки времени...
</p>
<p>
<img src="images/graph.png" />
</p>
<choiceInteraction responseIdentifier="RESPONSE" shuffle="false" maxChoices="1">
<simpleChoice identifier="ChoiceA">0-1 c </simpleChoice>
<simpleChoice identifier="ChoiceB">1-2 c </simpleChoice>
<simpleChoice identifier="ChoiceC">2-3 c </simpleChoice>
</choiceInteraction>
</itemBody>
<responseProcessing
template="http://www.imsglobal.org/question/qti_v2p0/rptemplates/match_correct" />
</assessmentItem>
Общий вид тестового вопроса, описанного в примере 1, будет следующим:
Пример 2. Описание тестового вопроса типа «текстовый ввод»
<?xml version="1.0" encoding="UTF-8" ?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p0"
identifier="textEntry"
title="Пример тестового вопроса "Текстовый ввод ""
adaptive="false"
timeDependent="false"
>
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="string">
<correctResponse>
<value>0,5</value>
</correctResponse>
</responseDeclaration>
<outcomeDeclaration identifier="SCORE" cardinality="single" baseType="integer" />
<itemBody>
<p> <b> Введите правильный ответ с клавиатуры</b></p>
<p>
Когда цепь разомкнута (см. рис.), идеальный вольтметр показывает 8 В. При замкнутой
цепи вольтметр показывает 7 В. Сопротивление внешней цепи равно 3,5 Ом. Чему равно
внутреннее сопротивление источника тока?
</p>
<p>
<img src="images/schem1.gif" />
</p>
<p>
<textEntryInteraction responseIdentifier="RESPONSE"/>
Ом.
</p>
</itemBody>
<responseProcessing
template="http://www.imsglobal.org/question/qti_v2p0/rptemplates/ match_correct" />
</assessmentItem>
Общий вид тестового вопроса, описанного в примере 2, будет следующим:
Пример 3. Описание тестового вопроса типа «творческая работа»
<?xml version="1.0" encoding="UTF-8" ?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p0"
identifier="GUID1"
title="Пример тестового вопроса " творческая работа ""
adaptive="false"
timeDependent="false"
>
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="file" />
<itemBody>
<p>Дополните документ ...</p>
<uploadInteraction responseIdentifier="RESPONSE" mimeType="application/msword"
sampleFileURL="sample.doc"/>
</itemBody>
</assessmentItem>
Download