Пособие по разработке тестов для 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 для каждого подтеста выводилась строчка "Тест прошел".
     
     
    Как видите, здесь открывается большой простор для самостоятельного обучения методам поиска и устранения ошибок. Поэтому старайтесь обращаться за помощью только после того, как удостоверитесь, что ваша ошибка уникальна и не подходит не под один из перечисленных пунктов (даже в этом случае, рекомендуется предварительно немного подумать :).
     
    Примечания:

    ...продолжение следует (с Вашей помощью)

    (CopyLeft) Vadim Kopichenko