Пособие
по разработке тестов для WInter
Как показала практика, при
установке и сдаче новых задач по программированию микроконтроллеров возникает
множество проблем.
При всем при этом, на той же практике было выяснено, что большинство
проблем можно решить самостоятельно, не прибегая к помощи службы поддержки
DL.
Пожалуйста, придерживайтесь
следующих рекомендаций.
Относительно формата тестового
файла (tests.tst):
Существует два подхода для создания
тестовых фалов. Можно использовать встроенный в WInter "Редактор тестов", а
затем "Сохранить в файл", а можно вручную править этот самый файл
в любом тестовом редакторе. Автор среды WInter настоятельно рекомендует первый
путь. Следует отметить, что этот подход вполне функционален и даже обладает
некоторыми преимуществами. Это с большой вероятностью гарантирует, что тестовый
файл будет иметь правильный формат.
В "Редакторе тестов" поддерживается
такая полезная возможность. Если выделить некоторый подтест и нажать клавишу Ins
или кнопку "Добавить", то будет создан новый подтест, являющийся копией
выделенного.
Опытным путем удалось выяснить, что работать с "Редактором
тестов" с помощью мышки довольно проблематично, т.к. это требует слишком
большого числа кликов и манипуляций. Но, если пользоваться клавиатурой, то
складывается вполне приемлемая ситуация.
Некоторую информацию по интерфейсу
редактора тестов и т.п. можно почерпнуть отсюда: http://dl.gsu.by/doc/use/winter/CreateTests.htm.
В
любом случае, стоит рассмотреть и учитывать следующие
замечания.
Заголовок тестового файла для
задач, устанавливаемых на DL, должен и обязан быть
следующим:
Report = report.txt
StopOnError =
true
Statistics = false
WatchReport = false
ShowReport =
false
Здесь, первая
строка задает имя файла, в который будет выводиться информация о ходе
тестирования.
Вторая - сообщает тестирующей системе, чтобы она
останавливалась при первой ошибке, а не зависала, пытаясь их
накапливать.
Смысл остальных строчек можно проверить экспериментальным
путем. Но
в тестовых файлах, используемых для автоматического тестирования на DL, они
должны быть именно такими, как указано. Иначе, в лучшем случае, никакие
решения не будут засчитываться, в худшем случае, тестирование всех заданий на
программирование микроконтроллеров вообще зависнет.
Элементы массивов задаются так
же, как и одиночные значения, только через пробел. Например, массив
16-битных целых задается так:
array hex[2]: 0002 0003 fffd 0000 0005
fffb
Или так:
array dec[2]: 2 3
4 0 5 7
Почему-то в тестах
некорректно обрабатываются отрицательные числа.
Поэтому, чтоб задать,
к примеру, 32-битное число -7, пишите:
value2 hex[4]:
fffffff9
Строго соблюдайте порядок
следования пустых строк и их количество в файле с тестами.
Следите, чтобы в файле не было лишних пробелов. Из-за одного
незаметного пробела в пустой строке между подтестами чекер вылетает.
Относительно процесса
отладки:
Если тест не идет, в первую
очередь проверьте правильность самого теста. В эту же очередь, проверьте Ваше
решение. Обычно помогает пошаговая отладка.
Если тест, все равно, не идет, в
первую очередь проверьте, правильно ли он загружается.
Для этого вызовите
"Тестирование\Редактор тестов...". Загрузите файл с вашим тестом. Теперь
попробуйте дважды кликнуть по названию какого-либо подтеста и проверить, что
значения переменных совпадают с указанными в файле. Если реакции на двойной клик
не наблюдается, значит, или формат тестового файла неверен, или пора
перезапустить WInter. :)
Предыдущая проверка еще не
является гарантией того, что тестовые значения правильно занесутся в
память.
Выполните команды "Тестирование\Проверить" и "Вид\Переменные". В
появившемся окне можно будет посмотреть, какие значения были занесены во входные
переменные на последнем подтесте.
(Рекомендуется выделить неидущий подтест в
отдельный файл).
После выполнения команды
"Тестирование\Проверить" результат сохраняется в файле
report.txt в том же директории, где находится файл с текстом
программы.
Необходимо добиться того, чтобы при запуске на подготовленных
тестах правильного решения в report.txt для каждого
подтеста выводилась строчка "Тест прошел".
Как видите, здесь открывается
большой простор для самостоятельного обучения методам поиска и устранения
ошибок. Поэтому старайтесь обращаться за помощью только после того, как
удостоверитесь, что ваша ошибка уникальна и не подходит не под один из
перечисленных пунктов (даже в этом случае, рекомендуется предварительно немного
подумать :).
Примечания:
- WInter не всегда,
получив команду "Сохранить", ее реально выполняет. Следите, чтобы при этом
мигнула статусная строка. Также рекомендуется регулярно делать резервные
копии.
- Чтобы ускорить работу
сохраните вместе с решением файл рабочего стола *.wid. В этом случае, чтобы
перезапустить WInter, достаточно выполнить команду
\\MATH_SERVER\apps\SPRL\WINTER\bin\WInter.exe
yourname.wid
Будут быстро восстановлены сохраненные настройки и
расположение окон.
- Помните, что разрабатываемые
для проверки задач тесты должны быть максимально полными. Необходимо учесть
всевозможные варианты и комбинации входных данных, чтобы с очень большой
вероятностью выявлять неправильные решения. По этой причине в подготовленном
тестовом файле должно содержаться минимум 10 подтестов.
...продолжение следует (с Вашей
помощью)
(CopyLeft) Vadim
Kopichenko