УДК [004.78::159.9.072]:004.434
СИСТЕМА ПРОФИЛЬНОГО ТЕСТИРОВАНИЯ ПРОФТЕСТ: СРЕДСТВА АВТОМАТИЗАЦИИ РАЗРАБОТКИ ТЕСТОВ И ТЕСТИРОВАНИЯ
Пекунов В.В.
Тестирование широко применяется в образовании, психологической практике, управлении (при оценке профессионально значимых качеств для принятия решений по персоналу) и в других областях. Учитывая, что количество потенциально автоматизируемых операций в тестировании очень велико, закономерно возникновение множества программных разработок различного уровня, автоматизирующих процедуру тестирования в рамках одного или нескольких тестов (см., например, [1, 2]). Наиболее часто такие программы создаются под определенный тест, обладают уникальным интерфейсом, хранят результаты тестирования в локальных базах данных.
Более сложные системы реализуют наборы определенных тестов (68 и более) с единым интерфейсом, комплексной постобработкой результатов, выдачей рекомендаций. Здесь можно назвать программные разработки, реализующие комплексы психодиагностических методик, например, КОНСУЛ-ИНТЕГРАТОР 2.0. Однако подобные системы не автоматизируют процесс разработки тестов. В результате, добавление новых тестов требует значительных временных затратах на программирование с привлечением высококвалифицированных специалистов.
Известны системы [3, 4, 5], в которых сделаны попытки полной автоматизации процессов разработки некоторых видов тестов со стандартизованными алгоритмами постобработки результатов. Однако в сложных случаях (например, для факторного личностного опросника Р.Кеттела или теста Розенцвейга по изучению реакций на фрустрацию) алгоритмы постобработки нетривиальны. Поэтому актуальны задачи автоматизации: а) разработки широкого класса тестов с различными видами постобработки; б) тестирования по данным тестам в рамках единой системы.
В данной работе описывается решение перечисленных задач в системе профильного тестирования ПРОФТЕСТ. Автоматизация разработки широкого класса тестов достигается путем использования проблемно-ориентированного языка описания тестов, что обеспечивает: а) добавление и удаление любых тестов без перепрограммирования системы; б) быструю разработку тестов; в) широкие возможности алгоритмической постобработки результатов теста с генерацией рекомендаций; г) возможность динамического определения количества и порядка задаваемых вопросов в зависимости от предыдущих ответов и/или результатов прохождения других тестов; е) унифицированный интерфейс тестов.
Рассмотрим кратко язык описания тестов. Язык несложен, имеет высокий уровень, не содержит “опасных” функций, позволяющих выйти за пределы отведенного ему информационного пространства, что обеспечивает высокую надежность системы. От лица, осуществляющего программирование теста, не требуется высокой программистской квалификации. Тесты сохраняют результаты в единой базе и, соответственно, один тест может с легкостью использовать результаты другого теста.
Язык включает два подмножества: а) средства описания типовых элементов теста (вопросов, ответов, инструкции, блоков текста, профилей); б) средства описания алгоритмов подачи вопросов и обработки ответов. Описания вопросов содержат элементы разметки, указывающие взаимное расположение строк текста, блоков текста и рисунков. Описания ответов дополнительно содержат элементы разметки, указывающие расположение и параметры диалоговых элементов (строки ввода чисел и символьных последовательностей, кнопки с текстом и графикой).
Средства описания алгоритмов содержат следующие группы операторов: определения переменных (Define), управления выполнением (ветвление If-Then[-Else]-EndIf и циклы While-EndW, For-EndF неограниченных уровней вложенности), управления подачей вопросов, контроля времени тестирования, вывода текстовых и графических данных о результатах тестирования, работы с общей базой данных, работы с профилями. Предусмотрена возможность расширения языка за счет подключения к системе динамически подгружаемых библиотек (в формате DLL), содержащих определения и реализации новых операторов.
Различаются системные переменные и переменные, определяемые пользователем. Системные переменные хранят информацию о текущем пользователе и о состоянии системы. Информация о пользователе (его возраст, факт наличия или отсутствия высшего образования) позволяет оперативно адаптировать содержание теста и алгоритм обработки результатов. Информация о состоянии системы используется, преимущественно, для различения режимов тестирования и просмотра результатов. В режиме просмотра результатов тест исполняется также, как и при тестировании, с той разницей, что ответы пользователя читаются из базы данных. При этом целесообразно отключить вывод инструкции к тесту и некоторых сообщений, что и производится с помощью отслеживания значений системных переменных.
В языке поддерживается два типа выражений: числовые (с плавающей запятой) и строковые. Числовые выражения могут трактоваться как логические (по аналогии с языком Си) и как указатели на другие переменные. Переменные, определяемые пользователем, могут иметь четыре типа: Number (вещественное число), String (символьная строка), Array (числовой массив), Lines (строковый массив). Возможно использование встроенных функций (арифметических, строковых, преобразования типа). Реализацию алгоритмов обработки значительно облегчают специальные операции доступа к ответам пользователя: определения порядка, в котором были активизированы диалоговые элементы ответа; извлечения значений, ассоциированных с диалоговыми элементами (числовых и символьных для строк ввода, логических “0” и “1” для кнопок). Приведем пример описания психологического теста “Тест на память”:
Instruction
В течение 2 минут необходимо расставить в свободных клетках нижнего квадрата в возрастающем порядке числа, расположенные в случайном порядке в 25 клетках верхнего квадрата. Числа записываются построчно.
EndI
Answer(A1,1)
   #|#|#|#|#
   #|#|#|#|#
   #|#|#|#|#
   #|#|#|#|#
   #|#|#|#|#
   !Числа расставлены
EndA
Question(Q1):A1
   &PictureScale(200,200)
   $TEST4.gif
EndQ
Main
    Define NumAnsw:Number = 25
    Size(obWindow,800,600)
    Title('Тест на память')
    Open
% Демонстрируем инструкцию только в режиме тестирования
    If Loading=0 And LoadTimeOut=0
       ShowInstruction
    EndIf
% Запуск таймера и начало теста
    StartTimer(2,0)
% Вопросы задаются в порядке следования в описании
    Ask(Default)
    SaveResults
    StopTimer
% Определяем верную последовательность чисел
    Define Answers:Array[1:NumAnsw] = {2,7,8,13,16,18,21,29,34,35,37,40,43,46,54,59,60,65,67,77,80,84,92,98,99}
    Define Count:Number
    Define Result:Number = 0
% Подсчитываем число правильных ответов
    For (Count:=1; Count<=NumAnsw; Count:=Count+1)
       Result:=Result+(@Questions[1][Count]=Answers[Count])
    EndF
% Вывод результатов
    ClearPut
    PutTitle('Результаты теста')
    PutCenterLine('Количество правильных ответов = ',Result)
    PutCenterLine('Процент правильных ответов = ',Result/25*100,'%')
    ShowPut
EndM
Интерпретатор языка использует нисходящую схему грамматического разбора выражений высокого уровня и восходящую схему для анализа арифметических и строковых выражений. Применено динамическое кэширование результатов трансляции выражений в обратную польскую запись, за счет чего достигается высокая скорость работы.
Задача автоматизация тестирования в рамках единой системы решается с помощью унифицированных многопользовательских подсистем администрирования и тестирования, взаимодействующих через общую базу данных. Защита от несанкционированного доступа осуществляется с помощью разграничения прав доступа для трех уровней пользователей системы:
1. Администратор системы (высший уровень доступа). Администратор регистрирует конечных пользователей и объединяет их в группы, вводит в систему новые тесты и обновляет имеющиеся, формирует группы тестов, формирует программы тестирования, назначает супервизоров и определяет их полномочия. Администратором является лицо, имеющее доступ к подсистеме администрирования и знающее соответствующий пароль.
2. Супервизор (средний уровень доступа). Супервизор имеет право просмотра результатов тестирования тех групп пользователей, которые определены для него администратором.
3. Конечный пользователь (низший уровень доступа). Конечный пользователь имеет право проходить определенный для него набор тестов и просматривать свои результаты тестирования.
Подсистема администрирования выполняет следующие функции:
•	регистрации тестов в системе;
•	группировки тестов;
•	регистрации и группировки пользователей;
•	создания программ тестирования путем определения входящих в них групп тестов;
•	назначения программ тестирования группам пользователей;
•	определения прав доступа для супервизоров.
Подсистема тестирования выполняет функции:
•	тестирования конечных пользователей;
•	просмотра результатов тестирования (числовых оценок, профилей, текстовых рекомендаций);
•	генерации отчетов в формате Word 97;
•	формирование по результатам тестирования текстовых рекомендаций и ссылок на материалы, размещенные в глобальной сети Internet.
Система ПРОФТЕСТ существует в двух версиях — локальной (база данных Paradox) и сетевой (СУБД Oracle 8). Система создавалась в рамках проекта “Разработка технологии формирования персонифицированных образовательных программ и их консалтинговое сопровождение при подготовке и повышении квалификации топ-менеджеров инновационных проектов”. Реализован блок из 27 контролирующих тестов по курсу “Маркетинг” с генерацией рекомендаций по повторному изучению материала. В систему введено около 60 психологических тестов различной сложности. Система внедрена в ОАО “Лукойл-Коми” и ОАО “Ивтелеком” для квалифицированной оценки персонала. Временные затраты на ввод одного теста незначительной сложности составляют менее 1 рабочего дня, средней сложности — 12 рабочих дня, что было бы затруднительно при индивидуальном программировании тестов на универсальных языках.
Автор считает своим долгом выразить благодарность М.А. Первовскому за ценные предложения по совершенствованию языка описания тестов, а также И.В. Малкову и А.В. Никонорову за участие в обсуждении концепции системы.
Выводы
Впервые предложены основные принципы проблемно-ориентированного языка описания тестов, применение которого позволяет автоматизировать разработку широкого класса тестов. Автоматизация тестирования в рамках единой системы обеспечивается унифицированными подсистемами администрирования и тестирования, взаимодействующими через общую базу данных.
Данный подход обеспечивает: а) добавление и удаление любых тестов без перепрограммирования системы; б) быструю разработку тестов; в) широкие возможности алгоритмической постобработки результатов теста с генерацией рекомендаций; г) возможность динамического определения количества и порядка задаваемых вопросов в зависимости от предыдущих ответов и/или результатов прохождения других тестов; е) единый унифицированный интерфейс тестов.
Библиографический список
1. Петренко А.К., Саммаль А.С., Логунов В.В. Возможности и опыт применения ПЭВМ в преподавании общетехнической дисциплины // Прикладные проблемы образовательной деятельности: Межвуз. сб. науч. тр. - Воронеж: ВГПУ, 2002. - Вып. 8. - С.117-120.
2. Иванищук П.П. и др. Принцип составления обучающих и контролирующих компьютерных программ по медицинской паразитологии // Сб. ст. VII Междунар. науч.-техн. конф. "Информационная среда вуза". - Иваново, 2000. - С.45-47.
3. Пантелеев Е.Р., Ковшова И.А., Малков И.В., Пекунов В.В., Первовский М.А., Юдельсон М.В. Среда разработки программ дистанционного обучения и профильного тестирования ГИПЕРТЕСТ: инструментальные средства // Информационные технологии, 2001. - №8. - С.34-40.
4. Автоматизированная система психологического тестирования. — http://www.jba.ru/psy/psy1.htm
5. SunRav TestOfficePro - пакет программ для создания, проведения тестов и обработки результатов. — http://www.sunrav.ru/srtop