Тестсеты

Последняя правка 3792 дня назад
Материал из Daysper manual
Перейти к навигации Перейти к поиску

(Это — скорее "концепция", чем строгий стандарт.)

Тестсет (надо бы придумать подходящее русское выражение; "набор тестов" мне не нравится) — это группа тестов, выделенная отдельно от остальных с тем, чтобы можно было эти тесты включить в итоговый набор тестов, используемый в тестирующей системе, а можно было бы и не включать.

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

Таким образом, тестсеты существуют только на уровне генераторов тестов, .d-файлов и т.д. В тестирующую систему отправляются уже сгенерированные тесты — результат конкатенации одного или более тестсетов. Даже при экспортировании в .cmd/.sh-файлы уже происходит конкатенация.

Использования тестсетов[править | править код]

  • Тесты из условия рекомендуется выделять в отдельный тестсет с идентификатором st (от слова statement). После этого daysper может быть настроен на то, чтобы автоматически добавить эти тесты в условие. Более того, тогда желающие могут включать эти тесты в множество тестов, используемых в тестирующей системе, а не желающие могут и не включать.
  • Можно подумать над использованием тестсетов для поддержки "простых" версий задач, отличающихся от основных ограничениями.
  • Можно даже подумать над использованием тестсетов для хранения того, что сейчас называется "вариантами" задачи.

Требования к тестсетам[править | править код]

(Знаком вопроса помечено то, что пока не реализовано и неизвестно, когда будет реализовано)

  • Каждый тестсет должен состоять из:
    • Скрипта генерации тестов. Это — единственный обязательный компонент тестсета; более того, по каждой задаче множество имеющихся тестсетов нигде не фиксируется, а считается равным множеству скриптов генерации тестов в каталоге с тестами. Скрипт должен называться do_id.ext, где id — строка-идентификатор этого тестсета, а ext — стандартное расширение скриптов генерации тестов (.d).
    • (optional) (?) Валидатора. Он должен называться validate_id.*; при его отсутствии должен использоваться верификатор validate.*.
    • (optional) (?: если подразумевать варианты задачи = тестсеты) Решения
    • (optional) (?: если подразумевать варианты задачи = тестсеты) Условия
  • Должен существовать тестсет с идентификатором all; он должен быть в некотором смысле "главным" тестсетом.
  • Тесты из условия должны быть объединены в отдельный тестсет с идентификатором st.

Комментарии[править | править код]

  • Может быть валидатор от "главного" тестсета, называемый validate_all.*, и может быть валидатор "по умолчанию" validate.*. Первый при его наличии используется для "главного" тестсета, второй используется для всех тестсетов, для которых нет личных валидаторов.
  • Не ясно, нужен ли нам "главный" тестсет, но идея общепринятого идентификатора "главного" тестсета мне нравится. Соответственно, не очевидно, что идентификатор all хорош.