Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 11.03.2024

Просмотров: 56

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Содержание:

Введение

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

Тестирование – это процесс, который гарантируюет правильное функционирование программы и показывает в программном продукте отсутствие ошибок. Данное определение является не совсем праваильным. Любой человек с некоторым опытом прикладного программирования знает, что невозможно показать и выявить в программеполное отсутствие ошибок. Наиболее правильным решением будет определение процесс тестирования и отладки как завершающего этапа создания программы, задачей которого являетсяв выполнение программы с последующим выявлением сбоев и ошибок в ее коде. Вместо гарантироваания отсутствия ошибок в новой программе, более правильным решением будет хотя бы демонстрация их наличия. Корректная работа приложения по выполнению множества различных тестов не исключает наличие ошибок в нем. Она указывает, что нам пока неизвестно, в каких случаях может дать сбой программа. Получается парадокс тестирования. В его основе лежат два противоположных утверждения: с одной стороны, тестирование позволяет убедиться в хорошей работе продукта, а с другой — выявляет ошибки в ПО, указывая на нерабочее состояние продукта. Вторая цель тестирования с точки зрения улучшения качества является более продуктивной, потому что не позволяет игнорировать недостатки программного обесспечения.

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


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

Допущение в программах ошибок — это отличная практика. Ошибки помогают нам узнать принцип работы механизма отлалки. Разработчику следует найти ошибки до того момента, как заказчик увидит результат. Если ошибки в программах находят заказчики, это не есть хорошо.

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

1. Сущность тестирования и отладки. Методика выявления ошибок

1.1 Тестирование и его виды

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

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


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

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

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

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

В 2000-е было введено еще более широкое определение тестирования. оно было дполнено таким понятием, как оптимизация бизнес-технологий. Business Technology Ooptimiation задает направление развитию информационных технологий в соответствии с целями, преследуемыми бизнесом. Основной подход заключается в оценке и максимизации значимости всех этапов жизненного цикла разработки для достижения необходимого уровня качества, производительности, доступности.[1]


1.2 Виды тестирования

Исходя из преследуемых целей, можно условно разделить на три группы основные виды тестирования программ:

Функциональные

Нефункциональные

Связанные с изменениями

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

Модульное тестирование подразумевает контроль отдельного программного модуля.

Интеграционное тестирование – объединенное тестирование отдельных программных модулей.

Системное тестирование - выполняется на интегрированной системе с целью проверки системы на соответствие исходным требованиям.

Приемочное тестирование - способ проверки и контроля за соответствием работы приложения функциональным, нефункциональным и другим важным требованиям.[2]

Такие виды тестирования рассматривают внешнее поведение системы. Они делятся на три класса: функциональное тестирование; тестирование безопасности; тестирование взаимодействия.[3]

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

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

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

В стратегию безопасности входит достижение соблюдения конфиденциальности, целостности и доступности.

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


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

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

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

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

При отстутствии инсталляторов установка производится самостоятельно согласно инструкциям и спецификациям..

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

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