20. Автономная отладка и тестирование АЭИС

Скачать доклад: 20. Автономная отладка и тестирование АЭИС

Автономная отладка и тестирование АЭИС; общие задачи отладки; содержание тестирования; систематизация тестов для отладки; используемые методы отладки; этапы отладки; отладка программных модулей; тестирование обработки данных; планирование отладки; системы автоматизации отладки (27.1).

Под отладкой понимается процесс, позволяющий получить нормально функционирующую систему, с требуемыми характеристиками в заданной области входных данных (информационного пространства). В результате отладки система должна соответствовать совокупности правил и заданных показателей качества, принимаемых за эталонные.

Процесс отладки включает: - создание совокупности тестовых (эталонных) значений и правил, которым должна соответствовать создаваемая программа по выполняемым функциям, структуре, правилам описания, значениям исходных и соответствующих им результирующих данных; - статическую проверку тестов разработанных программ и данных на на выполнение всех заданных правил построения без исполнения объектного кода; - тестирование программы с ее исполнением в объектном коде и с разными уровнями детализации: детерминированное, стохастическое и тестирование в реальном времени; - диагностику и локализацию причин отклонения результатов тестирования от заданных эталонных значений или правил; - изменение программы с целью исключения причин отклонения результатов от эталонных.

Содержание тестирования систем (программ) .. Основным методом обнаружения ошибок при отладке является их тестирование. Эффективность тестирования - важнейший фактор, определяющий стоимость и длительность разработки сложных АЭИС с заданным качеством. Затраты на тестирование для обнаружения ошибок составляют 30-40% общих затрат на разработку и в значительной степени определяют качество созданной АЭИС. Высокая доля затрат на тестирование приводит к необходимости создания методов и средств, позволяющих достигать нужного качества систем при реальных ограничениях на длительность тестирования и связанные с этим затраты.

Программы как объекты тестирования имеют ряд особенностей, которые отличают процесс тестирования от традиционного, применяемого для проверки аппаратуры и других технических изделий. При этом отсутствует полностью определенный и точный эталон для всех тестовых наборов. В связи с этим для тестирования в качестве эталонов используется ряд косвенных данных, которые не полностью отражают функции и характеристики отлаживаемых программ.

На практике невозможно создать единственный универсальный метод тестирования; поэтому обычно применяют ряд значительно различающихся категорий тестов .. Каждая категория тестов отличается целевыми задачами, проверяемыми компонентами программ и методами оценки результатов. Существуют следующие категории тестов: - тестирование для обнаружения ошибок - выявление отклонений результатов функционирования реальной системы от заданных эталонных значений; задача состоит в обнаружении максимального числа ошибок, в качестве которых принимается отклонение от эталонов; - тестирование для диагностики и локализации ошибок, состоящего в установлении места искажения программы (данных), явившегося причиной отклонения полученных результатов от эталонных; - контрольное тестирование, состоящего в подтверждении правильности выполненной корректировки разрабатываемой системы.

Каждая из категорий тестов отличается целевыми задачами, проверяемыми компонентами и методами оценки результатов. Совместное и систематическое применение различных методов тестирования позволяет достигать высокого качества функционирования АЭИС.

Систематизация тестов для отладки систем (программ). . Для отладки применяются методы, предусматривающие упорядочивание и систематизацию тестов по различным стратегиям и параметрам, и методы неупорядоченного тестирования ("черного ящика"). При последнем исходные данные, имитирующие внешнюю среду случайным образом, генерируются во всем диапазоне возможного изменения параметров.

Стремление к рациональному использованию ограниченных ресурсов системы приводит к необходимости систематизации процесса тестирования. Методы упорядоченного тестирования основываются на выделении факторов и параметров, позволяющих эффективно распределять ресурсы тестирования с учетом их влияния на качество разрабатываемой программы.

Статическое тестирование . является наиболее формализованным и автоматизируемым методом проверки корректности системы (программы). В качестве эталонов применяются правила структурного построения аппаратных и программных модулей и обработки данных, конкретизированные для проекта информационной системы в целом. Кроме того, могут также использоваться некоторые частные правила обработки данных, зафиксированные в спецификациях на отдельные компоненты системы. Операторы и операнды текста программ анализируются в символьном виде, вследствие чего этот метод называют также символическим тестированием. Развитие и углубление символического тестирования может доводиться до уровня  1формальной верификации программ на соответствие ее текста детальной спецификации, определяющей связи между входными и выходными данными программы.

Особенностью методов  динамического тестирования . является проверка исполнения тестов программами системы в объектном коде.

Наиболее трудоемким из них является метод  1детерминированного тестирования. При этом контролируются каждая комбинация исходных эталонных данных и соответствующая ей комбинация результатов функционирования программы. Это позволяет выявить отклонение результатов от эталона с фиксированием конкретных значений исходных и результирующих данных, при которых это отклонение обнаружено.

Используемые методы отладки систем (программ) .. В сложных системах невозможно перебрать и задействовать все комбинации исходных данных и проконтролировать результаты функционирования создаваемой программы на каждой из них. В таких случаях применяется стохастическое тестирование, при котором исходные тестовые данные задаются множеством случайных величин. Стохастическое тестирование применяется в для обнаружения ошибок, а для диагностики и локализации ошибок переходят к детерминированному тестированию.

Последующее расширение области изменения исходных данных становится возможным при применении тестирование в реальном времени. В процессе такого тестирования проверяются исполнение систем (программ) и обработка исходных данных с учетом времени их поступления, длительности и приоритетности обработки, динамики использования памяти и взаимодействия с другими программами.

Отладку АЭИС можно осуществлять при двух стратегиях наращивания числа компонент, подлежащих проверке.

При систематическом восходящем тестировании . вначале проверяются модули нижних иерархических уровней, к которым постепенно подключаются вызывающие их модули. При этом обеспечивается работоспособность вызываемых компонент и функции группы программного обеспечения системы проверяются при их естественном исполнении.

Все участвующие в тестировании модули нижних иерархических уровней тестируются детально и независимо. Это обеспечивает их высокую корректность при подключении к вызывающим модулям.

При нисходящем тестировании . проверки начинаются с программных модулей управления и организации вычислительного процесса.

Вначале тестируются управляющие программы, а также программы решения функциональных задач, размещенные на высших иерархических уровнях. К ним постепенно подключаются для тестирования программы последующих, более низких иерархических уровней. Преимуществом такого метода является возможность сохранения и развития наборов тестовых исходных данных по мере подключения программ нижнего уровня.

На практике оба метода используются совместно с учетом сложности тестируемых групп программ, а также планов проектирования АЭИС. Модули и группы программ многократного использования преимущественно тестируются по восходящему методу. Управляющие и уникальные модули (с малым числом вызываемых программ) при небольшом числе иерархических уровней целесообразно тестировать по нисходящему методу.

Этапы отладки систем (программ) .. Объекты отладки и тестирования применяются в соответствии с поэтапным развитием программ от уровня алгоритмов до уровня завершенного эксплуатируемого и сопровождаемого программного средства.

При тестировании спецификаций требований  сновная цель состоит в проверке полноты и взаимного соответствия функций, предписываемых программным компонентам разных иерархических уровней.

Задачи тестирования включают проверку взаимно однозначного соответствия информации на входах и выходах взаимодействующих программ.

Тестирование программных модулей - наиболее формализованный и автоматизированный процесс тестирования. Основная задача состоит в проверке обработки программными модулями поступающей информации и корректности получающихся на на выходе данных в соответствии с функциями, представленными в спецификациях.

Тестирование функциональных групп программ предназначено для проверки корректности решения крупных автономных функциональных задач АЭИС. Проверяется правильность управляющих и информационных связей между модулями, а также корректность вычислений в процессе обработки информации.

Тестирование комплексов программ при отладке - сложный процесс, в котором завершается проверка корректности функционирования программ при правильных исходных данных и осуществляются основные проверки при искажениях на входе. Проверяется надежность функционирования всей АЭИС в реальных условиях и эффективность средств программной защиты и восстановления. Определяются корректность использования программами ресурсов ВС и функционирование программ в критических условиях.

Тестирование комплекса программ при испытаниях предназначено в основном для проверки соответствия ТЗ и для оценки пригодности АЭИС к регулярной эксплуатации и сопровождению. Для этого проверяется полнота и точность технической документации и качество функционирования программ по всем требованиям ТЗ.

Тестирование системы при сопровождении  0осуществляется с использованием практически всех перечисленных выше категорий тестов, характерных для разработки и испытаний АЭИС. Сопровождение является частичным повторением процесса создания программ или его отдельных этапов. Выбор используемых тестов варьируется в широких пределах в зависимости от содержания вносимых изменений. При сопровождении активно применяются тесты, связанные с обеспечение сохранности данных на магнитных носителях.

Систематизация тестов позволяет последовательно акцентировать внимание на обнаружении ошибок определенных классов. Полные затраты на все тесты оправданы и необходимы, когда система выполняет особенно ответственные функции и его недостаточное качество грозит большим ущербом.

Отладка программных модулей . включает в себя:Ручное тестирование проводится по листингам после трансляции и устранения автоматически обнаруживаемых ошибок с применением методов: ручное тестирование за рабочим столом индивидуально создателем данной программы; сквозной просмотр текста и тестирование программы группой специалистов; инспекция группой специалистов текстов программы на логику ее функционирования с позиции типовых ошибок. В качестве эталона при проверках используется спецификация требований. Вычисления проверяются путем сравнения с результатами независимых расчетов по исходным формулам.

Символическое тестирование, в процессе которого анализируются не числа, а формулы программ, записанных в символическом виде.

Они связывают наборы входных переменных системы и выходных переменных, участвующих в исполнении программы по определенному маршруту. Основная цель состоит в установлении соответствия между областями определения наборов данных (входных и выходных) и маршрутами их обработки в программе.

Тестирование структуры программных модулей .. Тестирование структуры программ или потоков управления может проводиться вручную на символическом уровне и при детерминированном исполнении программы в процессе обработки реальных тестовых данных. Детерминированное тестирование структуры имеет целью проверку корректности маршрутов исполнения программ, обнаружение в основном логических ошибок формирования маршрутов и получение информации о полной совокупности реальных маршрутов исполнения в программе.

Маршруты позволяют упорядоченно контролировать достигнутую степень проверки программ и предохраняют от случайного пропуска отдельных нетестировавшихся маршрутов. При планировании тестирования структуры программы возникают две задачи: формирование критериев выделения маршрутов для тестирования и выбор стратегий упорядочения выделенных маршрутов.

Тестирование обработки данных .. Функционирование системы рассматривается как обработка потока данных, передаваемых от входа в систему к ее выходу. Задача анализа потока состоит в установлении правильности их обработки и в выявлении ошибок в тестируемой программе. Эта задача может решаться статистически без исполнения программы (по ее тексту) и динамически путем использования программы в объектном коде при конкретных исходных данных.

Последствия ошибок в программе могут проявляться как малые изменения переменных в процессе вычислений и как полное искажение или отсутствие на выходе требующихся величин. Целесообразно выделить следующие методы тестирования и последовательность их применения: - тестирование при значениях данных, определяющих ветвления в программе и маршруты исполнения программы; - тестирование записи и считывание переменных при вычислении и полноты состава выходных данных на всех маршрутах исполнения программы; - тестирование точности результатов вычислений и корректности обработки каждой переменной; - тестирование на полное соответствие состава и значений выходных данных программной спецификации.

Планирование отладки программных модулей .. Автоматизировано можно производить подготовку исходных данных: о циклах в программе; о маршрутах исполнения программы и предикатах, определяющих маршруты исполнения программы и границы изменения областей изменения переменных. Выделение циклов и маршрутов в них позволяет преобразовывать программу к антициклическому виду. При этом циклы заменяются их антициклическими эквивалентами с фиксированным и ограниченным числом итераций. Для выявления тестируемых маршрутов в такой ациклической программе разработчик должен указать критерий, по которому следует формировать маршруты. Упорядочение маршрутов производится по длительности их исполнения или по вероятности реализации при случайных данных на входе программы. Если ряд маршрутов может быть нереализуемым, то такие маршруты целесообразно исключить из последующего анализа.

Исполнение систем по отладочному заданию. . Специфика исполнения программ при тестировании состоит в том, что на любом шаге должна быть доступна информация о ходе и результатах процесса реализации программы. Необходимо иметь возможность выделять, регистрировать и отображать  0эту информацию в форме, удобной для анализа и обобщения. Для этого должен быть нарушен естественный ход исполнения программы для выполнения процедур регистрации ее состояния и полу чаемых результатов. Для регистрации результатов исполнения каждого оператора необходимо разорвать ход их естественного исполнения в процессоре ЭВМ и вставить операторы регистрации. Это можно сделать двумя способами: методом вставок (компиляции) и методом моделирования (интерпретации) каждой команды.

При методе вставок (компиляции) заранее выделяются в тесте программы контролируемые операторы и после каждого из них вставляется текст регистрирующей программы или операторов перехода на группу программ регистрации, обработки и отображения промежуточных данных. Текст отлаживаемой программы при этом расширяется и деформируется за счет операторов регистрации.

Метод моделирования (интерпретации) исполнения тестируемых программ позволяет использовать текст программы в объектном коде, каждая команда которой моделируется в соответствии с логикой операций данной ЭВМ.

Системы автоматизации отладки программ. . Для определенной совокупности программных модулей с учетом их сложности, общего числа, требований к качеству и т.д. целесообразна такая степень автоматизации отладки, при которой затраты на автоматизацию оправдываются достигаемым сокращением длительности и стоимости разработки модулей, составляющих систему. К системе автоматизации предъявляются следующие требования: - обеспечивать доступ пользователей в пакетном и диалоговом режимах, представление данных в символьном и графическом видах и в основном безбумажное проектирование программ; - использовать достаточно развитую БД проектирования для для накопления информации о разрабатываемых программах, их версиях, планах тестирования, тестовых и эталонных данных, выполненных корректировках; - позволять автоматически выявлять большинство ошибок, обусловленных нарушениями формализованных правил структурного построения модулей и использования данных; - обеспечивать автоматизированное планирование тестирования и подготовку рекомендаций по систематическому применению методов и стратегий тестирования с целью достижения максимальной корректности или надежности программ в условиях ограниченных ресурсов, выделяемых на отладку; - позволять проводить автоматизированное тестирование программных модулей, в том числе без деформации исполняемых программ операторами отладки; - позволять оценивать достигнутую корректность программного модуля по выбранным критериям тестирования и определять основные конструктивные показатели качества (логическую и информационную сложность, сложность связей, длительность счета и т.д.) созданных программ; - осуществлять регистрацию всех выполненных изменений в программах и учет версий программ, в которых проведены те или иные корректировки.