2.2.1 Разработка тестов. 2.2.2 Разработка тестирующей программы
2. 2. 1 Разработка тестов Тесты предлагается формировать в виде строки, которая содержит: · заголовок теста, указывающий номер теста (n) в виде " Тест №n. "; · основную часть, состоящую из утверждения (или вопроса) по заданной тематике и трех вариантов ответа, каждый из которых имеет номер (1, 2, 3) и задается с новой строки; · эталонное значение, отделенное от основной части точкой с запятой. Имеется несколько подходов к формированию вариантов ответа и эталонного значения. Например, из всех вариантов ответа только один вариант сделать правильным, а остальные – неправильными. Но при таком подходе и при трех вариантах ответа полуается слишком большая вероятность угадывания правильного ответа (1/3). Чтобы не увеличивать число вариантов ответа предлагается такой подход к формированию тестов. import pickle
f= open ( 'tests. dat', 'wb' ) Таким образом в соответствии с выше описанным подходом сформировано пять тестов в виде списка строк TESTS, который с помощью метода dump() модуля pickle в сериализованном виде записан в двоичный файл tests. dat и в последствии может быть использован для получения тестов (см. подраздел 2. 2. 1). Оглавление 2. 2. 2 Разработка тестирующей программы В качестве примера серверного приложения, осуществляющего AJAX-взаимодействие с клиентским приложением (см. пример №2 в подразделе 2. 1) разработана программа testing. py: #! c: /. . . /python. exe max_test=3
Оглавление В начале своей работы программа testing. py подключает необходимые ей для работы модули: cgi, cgitb, random, pickle и функцию write_results с константой D из модуля my_mod. После получения запроса от клиента программа преобразует, используя метод parse() модуля cgi, полученные данные в словарь data и осуществляет их анализ. · с помощью функции get_test('tests. dat'), аргументом которой является имя файла, содержащего разработанные тесты (см. подраздел 2. 2. 1), осуществляется выбор теста с именем test: § из файла, заданного аргументом filename, выполняется с помощью метода load() модуля pickle чтение двоичных данных и преобразование их в список тестов test_list; § с помощью метода choice() модуля random из списка test_list осуществляется случайный выбор теста и занесение его содержимого в переменную test; § производится удаление этого теста из test_list и запись с помощью метода dump() модуля pickle измененного списка тестов в файл " cur_tests. dat", который отличается от файла " tests. dat" тем, что содержит только те тесты, вкоторые еще не были использованы при тестировании; § возвращается содержимое выбранного теста; · у выбранного теста выделяется его часть, не содержащая эталонное значение, и передается клиенту в следующем виде (см. подраздел 2. 2. 1): Тест №3. Выполняется удаление существующего файла: · выполняется создание словаря пользователя user_dict и инициализация его элементов: § элемент с ключем " name" класса str получает значение имени, переданное клиентом – data['name'][0]; § элемент с ключем " number_test" класса int, предназначенный для хранения числа переданных клиенту тестов, получает значение 1; § элемент с ключем " tests" класса list, предназначенный для хранения тестов, переданных клиенту, получает значение переменной test; § элемент с ключем " answers" класса list, предназначенный для хранения ответов пользователя при тестировании, получает пустое значение ([]), поскольку на этом этапе от клиента было получено только имя пользоватея;
§ элемент с ключем " points" класса int, предназначенный для хранения числа набранных баллов получает начальное значение 0. · текущее состояние словаря пользователя user_dict запоминается в файле 'user. dat'; Если клиентская часть передает значение ответа пользователя, т. е. словарь полученных данных data содержит ключ " answers", то выполняются следующие действия: · производится считывание из файла 'user. dat' текущего значения словаря данных пользователя и добавление в его элемент с ключем 'answers', хранящий в виде списка ответы пользователя, значение очередного ответа; · из словаря пользователя выбирается список тестов, заданных пользователю, в нем определяется последний тест и из этого теста берется эталонное значение, которое заносится в переменную etalon; · производится сравнение полученного от пользователя ответа с эталонным значением и, если ответ правильный, число набранных баллов пользователя увеличивается на 1; · проверяется текущее значение числа проведенных тестов (элемент " number_test" словаря данных пользователя) с числом тестов, указанных для тестирования (max_test) и, если оно меньше, т. е. тестирование не закончено, то выполняются следующие действия: § чтение с помощью функции get_test('cur_tests. dat') модифицированного набора тестов (чтобы тесты не повторялись), случайный выбор одного из них, модификаця файла 'cur_tests. dat' и передача клиенту очередного теста; § производится изменение элементов с ключами " number_test" и " tests" словаря пользователя – значение " number_test" увеличивается на 1, к значению " tests" добавляется новый тест; § текущее состояние словаря пользователя user_dict запоминается в файле 'user. dat'; · если значение элемента " number_test" равно или больше max_test, то тестирование прекращается и его результаты передаются клиенту с помощью функции write_results() (описание функции см. в подразделе 2. 2. 3): Результаты тестирования: Оглавление
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|