Система автоматизации тестирования и отладки (САТО) представляет собой сложный комплекс алгоритмических и программных средств, предназначенных для автоматизации анализа АСУП, тестирования, отладки и оценки ее качества, и позволяет облегчить модификацию компонент АСУП, обеспечить выявление ошибок на ранних стадиях отладки, повысить процент автоматически обнаруживаемых ошибок. На рис. 23 показано, как использование САТО влияет на цену обнаружения ошибок в течение жизненного цикла АСУП. АСУП становится «работоспособной», когда цена обнаруженной ошибки меньше некоторого значения μ, которое отражает уровень терпимости пользователя к программным ошибкам. Число имеющихся ошибок (область под кривой) одно и то же в обоих случаях. Отметим, что число обнаруженных ошибок после того, как АСУП становится работоспособной, почти постоянно по следующим причинам:
1) влияние эффекта «ряби» — исправление ошибки служит источником внесения новых ошибок (практика показывает, что такие ошибки составляют 19% всех обнаруженных ошибок);
2) практически для всех АСУП лишь небольшая ее часть интенсивно эксплуатируется, все остальные функции выполняются от случая к случаю, поэтому ошибки в них могут быть обнаружены значительно позже при удовлетворении некоторых специальных условий.
Рис. 23
I - кривая тестирования с использованием САТО,
II - кривая тестирования без использования САТО
САТО значительно сокращает количество ошибок, возникающих по вышеперечисленным причинам за счет предсказания влияния модификации, которые будут содержать эффект «ряби», а также за счет генерации и оценки тестов для тщательного и систематического тестирования АСУП.
|
Таким образом, установление корректности с помощью САТО является наиболее дешевым и эффективным средством улучшения качества и надежности АСУП. Конечно, абсолютная надежность не может быть достигнута с помощью САТО, тем не менее вероятность надежной работы АСУП будет являться допустимой в большинстве практических случаев.
Средства автоматизации, включаемые в САТО, в зависимости от решаемых ими задач разбиваются на средства автоматизации тестирования и средства автоматизации отладки.
Средства автоматизации тестирования в соответствии с этапами процесса тестирования классифицируются на следующие пять типов:
1) генераторы тестовых данных (ГТД), способные генерировать большие объемы тестовых данных на основании задаваемых форматов и допустимых диапазонов значений входной информации. При этом часто требуется выделить из множества тестовых данных приемлемое их подмножество. Обычно это осуществляется путем перевода ГТД в режим генерации случайных тестовых данных в пределах некоторого диапазона значений или путем выбора тестовых данных, распределенных с равными интервалами по всему диапазону возможных значений. Имеется и другой тип ГТД, строящих так называемые полные системы тестовых данных, позволяющие АСУП проверить все свои ветви или удовлетворяющие в той или иной степени другим критериям тестирования;
2) средства автоматизированного контроля результатов, предназначенные для автоматического сравнения ожидаемых результатов с реальными и выдачи информации обо всех расхождениях. Иногда удается автоматизировать и получение ожидаемых результатов, однако соответствующие средства не будут являться универсальными по отношению к тестируемым объектам;
|
3) средства автоматизированного управления тестированием (тест-мониторы), решающие задачу управления процессом тестирования. Тест-монитор формирует входные тестовые данные (возможно, принимая их от ГТД), подает их на испытываемый объект, получает результаты работы, визуализирует их и помогает проверить их правильность;
4) средства автоматизированного контроля тестирования, позволяющие оценить, насколько полная и тщательная проверка АСУП была осуществлена, например, на основе информации о непроверенных операторах/функциях, непроверенных маршрутах и т. п.;
5) средства автоматизации повторного тестирования, включающие в себя средства сохранения результатов, средства сравнения и визуализации всех расхождений.
Средства автоматизации отладки разбиваются на средства статического анализа исходных текстов и средства динамического контроля программ в период их выполнения. В состав этих групп входят инструментальные средства двух типов: средства автоматического обнаружения и локализации семантических ошибок некоторых классов и средства частичной автоматизации, позволяющие получать дополнительную информацию для облегчения обнаружения остальных семантических ошибок.
При статическом анализе осуществляется контроль предварительно построенной (средствами САТО) графовой модели АСУП и в отдельных случаях ее исходных текстов с целью обнаружения ошибок, а также спорных конструкций для дальнейшего анализа вручную.
|
Средства статического анализа классифицируются следующим образом:
1) средства анализа потоков управления, осуществляющие контроль структуры АСУП в целом, а также отдельных ее конструкций на основе графовой модели. Средства данного типа позволяют автоматически обнаружить следующие изъяны: невыполняемые операторы/функции, тупиковые ветви, некоторые виды бесконечных циклов и др.;
2) средства контроля операций над данными, предназначенные для обнаружения и локализации ошибок, связанных с особенностями конкретного языка программирования и его реализации (например, выход за пределы разрядной сетки значения константы, использование служебных слов языка в качестве имен, использование в отношении равенства вещественных переменных). Обычно такой контроль осуществляется по исходным текстам;
3) средства анализа потоков данных, используемые для обнаружения ошибок в потоках данных, связанные с нарушениями последовательности операций над информационными объектами (прежде всего операций чтения и записи). Анализ осуществляется по графовой модели, при этом обнаруживаются неинициализированные данные, неиспользуемые данные, ошибки в написании имен и т. п.;
4) средства контроля межмодульных интерфейсов, обнаруживающие некорректные межмодульные взаимодействия, например, несоответствие типов и числа фактических и формальных параметров при вызове модуля;
5) средства обнаружения возможных источников побочных эффектов, позволяющие получать информацию об изменении в теле функции/процедуры/модуля значений параметров вызова, в теле цикла значений управляющих переменных и т. п. для дальнейшего анализа вручную;
6) средства для контроля последовательности событий, производящие сравнение этой последовательности с правильной, заранее заданной последовательностью (например, при работе с файлом должна соблюдаться следующая последовательность: создание, открытие, совокупность чтений/записей, закрытие).
Основным недостатком средств статического анализа является то, что они обеспечивают обнаружение лишь частных, специальных случаев семантических ошибок (как правило, проявляющих себя в период выполнения). К достоинствам статического анализа следует отнести возможность контроля выбранного по заданным критериям множества маршрутов потенциального выполнения программы.
Средства динамического контроля предназначены для отслеживания поведения программы в период ее выполнения. Средства полной автоматизации обеспечивают контроль определенных семантических некорректностей (обычно по списку ошибок, заданному в той или иной форме). Дополнительно рассматриваемые средства позволяют осуществлять подсчет числа выполнений различных компонент АСУП, временных характеристик и другой статистической информации.
Средства частичной автоматизации позволяют пользователю автоматически получать необходимую ему информацию для дальнейшей локализации ошибок вручную. Среди таких средств наиболее распространены DDT (Dinamic Debugging Tools) — «системы для уничтожения блох«(слово «bug» в английском языке означает не только «ошибка», но и »блоха», а ДДТ — популярное в недавнее время средство борьбы с насекомыми). Управление системой DDT и, соответственно, управление отладкой осуществляются посредством языка отладки командного типа, его операторы имеют форму приказов (команд), состоящих из ключевого слова и списка операндов, если последние необходимы. Операторы языка отладки обеспечивают взаимодействие программиста с DDT и инициируют выполнение соответствующих отладочных функций, согласно которым они могут быть разбиты на следующие группы:
1) управляющие операторы, обеспечивающие управление выполнением АСУП в отладочном режиме, а также гибкий контроль исполнения информирующих и контролирующих операторов;
2) информирующие операторы, обеспечивающие сбор статистической информации периода выполнения и поддерживающие аппарат трассировок различного вида (слежение, трассировка по точкам ветвления, трассировка по условиям чтения/записи значений, отслеживание частот прохождения через определенные секции кода и др.);
3) контролирующие операторы, осуществляющие контроль значений переменных, маршрутов и т. п. на предмет сравнения с заранее заданными;
4) операторы чтения/записи, дающие возможность форматного ввода тестовых данных и вывода результатов в протокол сеанса отладки в терминах исходного языка программирования;
5) служебные операторы, обеспечивающие загрузку отлаживаемых программных и информационных компонент АСУП, переключение режимов (пакет, диалог), ввод в протокол сеанса отладки комментариев и т. д.
В последние годы разработан ряд DDT, имеющих более сложные языки отладки, приближающиеся по своим изобразительным возможностям к языкам программирования высокого уровня и позволяющие задавать ряд условий, при удовлетворении которых DDT способна исполнять некоторые действия (события), также заранее задаваемые средствами языка отладки.