|
Средства тестирования представляют собой программы, которые помогают автоматизировать процесс испытаний системы; их часто называют средствами автоматического тестирования. Наличие таких средств дает возможность небольшой группе программистов провести анализ программ большого объема, что в противном случае было бы неосуществимо. Но прежде чем повести разговор об автоматических средствах тестирования, целесообразно рассмотреть ряд других вспомогательных средств, чрезвычайно облегчающих этот процесс. Прежде всего необходим хороший отладочный компилятор, способный выявлять ошибки, которые в противном случае должны были бы обнаруживаться при тестировании. Такие компиляторы рассматривались в гл. 4. Необходимым условием получения правильной готовой программы является устранение синтаксических ошибок. Чем больше ошибок обнаруживается компилятором, тем меньше их остается на стадии тестирования. В настоящее время наблюдается благоприятная тенденция расширения возможностей диагностики ошибок в языках программирования. Так, язык ПЛ/1 насчитывает порядка 1000 диагностических средств, включая предупреждения об ошибках.
Второй тип вспомогательных средств тестирования — это пакет подпрограмм, встраиваемых в рабочую программу для автоматического исправления ошибок. Современные языки программирования предоставляют возможность обнаруживать переполнение, потерю значимости, деление на нуль и недопустимые условия вызова подпрограмм. Более, современные компиляторы, такие, как \VATFIV для ФОРТРАНа, и \VATBOL для КОБОЛа, позволяют также обнаруживать нарушение правил индексирования массивов, неиспользуемые ветви программы и неправильно указанные параметры вызова подпрограммы. В связи с тем, что использование этих дополнительных средств требует дополнительных затрат машинного времени, их применение ограниченно (возможности по обаружению 136 типов функциональных ошибок предоставляет язык ПЛ/1). Ошибки, которые способен обнаружить компилятор, неизбежно выявляются; поэтому применение компилятора позволяет не ждать, когда ошибка проявит себя в результате сочетания определенных условий, приводящих к отказу программы.
Компилятор должен обладать также способностью слежения за ходом выполнения программы и контроля за определенными переменными. Оба эти свойства чрезвычайно полезны при тестировании, так как дают возможность отслеживать в программе логические пути и последовательные изменения значений переменных.
Еще одно необходимое средство тестирования — это возможность хранения тестовых входных данных в целях их повторного использования. Таким средством в простейшем случае, когда программа невелика, является колода перфокарт, а для сложной системы это может быть целый набор программ. При этом необходимо иметь некоторый метод обеспечения хранения, дополнения и модифицирования тестовых данных. Все это требуется для того, чтобы иметь возможность повторного запуска тестов после внесения изменений в программу.
5.17.1. ГЕНЕРАТОР ТЕСТОВЫХ ДАННЫХ
Хотя рассмотренные выше средства полезны и необходимы, они все же не решают полностью проблемы проверки программ. Первым действенным средством автоматического тестирования является генератор тестовых данных (ГТД), который формирует данные для использования в проверяемой программе. Такие данные часто оказываются полезными как первый тест программы, позволяющий определить, пригодны ли конкретный модуль или подпрограмма к стыковке с другими элементами. Здесь, однако, имеется целый ряд трудностей. Во-первых, необходимо уметь пользоваться ГТД. Но изучение его может потребовать стольких
Таблица 5Л
|
Генератор тестовых данных
|
Фирма-изготовитель
|
|
1ЕВБО (в составе вспомогательных программ операционной системы ОБ)
РИО/ТЕБТ
МетаКОБОЛ
|
IBM
Synergetics
(One Garfield Circle, Burlington, Mass., 01803)
Applied Data Research (11661 San Vicente Blvd., Los Angeles, Cal. 90049)
|
усилий, что целесообразнее окажется создавать тестовые данные вручную (особенно для небольших систем). Во-вторых, основное назначение ГТД — формирование больших массивов тестовых данных. Однако для тестирования нам требуется не "просто произвольный набор данных, а хорошо подобранные данные для всестороннего испытания тестируемой программы. Более того, тестовые данные обычно должны формироваться в определенной последовательности; часто между ними могут существовать очень сложные зависимости (как, например, между главным и вспомогательным файлами). В одних тестовых пакетах эта проблема решается лучше, в других — хуже. В табл. 5.1 приведены сведения о некоторых доступных для широкого применения генераторах тестовых данных. Некоторые другие ГТД обсуждаются в книге Нэфтэли1*.
5.17.2. ВСПОМОГАТЕЛЬНЫЕ ПРОГРАММЫ РАСПЕЧАТЫВАНИЯ ФАЙЛОВ (ПРОГРАММЫ-УТИЛИТЫ)
Эти средства тестирования используются для выдачи на печать ленточных или дисковых файлов, создаваемых испытываемой программой, и позволяют осуществлять визуальный контроль файлов, часто желательный и даже необходимый. Обычно программы такого типа имеются в составе стандартного программного обеспечения, поставляемого изготовителями ЭВМ. Желательные характеристики этих программ — распечатывание каждой записи с новой строки, способность напечатать информацию в различных формах представления, например в символьной, десятичной и шестнадцатеричной, возможность печатать требуемое количество записей, а также начинать и прекращать этот процесс на любой указанной записи.
"> Naftaly S.xM., Cobol Support Packages, Wiley, New York, 1972.
5.17.3. КОМПАРАТОР ФАЙЛОВ
Компаратор файлов представляет собой программу, которая считывает два файла и выводит на печать их различающиеся элементы. Он может использоваться для сопоставления результатов, выданных при двух различных тестовых прогонах, с целью выявления каких-либо расхождений. В связи с тем что программы после внесения в них дополнений или изменений должны тестироваться повторно, лучше всего хранить тестовые входные данные в отдельном файле и вновь использовать их для проверки модифицированной программы. Однако в этом случае кто-то должен сидеть и вручную контролировать выдаваемые программой результаты, чего обычно не делают из-за значительной трудоемкости этой неинтересной работы.
Тогда и приходит на помощь компаратор файлов, используемый для сравнения каждого нового массива результатов с выверенным массивом, полученным при последнем тестовом прогоне. При этом программа сравнения файлов распечатывает только обнаруженные различия, и ручная проверка требуется только для несовпадающих элементов. В заключение новый файл результатов записывается вместо прежнего с тем, чтобы служить эталоном при последующем сравнении.
5.17.4. ПРОГРАММЫ-ПРОФИЛИРОВЩИКИ
О программах-профилировщиках речь уже шла в гл. 3. Профилирование программы оказывается весьма полезным для отладки и тестирования, так как дает информацию о том, какие операторы и сколько раз выполнялись. Профилирование выявляет модули или части программы, которые оказались неиспользованными, и указывает на необходимость продолжения тестирования. Средства профилирования программ предусматривают возможность накопления статистических данных о работе тестируемой системы. Такие статистические данные позволяют испытателям выявлять те блоки программ, которые недостаточно проверены. Поэтому обратите внимание на средства профилирования, приведенные в разд. "Проекты".
5.17.5. ТЕСТОВЫЙ МОНИТОР
Тестовый монитор — это программа, которая пересылает нужные данные на вход тестируемого модуля и накапливает выходные данные, выдаваемые на печать или записываемые в файл. Программу тестового монитора часто называют тестовым драйвером. Назначение этой программы состоит в том, чтобы создавать нужные условия для проверки модулей. Иногда монитор представляет собой небольшую программу, предназначенную для тестирования отдельных подпрограмм, а порой он может быть очень сложной программой. Хороший тестовый монитор должен предусматривать распечатывание входных параметров и всех переменных, формируемых проверяемым модулем. Тестирование по принципу сверху вниз в какой-то мере исключает необходимость использования тестового монитора благодаря выполнению его функций главной программой.
⇐5.16. Системные испытания || Оглавление || 5.18. Контроль результатов с помощью проверяемой программы⇒
|