Difference between revisions of "Задача:tests"

From EjudgeWiki
(Проверка тестовых файлов)
Line 28: Line 28:
 
=== Проверка тестовых файлов ===
 
=== Проверка тестовых файлов ===
  
Проверка тестовых файлов выполняется с помощью [[Test checkers|программы проверки тестов]]. Программе проверки тестов передается каждый тестовый файл и файл с правильным ответом, предоставленные участником. Если на какой-либо паре файлов программа проверки тестов сообщает об ошибке, предоставленные участником тесты признаются некорректными, выдается ошибка [[Presentation error]],
+
Проверка тестовых файлов выполняется с помощью [[Test checkers|программы проверки тестов]]. Программе проверки тестов передается каждый тестовый файл и файл с правильным ответом, предоставленные участником. Если на какой-либо паре файлов программа проверки тестов сообщает об ошибке, предоставленные участником тесты признаются некорректными, выдается [[ошибка неправильного формата результата]], и дальнейшая проверка не производится.
и дальнейшая проверка не производится.
 
  
 
=== Запуск на тестовом наборе программ ===
 
=== Запуск на тестовом наборе программ ===
  
 
Каждая тестовая программа запускается на всех предоставленных участником тестах. Для каждого запуска устанавливаются ограничения на время работы и объем памяти. Результат работы программы сравнивается с ответом, предоставленным участником, с помощью проверяющей программы.
 
Каждая тестовая программа запускается на всех предоставленных участником тестах. Для каждого запуска устанавливаются ограничения на время работы и объем памяти. Результат работы программы сравнивается с ответом, предоставленным участником, с помощью проверяющей программы.

Revision as of 12:58, 30 June 2010

Навигация: Главная страница/Система ejudge/Использование/Виды задач/Задача на написание тестов

Задача на написание тестов является "обратной" к стандартной задаче на написание программ. В задаче на написание тестов требуется разработать тестовый набор для тестирования некоторой задачи. Тестовый набор должен быть корректным и полным.

Такие задачи тестируются с помощью запуска заранее подготовленного набора программ на предоставленном участнике наборе тестов. Среди программ могут быть как правильные, так и неправильные программы. Правильные программы должны проходить все предоставленные участником тесты. Каждая неправильная программа должна не пройти хотя бы один из предоставленных участником тестов.

Участник сдает набор тестов в виде архива определенной структуры. Тестирование предоставленных тестов выполняется в несколько этапов.

Подготовка задачи на написание тестов

Проверка архива на корректность

Проверка архива на корректность выполняется с помощью программы проверки стиля на этапе "компиляции" поступившего архива. При этом проверяются ограничения на количество и размер файлов, соблюдение правил именования тестовых файлов и пр. Для проверки архивов формата TGZ можно использовать программу style_archive.

Нормализация тестовых файлов

Нормализация тестовых файлов выполняется на этапе "выполнения" поступившего архива. Для каждого тестового файла и файла с правильным ответом выполняются следующие действия.

  1. Замена DOS-концов строк на Unix-концы строк, то есть удаление символа \r перед символом \n в концах строк.
  2. Добавление символа \n в конец последней строки файла, если она не заканчивается этим символом.
  3. Удаление пробельных символов после последнего непробельного символа каждой строки.
  4. Удаление пустых строк в конце файла.

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

Проверка тестовых файлов

Проверка тестовых файлов выполняется с помощью программы проверки тестов. Программе проверки тестов передается каждый тестовый файл и файл с правильным ответом, предоставленные участником. Если на какой-либо паре файлов программа проверки тестов сообщает об ошибке, предоставленные участником тесты признаются некорректными, выдается ошибка неправильного формата результата, и дальнейшая проверка не производится.

Запуск на тестовом наборе программ

Каждая тестовая программа запускается на всех предоставленных участником тестах. Для каждого запуска устанавливаются ограничения на время работы и объем памяти. Результат работы программы сравнивается с ответом, предоставленным участником, с помощью проверяющей программы.