Драйвер (отлаживающая программа) – это главная программа (функция main на языке С), состоящая из нескольких обращений к тестируемому модулю, каждое из которых реализует один тест и обычно включает следующие действия:
— вывод номера и входных данных теста;
— вызов тестируемого модуля с передачей ему входных данных теста в виде параметров и/или глобальных переменных;
— вывод полученных результатов (или сообщения об итогах их сравнения с эталонным ответом).
Имитатор (заглушка) – это отладочная программа, имитирующая работу модуля, вызываемого из тестируемого модуля. В зависимости от конкретной ситуации можно использовать разные виды заглушек, например:
— пустая подпрограмма, состоящая из заголовка функции и пустого блока (полное отсутствие вызываемой функции, даже если она не нужна для работы тестируемого модуля, недопустимо из-за ошибок трансляции);
— пустая подпрограмма, выводящая сообщение о том, что она отработала, что позволяет проследить последовательность вызовов модулей;
Книжный магазин на Java
— подпрограмма, возвращающая всегда один и тот же постоянный результат (иногда этого достаточно для проверки правильности функционирования отлаживаемого модуля);
— подпрограмма, возвращающая заранее заготовленный результат, вводимый из файла или хранящийся в массиве;
— подпрограмма, выполняющая имитируемую функцию по упрощенному алгоритму, например, более медленному или с меньшей точностью.
Возможно использование какой-либо комбинации приведенных вариантов.
Заглушка имитирует тестовую ситуацию для отлаживаемого модуля и поэтому зависит от тестов, которые частично или целиком встраиваются в нее в виде констант либо вводятся ею. Для разных тестов могут потребоваться разные заглушки.
Разработка имитаторов — более творческая задача, чем составление драйверов, имеющих обычно простую структуру даже при большом размере.
Далее приведены драйверы и имитаторы для разработанного плана отладки и тестов измененного компилятора С0. Для упрощения драйверов с помощью директивы #include в них вставляются описания глобальных переменных, вынесенные в файл glb.c из текста транслятора (строки 47 -109).
Из модульной структура компилятора С0 (см. приложение 2) видно, что для автономной отладки функции chleks требуется драйвер и имитаторы вызываемых из нее подпрограмм chsim и oshibka (рис. 4).
Драйвер для автономной отладки функции chleks разработан на основе фрагментов функции main компилятора С0. Драйвер читает файл p.c0 с помощью подпрограммы chleks и выводит в файл p.asm полученную последовательность лексем в числовом виде.
leksim[‘+’]=plus; leksim[‘-‘]=minus; leksim[‘*’]=umn;
leksim[‘/’]=del; leksim[‘%’]=ost; leksim[‘=’]=prisv;
vhstr[0]=’ ‘; vhstr[1]=’