OCA Учебник online                   

"Узнать можно лишь тогда, когда учишься".
Вьетнамская пословица

Описание опросника теста в виде паспорта ОСА
Для понимания нижеследующего материала важно знать правила создания паспорта ОСА.
Опросник для тестирования представляет собою стандартный паспорт формата ОСА. Однако при его составлении следует учитывать некоторые особенности программы тестирования (MakeFormPsy) и не забывать о существовании некоторых специальных управляющих директив, рассматриваемых ниже.

Первой важной особенностью является то, что признаки имеющие шкалу каталог в качестве ответа принимают небольшие тексты (до 250 символов). Это необходимо для фиксации некоторых социально-демографических параметров тестируемого, например, фамилии и имени. В шкалах типа каталог также следует не забывать ставить тег @no_catalogue_confirm, чтоб избежать лишних окон подтверждения ввода. Таким образом, вопрос о фамилии и имени испытуемого будет выглядеть так:

Укажите ваше имя и фамилию
Укажите ваше имя и фамилию
m
***
@catalogue
@no_catalogue_confirm
/

Вторая особенность состоит в том, что признаки в паспорте делятся на две группы. Первая – это признаки, содержащие вопросы на которые отвечает испытуемый. Вторая группа (располагается после первой) состоит из признаков, содержащих результаты тестирования. Эти признаки невидимы для испытуемого. Обычно они содержат только некоторые расчетные коды, соответствующие определенным характеристикам и, как следствие, имеют метрическую шкалу. Создание текстовых описаний, соотвествующих этим кодам, будут рассмотрены в следующем разделе.
Первая и вторая из вышеупомянутых групп разделяются директивой @%psy_end. Этой директивой должен быть отмечен последний из видимых испытуемому признаков.
Пример:

Спасибо за прохождение теста
Спасибо за прохождение теста
n
1 Далее
***
@%psy_end
/

Также в последнем из признаков, заполняемых тестируемым, обычно находятся ключи теста (расчет результатов).
Расчет производится обычно с помощью двух директив @%psy_putitm и @%psy_additm. Директива @%psy_putitm записывает в указываемый признак указанное значение в случае выполнения некого условия.
@%psy_putitm А; B -> C
где А – условие в формате ОСА при выполнении которого, производится запись; B - значение которое слудуеи записать (может быть в виде формулы), С – признак в который будет произведена запись. Директива @%psy_additm записывается аналогично предыдущей директиве и отличается тем, что не записывает некое значение в признак, а добавляет его к уже содержащемуся там значению. Рассмотрим пример вычисления ключа на основе ответа на некие вопросы sign1 и sign2. Обратите внимание, что первой же командой по вычислению ключа в признак, содержащий результат, записывается 0. Настоятельно рекомендуется всегда так поступать.

Спасибо за прохождение теста
Спасибо за прохождение теста
n
1 Далее
***
@%psy_end

@%psy_putitm 1=1; 0 -> [res]
@%psy_additm #[sign1]#=1; 1 -> [res]
@%psy_additm #[sign1]#=2; 3 -> [res]
@%psy_additm 1=1; #[sign2]#+1 -> [res]
/

Результат теста
Результат теста
m
***
@qname=res
/

В вышеприведенном примере результат теста описывается следующими условиями. Если на вопрос sign1 в качестве ответа был выбран вариант 1, то испытуемому записывают 1 бал, если вариант 2, то 3 бала. Кроме того, к полученным балам добавляют номер варианта выбранного ответа в признаке sign2 увеличенный на 1.

Важной директивой является @%psy_putname. Ею следует отметить признак, который будет использоваться как определяющий то, какой именно человек заполнял тест. Обычно это признак, содержащий ФИО или некий универсальный код испытуемого. Именно значение этого признака будет выводиться для идентификации результатов теста в базе данных результатов тестирования.
Пример:

Укажите ваше имя и фамилию
Укажите ваше имя и фамилию
m
***
@catalogue
@no_catalogue_confirm
@%psy_putname
/

Часто перед началом теста испытуемому сообщается некая инструкция по будущим вопросам. Так как такая инструкция зачастую является достаточно объемной и не может поместиться в тексте вопроса, который ограничен 256 символами. Для таких случаев существуют директивы @%psy_instruction и @%/psy_instruction. Если эти директивы присутствуют, вместо текста вопроса будет выведен текст, содержащийся между ними. Каждая строка этого текста (как и любая другая строка паспорта) не должна быть более 255 символов. При выводе все строки будут объединены в общий текст. Если для повышения читабельности инструкции следует ее разбить на отдельные строки это можно сделать, обозначая конец строки сочетанием символов [br].
Пример:

Тест 1
Тест 1
n
1 Далее
***
@%psy_instruction
Тест 1[br]
Первая строка инструкций[br]
Вторая строка инструкций.
Продолжений второй строки инструкций[br]
Третья строка инструкций
@%/psy_instruction
/

Также [br] можно использовать в тестах вопросов для принудительного разбиения их на несколько строк.
Кроме того, в вопросе могут содержаться картинки. Для этого все используемые картинки следует сложить в папку, находящуюся в папки с проектом. После чего для загрузки изображения следует использовать конструкцию [i]А[/i], где А – папки содержащей изображение (в папке с проектом), косая черта, имя файла с изображением.
Пример:

Картинка [i]pics\mypicture.jpg[/i]
Картинка [i]pics\mypicture.jpg[/i]
n
1 Нравится картинка
2 Не нравится картинка
/

Рассмотрим другие дополнительные директивы.
Директива @%psy_autoend может содержаться в любом признаке теста. Ее появление означает, что после того как будет дан ответ на последний вопрос теста (вопрос, помеченный директивой @%psy_end), программа автоматически закроется. Указывать данную директиву рекомендуется в первом признаке паспорта.

Директива @%psy_mess позволяет контролировать правильность вводимой испытуемым информации. Формат записи директивы следующий:
@%psy_mess А -> В
где А – условие в формате ОСА, В – сообщение которое будет выведено если условие выполняется (при этом перехода к следующему признаку не будет).
Пример:

Выберите 2 параметра из списка
Выберите 2 параметра из списка
j
1 Параметр 1
2 Параметр 2
3 Параметр 3
4 Параметр 4
5 Параметр 5
***
@qname=mysign
@%psy_mess caj([mysign])<>2 -> Вы указали не два параметра!
/

Директива @%psy_starttimer. После ответа на признак, содержащий такую директиву, будет запущен таймер, отсчитывающий время в секундах. Перед каждым новым запуском значение таймера обнуляется.
Директива @%psy_timerjump – это прыжок по условию, касающемуся текущего значения таймера. Записывается в формате:
@%psy_timerjump А -> В С
где А – количество секунд при наступлении которого (или превышении которого) происходит переход на признак В. Все признаки находящиеся между текущим признаком и признаком В будут прописаны значением С. Проверка осуществляется после ответа на признак, содержащий директиву. Используя эту директиву можно зафиксировать как быстро человек отвечает на те или иные вопросы, ограничить время прохождения теста по времени.
Пример (в четвертом признаке примера описывать прыжок необязательно):

Отвечая на следующие 3 вопроса, вы должны потратить не более 1 минуты
Отвечая на следующие 3 вопроса, вы должны потратить не более 1 минуты
n
1 Далее
***
@%psy_starttimer
/
Вопрос 1
Вопрос 1
n
1 Ответ 1
2 Ответ 2
3 Ответ 3
***
@%psy_timerjump 60 -> [end] $
/
Вопрос 2
Вопрос 2
n
1 Ответ 1
2 Ответ 2
3 Ответ 3
***
@%psy_timerjump 60 -> [end] $
/
Вопрос 3
Вопрос 3
n
1 Ответ 1
2 Ответ 2
3 Ответ 3
***
@%psy_timerjump 60 -> [end] $
/
Спасибо за прохождение тестирования
Спасибо за прохождение тестирования
n
1 Далее
***
@qname=end
/

Также обратите внимание, что в вышеупомянутых директивах @%psy_putitm и @%psy_additm в качестве записываемого значения можно использовать служебные команды:
Day – записывается сегодняшнее число (число от 1 до 31). Значение берется из даты установленной на компьютере.
Мonth - записывается текущий месяц (число от 1 до 12). Значение берется из даты установленной на компьютере.
Year – записывается текущий год. Значение берется из даты установленной на компьютере.
Random – записывается случайное число в диапазоне от 1 до 1000.
Timer – записывается текущее значение вышеописанного таймера (запускаемого директивой @%psy_starttimer) в секундах.