Skip to content

HOWTO_create_new_test

Pavel Kryukov edited this page Apr 18, 2017 · 1 revision

Введение

Это страничка посвящена созданию тестов для нашей тестирующей системы.

intest

Специально для этого курса была создана тестирующая система, её код выложен на GitHub тут: https://github.com/gvozdarev-sa/intest. Пока это только alpha версия, так что возможны ошибки. Конечно же там нет конфигурации самих тестов, которая находится в локальном репозитории.

По всем вопросам пишите сюда: gvozdarev.sa@gmail.com

Сценарий работы

Входные данные

WEB интерфейс

Для версии с web интерфейсом входные параметры передаются через http GET запрос в следующем формате:

?test=main_container;o=test:task0--users:u1@intest.com,u2@intest.com

В результате будет запущена команда:

perl intest.pl --test main_container --o test:task0--users:u1@intest.com,u2@intest.com

Опция --o это те параметры, которые будут переданы в test main_container

Возможные опции

  • test - определяет какой тест будет запущен для всех пользователей.
  • users - через запятую емэйлы пользователей для который будет запущено тестирование
  • only_for_mentors - через запятую eмэйлы менторов, к которым должны принадлежать пользователи.

замечание only_for_mentors работает как фильтр, если Вы укажите users, то тестирование будет запущено только для принадлежащих хотя бы одному ментору.

users.json

Для того что бы определить для кого проводится тестирование, используется этот файл, он загружается внутри main_container и определяет путь внутри репозитория, менторов, к которым принадлежат пользователи и т.д.

Что примерно происходит внутри

  1. клонируется этот репозиторий. Пока клонируется только master
  2. Cчитывается в нём users.json
  3. Для каждого пользователя прошедшего фильтры запускается тест указанный в параметрах
  4. Копируются файлы нужные для тестирования, путь определяется так <root_of_repo><path_of_user><task_name>main.c Где path_of_user - это путь указанный в файле users.json, task_name, тест который запускается. Именно поэтому важно соблюдать структуру репозитория и корректный файл users.json
  5. Компилируются исходники в bin/a.out
  6. Запускается тест контейнер <task_name>container, который запускает a.out с разными входными параметрами и STDIN, и проверяет STDOUT, STDERR и код возврата по правилам указанным в контейнере.

Выходные данные

Лог в HTML формате

Как создать новый тест

Используя скрипт

Запустить perl new_test.pl И отвечать на вопросы

Вручную

Скрипт делает тоже самое, что описано здесь. В связи с вышенаписанным, основной файл для изменения теста - это _<task_name>container.json. Поэтому для создания нового теста нужно сделать следующие шаги:

  1. Скопировать файлы task0.json и task0_container.json в собственную папку
  2. Переименовать task0 в зараннее определённое имя задачи <task>
  3. Изменить поле_name_в <task>.json и <task>_container.json
  4. Изменить/добавить/удалить подтесты core_run_compare в <task>_container.json в соответсвие с условиями задачи
  5. Добавить <task>/<task>_container и <task>/<task> в tests.json
  6. Объявить всем, всем, всем о создании нового теста с именем <test>, и просьбой класть исходники для этой задачи в <path_of_user><task>/main.c

Содержимое

Все страницы этой вики

Инфраструктура

Программирование

  • CommentStyle
  • CodeReview
  • Testing
  • CodeStyle
  • CompilersIDEs
  • WindowsCmd

Разное

Clone this wiki locally