Необходимо проверять правильность программ по мере их создания, а не по окончании этапа кодирования. Для этого применяется метод заглушек — подыгрывающих программ.
После того как модуль разработан, присваивают имена функциям, которые он вызывает, определяют некоторые спецификации для этих функций. Эти спецификации включают в тестовые процедуры, что позволяет тестировать модули верхнего уровня.
Простейшим типом заглушки является функция, которая печатает сообщение о том, что управление передано в заданную точку входа.
Иногда этого не достаточно, если вызывающий модуль ожидает некоторых действий со стороны заглушки. Тогда внутри заглушки присваивают определенные значения некоторым переменным.
В свою очередь, выдача одних и тех же значений может оказаться недостаточной проверкой программы, поэтому заглушка может использовать набор определенных значений для присваивания значения переменной из этого набора в зависимости от номера теста.
Например, внутри заглушки объявляется массив с набором значений и переменная со значением номера теста, которая увеличивается на единицу от вызова к вызову; возвращаемой переменной присваивается значение из массива с индексом, равным номеру теста.
Внутри заглушки может быть, например, проверка на правильность входного значения. Если определенное условие не выполняется, то печатается сообщение об ошибке.
После того как программа написана и протестирована, заглушка может быть или заменена, или доработана до программы, выполняющей требуемую функцию.
После разработки заглушек для правильного выбора тестовых данных необходимо руководствоваться следующим:
- сначала использовать простые тесты и постепенно переходить к более сложным;
- обращать внимание на граничные случаи, чтобы убедиться, что система работоспособна во всем диапазоне, для которого она проектировалась;
- вводить неправильные данные, исследуя затем полученные результаты;
Например, если величина переменной должна находиться в диапазоне от А до В, то следует проверить значения: А-1, А, А+1, В-1, В, В+1.
- использовать специальные значения, например константы 1 и 0, нулевая строка для символьных переменных;
- составлять тесты так, чтобы каждый оператор был выполнен;
- знать результаты работы теста до начала его выполнения. Нет пользы от случайных тестов, проверки программы с их помощью и многочасовых расчетов с карандашом и бумагой для выяснения правильности работы программы;
- всегда тестировать уровень, тесно связанный с тем уровнем, про который известно, что программа работает правильно.