Автоматизация проверки знаний и навыков студентов в области прикладной математики и информатики
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?етодов отладки программного обеспечения. Выделим некоторые:
. Синтаксическая и семантическая отладка.
. Тестирование программ как "черного" или "белого" ящика.
. Статическое и динамическое тестирование.
. Разрушающие и неразрушающие методы.
. Методологические способы отладки.
. Другие приемы отладки.
В зависимости от объекта отладки методы и системы отладки можно разделить на две части: синтаксическую и семантическую.
Синтаксическая отладка начинается при первом вводе программы в ЭВМ для трансляции или сразу для выполнения и заканчивается получением текста программы, не содержащего конструкций языка программирования, противоречащих его синтаксису.
Семантическая отладка начинается в тот момент, когда программа стала синтаксически правильной и пригодна для выполнения на ЭВМ. Целью семантической отладки является поиск и корректировка программы таким образом, чтобы она выполняла заданную функцию (преобразование входных данных в выходные) в соответствии с требованиями к программе.
Наиболее распространенным и традиционным методом отладки программ является тестирование программ.
Подходы к решению задачи тестирования в зависимости от того, каким образом они учитывают или рассматривают структуру исследуемой программы, можно разделить на два направления:
. Тестирование программы как "черного ящика" (при тестировании не учитывается внутренняя структура программы, а принимаются во внимание лишь значения входных и выходных данных);
. Тестирование программы как "белого ящика" (при тестировании принимается во внимание также и внутренняя структура программы).
При тестировании программ по методу "белого ящика" тестовые данные для программы формируются с учетом ее внутренней структуры. При этом задача тестирования преобразуется в задачу обеспечения полноты проверки внутренней структуры, которая отражает алгоритм функционирования. Внутренняя структура может быть представлена в виде управляющего ориентированного графа, где вершины - это отдельные операторы, а дуги - возможные передачи управления между операторами.
Тогда тестирование может заключаться в проверке всех дуг такого графа, всех выходов из каждой вершины графа, маршрутов обработки инфоpмации внутри программы. При тестировании по этому методу программист располагает информацией о пути прохождения вычислительного процесса по графу и выбирает тесты таким образом, чтобы обеспечить проверку графа по заданному критерию. Также проверяются значения выходных данных, вырабатываемых программой. Поэтому тестирование по методу "белого" ящика в общем случае более глубокое и эффективное, чем по методу "черного" ящика.
Можно указать три вида тестирования, учитывающего внутреннюю структуру программы:
тестирование путей;
тестирование ветвей;
тестирование операторов.
Тестирование путей программы предполагает выполнение всех возможных или подмножеств путей, существующих в программе, по крайней мере один раз. Путь программы определяется значениями входных данных. Каждый путь программы состоит из последовательности линейных участков, на которых расположены только безусловно выполняемые команды; линейные участки связаны командами условного перехода. Если команды условного перехода не коppелиpуют друг с другом по данным, то число различных реализуемых путей программы может достигать числа 2 в степени n, где n - число команд условных переходов, каждая из которых имеет два выхода ("да" и "нет"). Ясно, что даже для небольших программ достичь полного тестирования путей невозможно.
Тестирование ветвей предполагает, по крайней мере, однократное выполнение каждой ветви отлаживаемой программы. Ветвь программы - это последовательность безусловно выполняемых команд, заканчивающихся командой условного перехода (максимальный участок с одним входом и одним выходом). При тестировании ветвей можно достичь полного перекрытия всех ветвей относительно небольшим числом тестов.
Тестирование операторов состоит в выполнении, по крайней мере, один раз каждого оператора программы независимо от пути или ветви программы, на которых он находится. Это наиболее простой из трех перечисленных способов тестирования.
В зависимости от способа получения результатов выполнения программы все подходы к тестированию можно также разделить на два направления.
. Если программа во время отладки непосредственно не выполняется, то такой подход называется статическим. При этом исследуется текст или код программы с целью выявления конструкций, которые можно интерпретировать как неправильные, для их последующего исправления;
. Если программа в процессе отладки выполняется, то такой подход называется динамическим. При этом исследуются выходные и промежуточные значения переменных, и если они отличаются от предполагаемых, то делаются необходимые корректировки в программе, и процесс выполнения программы повторяется.
При статическом тестировании проводится достаточно глубокий и полный анализ управляющих и информационных связей программы. Такой анализ основан на исследовании преобразований управления и данных, выполняемых каждым оператором программы, и затем объединении этих преобразований в единую цепочку. В результате формируются единые потоки управления и данных, а сам метод анализа назван потоковым.
Потоки управления и данных представляются в виде управляющего и информационного г