Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf
Добавлен: 30.06.2023
Просмотров: 74
Скачиваний: 3
Введение
Сегодня многие программисты и организации посвящены программированию приложений и систем и созданию программного обеспечения для удовлетворения постоянно растущих потребностей пользователей. Но нельзя игнорировать тот факт, что огромная часть времени и финансовых ресурсов уходит на отладку и тестирование производимых ими приложений. Но, несмотря на огромные издержки, конечный продукт очень часто вызывает много жалоб от пользователя, а проблема качества продукта говорит нам о несомненной важности программ отладки и тестирования на сегодняшний день. В этом причина неотложности проблем, связанных с работой. Причем многие «производители» до сих пор внятно даже не смогут дать точное определение тому, что же все-таки называется тестированием и отладкой. Некомпетентность в этой области является одной из причин наводнения на рынке с использованием программного обеспечения с неправильным и низким качеством (далее именуемого программным обеспечением)
Тестирование - это процесс, который гарантирует правильную работу разрабатываемых программ, а также её различных функций и показывает отсутствие багов в программном продукте. Можно заметить, что данное определение не совсем корректно и даже неправильно. Человек с опытом программирования приложений знает, что полное отсутствие ошибок в программе невозможно идентифицировать и показать. Более подходящим является определение процесса тестирования и отладки в качестве конечного этапа создания программного продукта, который заключается в выполнении программы для обнаружения ошибок и ошибок в программном коде. Вместо того, чтобы гарантировать отсутствие ошибок в новой программе, было бы разумнее продемонстрировать по крайней мере их присутствие. Если приложение работает правильно при запуске многих различных тестов, оно дает некоторую уверенность, но все же не гарантирует отсутствие ошибок в нем. Это только показывает, что мы все еще не знаем, в каких случаях программа может выйти из строя. Получается «парадокс тестирования». Он основан на двух противоположных утверждениях: с одной стороны, тесты позволяют обеспечить надлежащее функционирование продукта; а с другой - обнаруживает ошибки в программном обеспечении, показывая, что продукт не работает. Вторая цель тестирования более продуктивна с точки зрения улучшения качества, поскольку она не позволяет игнорировать недостатки ПО.
Невозможно ввести надежность в программу в результате тестирования, это определяется правильностью этапов проектирования. Лучше всего, конечно, лучшее решение здесь - не делать ошибок в созданной программе с самого начала. Но безошибочный результат 100% практически невозможно. Вот роль тестирования и отладки: просто найдите несколько ошибок, присутствующих в хорошо продуманном программном продукте.
Тема работы: «Тестирование и отладка программного обеспечения». Отладка и тестирование темы очень хорошая и важная, независимо от языка программирования или используемой платформы. Именно в этот момент разработчики сталкиваются со многими трудностями, и многие даже возмущаются. Отладка заставляет вас провести всю ночь работая над ней.
Ошибки внутри программы — незаменимая и довольно частая практика. Они помогают нам узнать, как все это работает. Поиск ошибок и идентификация ошибок дает нам несравненный опыт. Это подтверждает практическую значимость выбранного предмета. Разработчику также нужно найти их до того, как заказчик сможет увидить первые результаты вашей работы. Но если ошибки в ваших программах найдены клиентами, это довольно плохо.
Эта курсовая включает в себя три главы и приложения. В первой главе необходимо будет определить, что такое тестирование и отладка программ, что представляет собой сам процесс, какие приемы и способы существуют. Будут предоставленны различные рекомендации по отладке приложений. Кроме того, мы обсудим различные типы ошибок и способы их идентификации. В следующей главе я коснусь множества других практических моментов на уровнях отладки, к примеру среду разработки приложений Delphi. В последней постаруюсь подвести итоги.
1. Сущность тестирования и отладки. Методика выявления ошибок
1.1 Тестирование и его виды
В первую очередь необходимо внести ясность – в чем же разница между тестированием и отладкой программы. Данная терминология не всегда обозначает одно и то же, пусть даже огромная часть программистов воспринимают их не как различные этапы производства приложений. Важно разделять процесс тестирования и процесс отладки на два различных этапа работы над программой. При тестировании возникает проблема определения наличия ошибок, в то время как отладка служит для обнаружения найденных ошибок и их устранения. Если цели этих двух этапов разработки программы различны, используются соответствующие методы и инструменты. Самое главное в разработке и разработке программы придерживаться некоторых правил и принципов защиты от ошибок. Для этого существуют проверенные методы, но о них позже, но на данный момент немного истории.
Первые программные продукты начали разрабатываться в рамках исследовательских программ министерств обороны. Тестирование таких систем было строго формализовано с записью всех тестовых процедур, данных испытаний и полученных результатов. Тестирование было произведенно в виде самостоятельного процесса, который имел место после окончания кодирования, и разрабатывалось все, как правило, тем же персоналом.
В 1960-е годы большое внимание уделялось «исчерпывающим» проверкам, которые выполнялись с использованием всех путей кода или всех возможных входных данных. В этих условиях полная проверка программного обеспечения невозможна из-за слишком большого числа возможных входных данных, существует много путей, а также сложность поиска проблемы в архитектуре и спецификациях. По этим причинам «исчерпывающие» испытания считались невозможными и впоследствии были отклонены.
В 1970-х годах тестирование программного обеспечения называлось «активностью для подтверждения правильности программного обеспечения». В новой разработке программного обеспечения проверка программного обеспечения называлась «доказательством правильности». Эта концепция была в целом многообещающей, но в работе она занимала много времени и не была полной. Комплексное тестирование - это контроль и тестирование системы по отношению к исходным целям. Было решено доказать точность - неэффективно, за исключением того, что - приемочные испытания (поиск возможных ошибок, выполнение приложения в данной реальной среде). Другие тесты начали вводиться как запуск программы для обнаружения ошибок, а не только для демонстрации того, что программа работает.
Уже в 1980-х годах тестирование было дополнено понятием предотвращения ошибок. Одним из наиболее эффективных методов предупреждения ошибок является – проектирование тестов. Затем они осознали необходимость методики тестирования, а именно, что тестирование программы должно выполняться на протяжении всего цикла разработки, и этот процесс должен быть управляемым. Он проверяет не только запрограммированную сборку программ, но также их код, архитектуру, спецификации, а также сами тесты. Все это позволит выявить проблемы в требованиях и архитектуре и тем самым значительно сократить время и ресурсы для разработки приложений. Позже появились первые инструменты автоматизации процесса тестирования. Поскольку ЭВМ более надежна и способна выполнить больше тестов. Со временем простейшие методы стали более сложными, и скрипты сценариев для автоматических тестов стали использоваться.
В 1990-ых годах тестирование программ было дополнено проектированием, планированием, созданием и поддержкой тестовых систем. Это начало перехода на качественно новый уровень в течение всего цикла разработки. Существуют различные программные средства для поддержки процесса тестирования: расширенные автоматизированные среды с возможностью написания сценариев сценариев и автоматического создания отчетов. А также растет популярность использования систем управления тестами и программами для проведения полных нагрузочных тесторований. После этого, с развитием интернет-технологий и созданием множества веб-приложений, «гибкие тесты» стали очень популярными.
В 21 веке появилось более распространенное и широкое определение тестирования, когда в него было добавлено такое понятие как «оптимизация бизнес-технологий» (BTO). BTO ведет разработку информационных технологий в соответствии с корпоративными целями. Основной подход заключается в оценке и максимизации важности всех этапов цикла разработки для достижения требуемого уровня качества, производительности и доступности.
1.2 Виды тестирования
В зависимости от преследуемых целей, основные виды тестирования программ, можно условно разделить на три группы:
Функциональные
Нефункциональные
Связанные с изменениями
Функциональные виды тестирования базируются на функционале и особенностях систем, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: модульном, интеграционном, системном, и приемочном.
Модульное тестирование - это управление одним программным модулем, обычно в изолированной среде.
Интеграционные тесты - когда отдельные программные модули объединяются и тестируются в группе.
Тестирование системы - тестирование программ, которое выполяется на главной интегрированной системе для того чтобы проверить соответствие системы исходным требованиям.
Приемочное тестирование является средством проверки и проверки того, что работа приложения соответствует функциональным, нефункциональным и другим важным требованиям.
Все представленные виды тестирования изучают внешнее поведение системы, а также подразделяются на 3 вида: 1) функциональная проверка; 2) проверка безопасности; 3) проверка взаимодействия.
Функциональное тестирование рассматривает предопределенное поведение и основано на анализе спецификации функциональности компонента или системы в целом. Данные тесты содержатся в описании спецификаций и держатся на функциях, которые проводит система, а также исполнятся на всех режимах тестирования.
Преимущество функционального тестирования заключается в моделировании фактического использования программы, а недостатки включают в себя возможность устранения логических ошибок в продукте и возможную вероятность чрезмерного тестирования. Широко используется автоматизация функциональных тестов.
Тестирование безопасности - это метод тестирования, используемый для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к безопасности приложений, хакерских атак, вирусов и несанкционированного доступа к конфиденциальным данным. Стратегия безопасности включает соблюдение трех принципов: конфиденциальность, целостность и доступность.
Существует множество типов атак и уязвимостей. После завершения полного цикла тестирования безопасности никто не может быть на 100% уверен, что система действительно надежна с точки зрения безопасности. Но необходимо провести тесты безопасности, по крайней мере, значительно снизить вероятность несанкционированных вторжений, кражи информации и потери важных данных.
Тестирование взаимодействия может быть косвенно связано с функциональными тестами, которые проверяют способность приложения взаимодействовать с одним или несколькими компонентами. Это включает тестирование совместимости и тестирование интеграции. Программа, которая хорошо взаимодействует с другими компонентами и программами, может быть легко интегрирована в другие системы без необходимости дополнительных изменений. В этом случае количество изменений и время, затрачиваемое на их реализацию, действительно могут быть использованы для измерения возможности взаимодействия.