Cтраница 4
При автономном тестировании для хранения программы тестирования используется либо внешнее устройство памяти ( накопитель на диске или магнитной ленте), если оно имеется в системе для основного режима, либо, чаще, тестовое ПЗУ. В последнем случае часто тестовое ПЗУ размещается в том же адресном пространстве, что и основное ПЗУ. Это позволяет экономить адресное пространство; учитывается то, что во время основной работы тестовое ПЗУ не нужно и доступ к нему можно запретить специальным сигналом. При тестировании запрещается доступ к основному ПЗУ и открывается доступ к тестовому ПЗУ. Иногда ПЗУ для тестирования модуля размещают конструктивно в самом этом модуле. Это дает ряд преимуществ: большую автономность теста, экономию адресного пространства при использовании ряда сменных модулей и др. То же ПЗУ часто используется для идентификации модуля. В сложных системах с большим числом сменных модулей этот прием позволяет избавиться от ввода оператором дополнительной информации при смене модулей. В ПЗУ модуля записываются для ввода в процессор основныые технические характеристики и структурные особенности модуля; в том же ПЗУ находится протокол связи модуля с центральным процессором. [46]
Шестой критерий связан с ответом на обсуждавшийся ранее вопрос: возможно ли проверить любой конкретный путь и любое условие в программе. Седьмой критерий характеризует сложность планирования, надзора и управления в процессе тестирования. Это связано с осознанием того факта, что тестирование, которым трудно управлять, часто ведет к недосмотрам и упущениям. Последний критерий оценивает степень перерасхода машинного времени: лишние прогоны ранее проверенных программ. Время от времени раздаются возражения против нисходящего подхода в связи с тем, что тестирование нижних модулей требует многократных лишних прогонов головных модулей. Однако этот критерий отмечен как несущественный. Хотя лишние прогоны действительно бывают необходимы, возможно также, что во многих случаях, которые кажутся лишними, в действительности воссоздаются несколько разные условия. Эти прогоны могут вскрыть новые ошибки, превращая таким образом недостаток в достоинство. Поскольку этот эффект недостаточно осознан, мы им пренебрегаем. [47]
Несколько слов с целью предостеречь читателя, который задумал разработать свой собственный инструмент тестирования. Многие организации пытаются этим заниматься, но, хотя идеи часто привлекательны, созданные средства не лучшим образом воспринимаются программистами. Основная причина, которая губит боль шинство инструментов тестирования, слабый учет психологических факторов. Проектировщик, занимающийся разработкой нового инструмента тестирования, должен уделить им особое внимание. Основной недостаток автоматизированных средств тестирования - слишком большие распечатки, вследствие чего программисту при -, ходится прочитывать страницу за страницей, чтобы найти один-единственный интересующий его результат. Например, большинство программ, осуществляющих контроль во время выполнения, выдает листинг программы на исходном языке, дополненный несколькими столбцами со счетчиками числа выполнения каждого оператора. Это может быть приемлемо при тестировании модуля, но слишком обременительно, когда тестируется вся программа или система и когда более интересно узнать, что не выполнялось. Мониторы, собирающие сводную статистику, должны уметь выдавать краткие отчеты с указанием только тех ветвей, которые не были проверены. [48]
Такая заглушка могла бы просто возвращать запасенный набор выходных параметров, но это помешало бы нам использовать выходной листинг, вырабатываемый модулем С, для проверки результатов будущих тестов. Вот почему в действительности она должна выполнять ту функцию, которую пытается имитировать. Теперь модули А и С и заглушки для В, G и Н тестируются вместе. Поскольку В вызывается только раз, при тестировании модуля С может понадобиться много вариантов заглушек, представляющих модуль В для разных версий ТВИМ, ТПЕРМ и списков сообщений. [49]