Оказывается, практически невозможно составить реальную программу без ошибок, и почти невозможно для достаточно сложной программы быстро найти и устранить все имеющиеся в ней ошибки.
Таким образом, можно сказать, что наличие ошибок в только что разработанной программе — это вполне нормальное и закономерное явление. А совсем ненормальным, из ряда вон выходящим фактом, является отсутствие ошибок в программе, которая не была еще подвергнута тщательной отладке. Конечно, речь здесь идет о реальных, достаточно сложных программах.
Учитывая этот печальный закон, разумно уже при разработке программы на этапах алгоритмизации и программирования готовиться к обнаружению ошибок на стадии отладки принимать профилактические меры по их предупреждению. Например, уже на этапе 2.3.2., когда выбирается общий, метод решения задачи, следует разработать и основную стратегию отладки, общий план ее проведения. Необходимо уже на этой стадии разработки программы решить, каким путем можно будет в дальнейшем убедиться, что выбранный метод решения задачи обеспечивает правильные результаты для указанных в ТЗ диапазонов изменения величин и условий функционирования программы.
Пошаговая отладка программ с выводом переменных | О самом простом | Program DEBUG
Разрабатывая алгоритм, следует, таким образом, учитывать, можно ли будет достаточно просто проконтролировать программу, составленную по выбранному алгоритму, и в случае, когда предвидятся большие затруднения, нужно отдать предпочтение другому, более выгодному для этапа отладки, алгоритму.
Стремление к максимально быстрому составлению программы с целью скорейшего начала (и окончания) ее отладки, приводит к тому что: отладка затягивается надолго, получение достоверных результатов откладывается на длительный срок. Такая задержка вызывается тем, что уже на поздних этапах отладки (а иногда — и эксплуатации) вскрываются все новые и новые ошибки, допущенные на этапах алгоритмизации и программирования, и приходится тратить много времени на их обнаружение и исправление. Отсюда можно сделать вывод, что кратность внутреннего цикла (этапы 2.3.6. и 2.3.7.) становится слишком большой, и при этом захватываются и этапы 2.3.3. и 2.3.4., а иногда и кратность внешнего цикла (от этапа 2.3.2 до 2.3.9.), оказывается отличной от единицы.
Напрашивается вывод, что для ускорения отладки нужно сократить кратности указанных циклов, выходя на машину с программой уже тщательно проверенной и подготовленной заранее к отладке.
Приведем некоторое руководство к действию, имеющее целью облегчить предстоящую отладку и сократить время ее проведения.
1) Разработка общего плана проведения отладки, общей методики проверки правильности составленной программы, а также системы необходимых для отладки контрольных примеров.
2) Проверка разработанных алгоритмов, выбор отладочных средств и определение контролируемых ими мест, участков, величин.
) Проверка составленной программы, реализация намеченного ранее плана использования отладочных средств для получения на ЭВМ необходимых при локализации ошибок тестовых результатов; изготовление эталонных результатов для тестов.
С#/Visual Studio. Debug. Отладка программы. Поиск ошибок.
) Ввод, печать и сверка текста программы, перенесенной на внешние носители.
) Получение с помощью транслятора вспомогательных таблиц (например, таблица перекрестных ссылок) и проверка их.
) Тщательный контроль первых результатов, получаемых по новой программе.
Примерное распределение между этапами общего времени, необходимого для разработки достаточно сложных программ, выглядит следующим образом:
— Получение задания, составление проекта программы и общего плана отладки 10%
— Разработка алгоритма (15%) и детального плана отладки 20%
— Программирование (5%) и изготовление тестов 15%
— Препарация и первая трансляция 5%
— Оформление программы 10%
Приведенные цифры отражают тот факт, что в процессе разработки программы работы по доказательству (демонстрации) правильности разрабатываемой программы равнозначны работам по ее изготовлению (проектированию, алгоритмизации и написанию), что можно выразить следующей формулой:
Разработка программы =Изготовление + Доказательство.
Вопрос минимизации времени, необходимого на отладку, имеет особое значение. К его решению можно подойти с двух сторон:
1) путем ускорения поиска и исправления ошибок, имеющихся в программе;
2) путем уменьшения количества ошибок, допускаемых при разработке алгоритма и составлении программы.
Рис.2.2 Схема алгоритма отладки программы.
Тестирование
Под тестированием следует понимать процесс исполнения программы с целью обнаружения ошибок, в качестве которых принимается любое отклонение от эталонов. Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленных ошибок.
Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требуемыми характеристиками в заданной области входных данных. Таким образом, в результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы.
Существует три основных способа тестирования:
Алгоритмическое тестирование применяется для контроля этапов алгоритмизации и программирования. Проектируются тесты и начинаются готовиться эталонные результаты на этапе алгоритмизации, а используются они на этапе отладки.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
7.2.Задачи отладки программ
Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требующимися характеристиками в заданной области входных данных. В результате отладки программа должна соответствовать определенной фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы. Процесс отладки программ включает:
создание совокупности тестовых эталонных значений и правил, которым должна соответствовать программа по выполняемым функциям, структуре, правилам описания, значениям исходных и соответствующих им результирующих данных;
статическую проверку текстов разработанных программ и данных на выполнение всех заданных правил построения без исполнения объектного кода;
тестирование программы с ее исполнением в объектном коде и с разными уровнями детализации: детерминированное, стохастическое и тестирование в реальном времени;
диагностику и локализацию причин отклонения результатов тестирования от заданных эталонных значений или правил; изменение программы с целью исключения причин отклонения результатов от эталонных.
Основным методом обнаружения ошибок при отладке программ является их тестирование.
В технической диагностике тест — это последовательность наборов сигналов (исходных данных), которые подаются на вход изделия, и соответствующие им наборы эталонных правильных сигналов (результирующих данных), которые должны быть получены на выходе. Для каждого тестового набора указываются координаты (точки) ввода исходных данных и координаты (точки) контроля результатов. Кроме того, при тестировании необходимо задавать допуски на отклонение результирующих данных от эталонных, в пределах которых следует, что полученные результаты соответствуют эталонным. Степень отклонения получаемых результатов от эталонов используется для оценки качества изделий и соответствия их техническим требованиям.
Программы, как объекты тестирования, имеют ряд особенностей, которые отличают процесс тестирования от традиционного, применяемого для проверки аппаратуры и других технических изделий. Для сложных КП практически всегда отсутствует полностью определенный и точный эталон для всех тестовых наборов. В связи с этим для тестирования в качестве эталонов используется ряд косвенных данных, которые не полностью отражают функции и характеристики отлаживаемых программ.
Для сложных программ недостижимо исчерпывающее их тестирование, гарантирующее абсолютно полную их проверку. Поэтому тестирование проводится в объемах, минимально необходимых для проверки программ в некоторых ограниченных пределах изменения параметров и условий функционирования. Ограниченность ресурсов тестирования привела к необходимости упорядочения применяемых методов и конкретных значений параметров с целью получения при тестировании наибольшей глубины проверок программ.
В ряде случаев процесс исполнения программ и получаемые результаты зависят от непредсказуемого изменения входных и промежуточных данных, а также от реального времени. Вследствие этого невозможно создать единственный универсальный метод тестирования и приходится применять ряд значительно различающихся категорий тестов. Каждая категория тестов отличается целевыми задачами, проверяемыми компонентами программы и методами оценки результатов. Только совместное и систематическое применение различных методов тестирования позволяет достигать высокого качества функционирования сложных КП. Целесообразно выделить три стадии тестирования: для обнаружения ошибок в программе; для диагностики и локализации причин обнаруженных искажений результатов; для контроля выполненных корректировок программ и данных.
Основная цель тестирования для обнаружения ошибок выявление всех отклонений результатов функционирования реальной программы от заданных эталонных значений. Задача состоит в обнаружении максимального числа ошибок, в качестве которых принимается любое отклонение от эталонов. Чем больше ошибок выявляется на этой стадии при каждой операции тестирования, тем выше эффективность тестов и обоснованность затрат на их выполнение. С этих позиций тесты, не способствующие обнаружению ошибок и только подтверждающие корректность функционирования программ, являются неэффективными, так как приводят к бесполезным затратам.
После тестирования для обнаружения ошибок применяется тестирование для их диагностики и локализации. Основная задача — точно установить место искажения программы или данных, явившегося причиной отклонения результатов от эталонных. Затраты оправданы, и тестирование выполнено успешно, если оно приводит к полной локализации первичных ошибок, подлежащих исправлению.
После локализации и устранения обнаруженных ошибок применяется контрольное тестирование, задача которого состоит в подтверждении правильности выполненной корректировки программы. В этом случае успешность тестирования определяется отсутствием проявления ранее обнаруженной, локализованной и устраненной ошибки, а также отсутствием вторичных ошибок, которые могут появиться при корректировке.
Источник: studfile.net
Что понимается под отладкой программы
Одним из самых сложных и трудоёмких этапов технологического процесса разработки программ является их отладка. На отладку приходится около 50% трудоёмкости из общих затрат на создание сложных комплексов программ. Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требующимися характеристиками в заданной области изменения входных данных.
Отладка программы заключается в поиске и устранении ошибок в программе. Ошибки в программе могут быть трёх типов:
· синтаксические, возникающие в результате нарушения правил написания предложений языка;
· семантические, связанные с недопустимыми значениями параметров, недопустимыми действиями над параметрами и т.д.; выявляются эти ошибки во время работы программы (обычно на этапе отладки);
· логические ошибки, связанные с неправильным использованием тех или иных алгоритмических конструкций, эти ошибки приводят к неправильным результатам при работе программы, но нарушение работы программы не вызывают.
Отладка предполагает выполнение следующих операций:
· выявление факта наличия ошибки в программе;
· определение листа нахождения ошибки (локализация);
Для ошибок первого типа все эти три этапа выполняются довольно просто с помощью компилятора среды, который выдает сообщение о любой обнаруженной ошибке этого типа, а курсор указывает место в тексте программы, где эта ошибка обнаружена. При этом если сообщение об ошибке, которое является довольно лаконичным, не позволяет выявить его природу, можно воспользоваться системой информационной контекстной помощи.
Наиболее сложно выявляются ошибки второго и особенно третьего типа. Выявлению ошибок второго типа часто помогает использование директив компилятора, позволяющих проверять допустимые значения тех или иных параметров (границы индексов элементов массивов, границы типа-диапазона, переполнение стека, ошибки ввода-вывода и т.д.). Директивы задаются либо в программе, либо с помощью меню Options.
Ошибки второго и третьего типа можно выявить тестированием программы с использованием встроенного отладчика. Отладчик позволяет выполнять следующие действия:
· получать значения любых параметров программы;
· модифицировать значения параметров;
· останавливать программу в заданной точке останова или в месте, соответствующем строке текста, где расположен курсор;
· осуществлять тестировку программы (выполнение программы по шагам) и т.д.
В ходе синтаксического контроля программы транслятором выявляются конструкции и сочетания символов, недопустимые с точки зрения правил их построения или написания, принятые в данном языке. Сообщения об ошибках ЭВМ выдаёт программисту, при этом вид и форма выдачи подобных сообщений зависят от вида языка и версии используемого транслятора. После устранения синтаксических ошибок проверяется логика работы программы в процессе её выполнения с конкретными исходными данными. Для этого используются специальные методы, например, в программе выбираются контрольные точки, для которых вручную рассчитываются междуточные результаты. Эти результаты сверяются со значениями, получаемыми ЭВМ в данных точках при выполнении отлаживаемой программы.
На этапе отладки для обнаружения ошибок в программе используются как текст программы, так и результаты её проверочного выполнения. Для контроля текста программы используются ручные методы контроля, которые проводятся без использования ЭВМ, а затем машинные с применением ЭВМ.
Различают три способа контроля текстов, алгоритмов и программ без применения ЭВМ:
1. Просмотр. Текст составленной программы и алгоритма внимательно просматривается, т.е. читается на предмет обнаружения ошибок или смысловых расхождений с текстом алгоритма, в котором производится программирование.
2. Проверка. При проверке программы и алгоритма программист по тексту программы старается восстановить тот процесс, который определяет программу, после чего сверяет его с требованиями технического задания. К трудностям проверки программы, особенно логических её участков относится то, что сверять приходится не тексты, алгоритмы и программы, а вычислительный процесс. Поэтому проверка часто имеет не виртуальный характер, а мысленный. Увеличение количества этапов алгоритмизации приводит к облегчению и ускорению проверки и отладки, несмотря на увеличенный объём работы при алгоритмизации.
3. Прокрутка. Основой прокрутки является имитация выполнения программы или алгоритма на машине с целью представления о процессе или определение функций программы и последовательности её выполнения. Она позволяет проверить программу, как бы в динамике её работы, проверить элементы вычислительного процесса, а не только текст программы.
Прокрутку следует применять лишь для контроля логически сложных программ или блоков. Арифметические блоки нужно проверить обычным способом. Вычислять числовые значения нужно для тех величин, от которых зависит последовательность выполнения операторов программы.
Исходные данные, влияющие на логику программы должны выбираться таким образом, чтобы была минимальная прокрутка программы. В ходе прокрутки необходимо применять работу программы и для особых случаев. Прокрутка применяется не только на этапе алгоритмизации и программирования, но в ходе отладки программы на ЭВМ, для повышения контроля и локализации ошибок. Прокручивается не вся программа, а подозрительные места. Прокрутка является необходимой для программ написанных в машинных кодах со многими внешними носителями или использующих оперативную память сложным образом.
Таким образом, в результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы. Процесс отладки программ включает:
· создание совокупности тестовых эталонных значений и правил, которым должна соответствовать программа по выполняемым функциям, структуре, правилам описания, значениям исходных и соответствующих им результирующих данных;
· статистическое тестирование текстов разработанных программ и данных на выполнение всех заданных правил построения и описания без исполнения объектного кода;
· тестирование программы с её исполнением в объектном коде и с разными уровнями детализации: детерминированное, стохастическое и тестирование в реальном масштабе времени;
· диагностику и локализацию причин отклонения результатов тестирования от заданных эталонных значений и правил;
· разработку изменения программы с целью исключения причин отклонения результатов от эталонных;
· реализацию корректировки программы, обеспечивающую соответствие программы заданному эталону.
Контроль правил построения и описания программ и данных предполагает точную формализацию этих правил и проверку степени их выполнения. Относительно небольшое число используемых правил описания и построения программ и данных, а также чёткая их формализация позволяют построить высокоавтоматизированные методы и средства контроля, и автоматически выявлять отклонения от этих эталонов. Для создания любых изделий применяются соответствующие технологии. При этом в понятие технология включается совокупность производственных процессов, методов и средств, предназначенных для создания определенных видов изделий с заданными показателями качества.
В результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемых за эталонную для данной программы.
Оценка результатов решения
Результатом решения данной программы является формирование таблицы «План изготовления изделий».
Отлаживалась программа на контрольном примере. Проверив работу программы можно убедиться, что алгоритм реализован полностью.
Данная программа доказала насколько успешно применен при программировании язык Visual Fox Pro 9.0 для анализа и обработки информации.
Программирование с использованием современных технических средств позволяет говорить о быстродействии выполняемых операций по учету закупки и выдачи материала.
Благодаря переводу ведения Плану изготовления изделий ГП, ТНП на ПЭВМ повысилась оперативность работы по оформлению документации, возможность освобождения работников планового отдела от необходимости выполнения учетных работ вручную и отказ от работы с первичными документами.
Следствием этого является экономия времени и снижение трудоемкости учета, повышения уровня автоматизации учетных работ, освобождение работников цехов и отделов снабжения от рутинной ручной работы, то есть в конечном итоге повышение производительности труда работников производства.
Источник: studbooks.net