понедельник, 28 декабря 2009 г.

Малая автоматизация тестирования

Очень важный момент описан Михаилом Долинским, касающийся автоматизации тестирования задач. На мой взгляд это незаменимый инструмент для опытных команд, которые сдают весь контест на +ноль. Жаль, что в свое время наша команда его не использовала.

Суть идеи заключается в создании двух батников, которые должны находится в той же директории, что и *.exe файл откомпилированной программы: test.bat (для проверки одного теста) и all.bat (для проверки всех тестов). Помимо батников нужно заготовить набор локальных тестов, корректность которых не вызывает сомнений.  Эти тесты должны находится все в той же директории.

Я проверил метод на задаче "Путешествие шахматного коня". Заготовил три теста. Тест представляет собой пару файлов x.in и x.out, где x – это порядковый номер теста.


1.in: A8 A8
1.out: 0

2.in: A5 C2
2.out: 3

3.in: A1 B3
3.out: 3


* после двоеточия написано содержание файла

Теперь поглядим на содержание самих батников:
Если программа получает и выводит данные на консоль, то файл test.bat должен выглядеть так:
  1. @echo off
  2. dolinskiy_1.exe <%1.in >output.txt
  3. fc output.txt %1.out
  4. pause

Комментарии: dolinskiy_1.exe – это имя *.exe файла, принимающего на вход данные содержащиеся в файле %1.in, где %1 – это первый параметр, с которым запускается батник test.bat. Т.е. если в качестве первого параметра была передана цифирь 5, то программа будет брать входные данные из файла 5.in. Подстрока >output.txt  означает, что результат работы программы будет записан в файл output.txt. В строчке 3 происходит сравнение эталонного файла %1.out и получившегося output.txt.

Если же программа работает с файлами input.txt(входные данные) и output.txt(выходные данные), то файл test.bat следует изменить на:

  1. @echo off
  2. del input.txt
  3. del output.txt
  4. copy %1.in input.txt
  5. dolinskiy_1.exe
  6. fc output.txt %1.out
  7. pause

Комментарии: В строчках 2 и 3 позаботимся о том, чтобы файлы input.txt и output.txt не существовали в текущей директории. В строчке 4 копируем содержимое входных данных текущего теста (%1.in) в файл input.txt. Затем запускаем нашу программу (dolinskiy_1.exe). Результат ее работы будет находится в файле output.txt. Следовательно нам осталось сравнить получившийся ответ с эталонным(%1.out), что мы и делаем в строчке 6.

Структура файла all.bat более простая:

  1. @echo off
  2. cls
  3. for %%i in (1,2,3) do call test.bat %%i

Комментарии: В строчке 2 очищается экран консоли. Затем в цикле перебираются значения параметра %%i, который может принимать значения: 1,2 или 3, и последовательно вызываем батник test.bat с этим параметром. Тем самым мы проверим работу программы на всех 3-ех заготовленных тестах. Если количество тестов будет больше, необходимо создать тестовые пары *.in и *.out, а также дописать номера самих тестов в батнике all.bat.

Также смотрите видеоурок на эту тему

Комментариев нет:

Отправить комментарий