Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf
Добавлен: 30.06.2023
Просмотров: 70
Скачиваний: 3
Если необходимо отключить управление переполнением в отдельных модулях, например, в криптографических алгоритмах, (отдельные) модули данных используют директиву «{$ OVERFLOWCHECKS OFF}».
Группа параметров «Отладка» включает параметры, которые влияют только на всю отладочную информацию в файлах DCU. Единственным исключением является параметр «Утверждения», который включает процедуру «Утверждений».
В общем случае рекомендуется, чтобы отладочные приложения задавали все параметры в группах «Runtime Errors» и «Debug» и отключали их, когда окончательное приложение окончательно скомпилировано. В Delphi 7 и ниже это нужно делать вручную, а новые студии имеют хорошую поддержку версий проекта, где вы можете поместить все необходимые опции для отдельных типов сборок.
Второй наиболее важным инструментом для отладочных приложений является окно «Call Stack», второе - самое важное. Это приложение содержит описание всех вызовов до возникновения исключения, ошибки или прерывания в точке останова. Двойным щелчком вы можете быстро переключаться с одного вызова на другой и отображать список локальных переменных для каждого вызова (см. «View locals») и устанавливать точки останова для каждого вызова. Это позволяет быстро локализовать ошибку при отладке и значительно облегчает работу программисту.
С помощью этого инструмента удобно отслеживать и находить необходимые вызовы для функций или процедур с очень большим кодом приложения. Если эта ошибка не всегда возникает, но только при работе с некоторыми данными, в этом случае используется диалоговое окно свойств свойств точки остановки. Вызывается он через свойства BP в коде приложения.
В дополнение к программному коду вы также должны работать с данными разных типов и областей памяти. В отладчике с помощью «Точки останова данных» можно установить точки остановки по адресам, указывающим расположение памяти. Это делается через «Список наблюдения» или в окне «Список точек остановки», используя «Добавить точку разрыва-> точку остановки», где вы должны указать адрес зоны. памяти, ее размера или имени требуемой переменной. Если мы укажем имя переменной, отладчик попытается найти ее в памяти и установить точку остановки. Местонахождение памяти, где находится значение переменной, изменяется при любом новом запуске программы, из-за этого получить значение довольно проблематично.
Объем глобальных переменных всегда доступен, и даже без запуска приложения отладчик позволяет вам установить «точку прерывания данных» на изменения этих переменных, даже без запуска программы. В этом случае отладчик определяет адрес глобальной переменной на основе предыдущей версии программы. Этот адрес может не соответствовать следующему запуску программы. Но с локальными изменениями ситуация еще хуже, потому что они расположены в стеке и, оставляя поле зрения, их место в стеке занято другими значениями. Получается, что установка «Data breakpoint» на любую локальную переменную возможна только тогда, когда она находится в области видимости (Приложение Б).
Следует отметить, что отладчик Delphi не является профессиональным инструментом для отладки сторонних приложений. Инструмент такой же важный и практичный, как «Точка останова памяти» имеет усеченную версию. Существует только возможность отслеживать адрес памяти для записи. Но, тем не менее, даже в очень усеченной версии, это хороший инструмент для управления изменениями в памяти приложения, особенно для поиска ошибок с арифметикой адреса.
Заключение
В большей степени успешность отладки программного продукта зависит от правильной и рациональной организации его тестирования. Во время отладки программы исправления и исправления, как правило, только ошибки, обнаруженные ранее при тестировании продукта. Когда тест не предназначен для подтверждения точности и оптимальности приложения, он служит для демонстрации наличия ошибок и значений по умолчанию программного обеспечения. Так же нельзя давать никаких гарантий, что во время тестирования программы каким либо набором тестов есть шанс найти все ошибки в программном коде и его обеспечении. Отсюда необходимость проверки и отладки, во время которой нужно решить 2 главные задачи. Во-первых, проверьте программу на набор тестов, которые найдут максимально возможное количество ошибок. В то же время необходимо учитывать растущую стоимость программы с слишком сложными и слишком сложными тестами. Во-вторых, вам нужно определить, когда вы можете закончить отладку программного обеспечения; когда исправлено достаточно ошибок; Когда работа над программой была протестирована во всех возможных ситуациях, а появление ошибок минимизировано. Все это делается на основе требований к качеству и надежности программного обеспечения.
Отладка - это самый сложный и ответственный этап разработки программного обеспечения; так что это всегда, так, наверное, и будет надолго. Ошибки происходят в любом приложении, как в торговле, так и в продуктах, которые доступны бесплатно на рынке. Мы все привыкли к тому, что через некоторое время после выхода программы на рынок выходят все исправления с исправлениями, то есть небольшие утилиты, которые исправляют ошибки в программе. Поскольку отладка является самым важным шагом в разработке приложения, это должно быть учтено с самого начала его разработки. Отлаживайте каждый новый класс, метод или созданную процедуру. Несмотря на то, что новейшие технологические решения в программировании позволяют отлаживать себя очень эффективно, и каждый программист пытается интегрировать возможные средства отладки в свой код, однако невозможно избежать этапа отладки готового приложения. Каждый профессиональный программист должен научиться видеть недостатки приложения и принимать необходимые решения по их проверке и контролю.
Любой бизнес должен беспокоиться о ошибках в своих программных продуктах, потому что они могут быть дорогими для их бизнеса. В другом случае организация будет вынуждена потратить большие средства и время на продолжение поддержки своих выпущенных программ, а тем временем другие конкурирующие компании уже будут производить следующие версии своих аналогичных продуктов. Прекратите все то, что потребители начнут покупать программы у конкурентов. Хорошее программное обеспечение сегодня более востребовано, чем когда-либо прежде, поэтому интенсивность борьбы за высококачественные программные продукты будет только возрастать. Пользователи программы могут легко переключаться с одной программы на другую, перемещаясь с одного сайта на другой. Поэтому, если чьи-то программы содержат много ошибок, это нанесет непоправимый удар компании и имидж компании. Все это должно стимулировать производителей к созданию лучших программ.
В заключении себе и другим будущим программистам хочу дать следующие рекомендации:
Необходимо считать тестирование и отладку главной ключевой задачей разработки программ. Он должен быть доверен наиболее квалифицированным и опытным программистам и лучше других.
Лучшим будет тест, который находит более всего ошибок, а вовсе не тот, который доказывает, что приложение работает правильно.
Тесты должны быть подготовлены для правильных и неправильных данных. Необходимо сохранить тестовые журналы; и детально изучите результаты теста. Если использование теста невозможно повторить, то от него лучше вовсе отказаться.
Модули должны быть подключены к приложению только один раз; замена модулей значительно усложняет тестирование.
И последнее. Необходимо снова запустить все тесты, связанные с проверкой работы приложения или его взаимодействием с другими приложениями, если он был изменен, в результате исправления ошибок.
Список использованных источников
1 Глас Р. Руководоство по надежному программированию. М., Финансы и статистика, 2010.
2 Керман М. К. Программирование и отладка в Delphi. Пер. с англ. — М.: Издательский дом "Вильямc", 2003, 672 с.
3 Коликова Т.В., Котляров В.П. Основы тестирования программного обеспечения, М., Бином, 2010, 285 стр.
4 Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд. — М.: «Вильямс», 2010. — 464 с.
5 Майерс, Баджетт, Сандлер Искусство тестирования программ, 3-е. — М.: «Диалектика», 2012. — 272 с.
6 Пестриков В. М., Маслобоев А. Н. Delphi на примерах. — СПб.: БХВ-Петербург, 2009. — 496 с.
7 Синицын С. В., Налютин Н. Ю. Верификация программного обеспечения. — М.: БИНОМ, 2008. — 368 с.
8 Стивен Р. Delphi. Готовые алгоритмы / Род Стивене; - 4-е изд. - М.: ДМК Пресс; СПб.: Питер, 2010. - 384 с.
9 Тамре Л. Введение в тестирование программного обеспечения, М., Дрофа, 2009.
10 Фленов М. Программирование в Delphi глазами хакера. — СПб.: БХВ-Петербург, 2009. - 368 с.
11 Ховард М., Лебланк Д. Защищенный код: Пер. с англ, — 2-е изд., испр. М.: Издательско-торговый дом «Русская Редакция», 2004. — 704 стр.
Приложение
Глоссарий
№ п/п |
Понятие |
Определение |
1 |
Интеграционное тестирование |
тестирование, при котором, отдельные программные модули объединяются и тестируются в группе. |
2 |
Испытание |
поиск возможных ошибок, выполняя приложение в заданной реальной среде. |
3 |
Комплексное тестирование |
контроль и испытание системы по отношению к исходным целям. |
4 |
Контроль |
попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде. |
5 |
Отладка |
завершающий этап создания программного продукта, который заключается в выполнении программы с целью выявления сбоев и ошибок программного кода, направлен на установление точной природы известной ошибки и ее исправление. |
6 |
Приемочное тестирование |
способ проверки и контроля за тем, чтобы работа приложения отвечала функциональным, нефункциональным и другим важным требованиям. |
7 |
Тестирование системы |
это тестирование программ, которое происходит на полной, интегрированной системе, для того чтобы проверить полное соответствие даннной системы изначальным требованиям. |
8 |
Тестирование |
процесс, гарантирующий правильность функционирования программы и показывающий отсутствие ошибок в программном продукте. |
9 |
Тестирование внешних функций |
контроль внешнего поведения системы, определенного внешними спецификациями. |
10 |
Тестирование модуля |
контроль отдельного программного модуля, обычно в изолированной среде. |
11 |
Тестирование настройки |
проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы. |
12 |
Тестирование приемлемости |
проверка соответствия программы требованиям пользователя. |