Файл: Откладка и тестирование программ: основные подходы и ограничения.pdf
Добавлен: 31.03.2023
Просмотров: 430
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Методы, сущность и подходы тестирования и отладки.
1.1 Основные подходы отладки программного обеспечения.
1.2 Тестирование ПО и Откладка.Разница понятий.
1.3 Виды тестирования програмного обеспечения
1.4 Сущность и методика отладки программ. Виды ограничений и ошибок.
Глава 2. Практика отладки и тестирования приложений на примере среды Delphi.
2.1 Необходимые инструменты для откладки.
2.2 Применение точек остановки и модификация локальных переменных.
2.3 Применение трассировки приложения при тестировании и откладке ПО.
Было принято решение, что доказывать правильность — неэффективно, разве что только - приемо-сдаточные испытания (поиск возможных ошибок, выполняя приложение в заданной реальной среде). Далее тестирование стало представляться, как выполнение программы с целью обнаружить ошибки, а не только продемонстрировать, что программа работает.
Уже в 1980-х годах тестирование было дополнено такой концепцией, как предотвращение ошибок. Разработка тестов - один из самых эффективных методов предотвращения ошибок. Затем они осознали необходимость методологии тестирования, а именно, что тестирование программы должно проводиться на протяжении всего цикла программирования, и этот процесс должен быть управляемым. В этом случае проверяется не только разработанный набор программ, но и их код, архитектура, спецификации, а также сами тесты. Все это поможет определить требования и проблемы с архитектурой и, таким образом, значительно сократить время и деньги на разработку приложений. Позже стали появляться первые инструменты для автоматизации процесса тестирования. Потому что компьютер более надежен и может выполнять больше тестов. Со временем самые простые методы стали более сложными, и сценарии сценариев стали использоваться для автоматического тестирования.
В 1990-е годы тестирование программ было дополнено проектированием, планированием, созданием и поддержкой тестовых систем. Это начало переход на качественно новый уровень на протяжении всего цикла разработки. Для поддержки процесса тестирования отображаются различные программные инструменты: улучшенные автоматизированные среды с возможностью написания сценариев и автоматической генерации отчетов. Кроме того, широко используются системы управления тестированием и приложения для нагрузочного тестирования. Впоследствии, с развитием интернет-технологий и созданием многих веб-приложений, «гибкие тесты» стали очень популярными.
В 2000-х годах, когда было добавлено понятие «оптимизация бизнес-технологий» (BTO), появилось еще более широкое определение тестирования. BTO направляет развитие ИТ в соответствии с корпоративными целями. Основной подход заключается в оценке и максимизации значения всех этапов жизненного цикла разработки для достижения требуемого уровня качества, производительности, доступности.[1]
1.3 Виды тестирования програмного обеспечения
В зависимости от преследуемых целей, основные виды тестирования программ, можно условно разделить на три группы:
- Функциональные
- Нефункциональные
- Связанные с изменениями
Функциональные виды тестирования базируются на функционале и особенностях систем, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: модульном, интеграционном, системном, и приемочном.
Модульное тестирование – это контроль отдельного программного модуля, обычно в изолированной среде.
Интеграционное тестирование – когда отдельные программные модули объединяются и тестируются в группе.
Системное тестирование - тестирование программ, выполняемое на полной, интегрированной системе с целью проверки соответствия системы исходным требованиям.
Приемочное тестирование - способ проверки и контроля за тем, чтобы работа приложения отвечала функциональным, нефункциональным и другим важным требованиям.[2]
Все эти виды тестирования рассматривают внешнее поведение системы и подразделяются на три подвида: 1) функциональное тестирование; 2) тестирование безопасности; 3) тестирование взаимодействия.[3]
Функциональное тестирование рассматривает заранее указанное поведение и основывается на анализе спецификаций функциональности компонента или системы в целом. Эти тесты описываются в спецификациях и основываются на функциях, выполняемых системой, и могут проводиться на всех уровнях тестирования.
Преимущество функционального тестирования заключается в том, что оно имитирует фактическое использование программы, а недостатки включают в себя возможность отсутствия логических ошибок в продукте и возможную вероятность чрезмерного тестирования. Автоматизация функциональных тестов также широко используется.
Тестирование безопасности - это метод тестирования, используемый для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложений, хакерских атак, вирусов, несанкционированный доступ к конфиденциальным данным.
Стратегия безопасности включает в себя соблюдение трех принципов: конфиденциальность, целостность и доступность.
Существует много типов атак и уязвимостей. После завершения полного цикла тестирования безопасности никто не может быть на 100% уверен, что система действительно надежна с точки зрения безопасности. Но есть необходимость в тестировании безопасности, по крайней мере, чтобы значительно снизить риск несанкционированного проникновения, кражи информации и потери важных данных.
Тестирование взаимодействия можно косвенно отнести к функциональному тестированию, которое проверяет способность приложения взаимодействовать с одним или несколькими компонентами. Это включает в себя тесты на совместимость и интеграционные тесты. Программа, которая хорошо взаимодействует с другими компонентами и программами, может быть легко интегрирована в другие системы без необходимости дальнейших изменений. В этом случае количество изменений и время, потраченное на их реализацию, фактически используются для измерения возможности взаимодействия.
Нефункциональные тесты основаны на тестах, необходимых для определения различных свойств продукта, измеряемых по всем типам значений, т.е. Х. показывает, как программа ведет себя на работе. Нефункциональные тесты включают в себя ряд подвидов. Это тест производительности, установки, удобства, тестирования ошибок и конфигурации.
Тестирование производительности или нагрузочное тестирование имитирует работу системы несколькими пользователями в распределенных ресурсах программы. Выявляются возможности и недостатки приложения при работе под нагрузкой и в стрессовых условиях – стабильная работа программ.
Тестирование это одна из важнейших задач по обеспечению качества программного обеспечения и служит она для нормальной инсталляции приложения, его настройки и обновления. Сейчас наибольшее распространение получила установка программ с помощью специальных программных модулей – инсталляторов, которые сами нуждаются в надлежащем тестировании.
Если инсталляторов нет, то установка производится самостоятельно согласно инструкциям и спецификациям, либо специальному плану установки; например в распределенных системах.
Тестирование удобства пользования не имеет ничего общего с тестированием функциональности пользовательского интерфейса, оно лишь проводится на пользовательском интерфейсе, равно как и на многих других возможных компонентах продукта. Это лишь метод тестирования, определяющий удобство в использовании программы, обучению, понятности для пользователей программного обеспечения в конкретных условиях. При этом оценивается удобство использования программы исходя из критериев производительности, эффективности, правильности действий пользователя, запоминаемости, а также необходимая эмоциональная реакция человека после работы с продуктом.
Проверяется и функционал самой программы тестом черного ящика, а также и ее интерфейс тестированием белого ящика, где уже проверяется удобство использования модулей, классов, методов и переменных, а также рассматривается возможность доработки, модификации системы и легкость интегрирования их с другими приложениями и компонентами. Все это направлено на повышение качества, скорости написания программного кода и его поддержки. Тестирование удобства пользования можно производить на различных этапах проектирования продукта. Для создания удобного дизайна программ полезно следовать принципау «защиты от дурака». Поэтому, если вам нужно только ввести целочисленное значение в поле формы, вы должны ограничить пользователя диапазоном ввода только числами и исключить другие символы, чтобы избежать исключений из кода.
Тестирование на отказ и восстановление анализирует стрессоустойчивость программы в случае отказа оборудования, сбоя сети и других факторов. Системы восстановления и восстановления проверяются, чтобы гарантировать целостность и безопасность данных программного обеспечения в случае сбоя в нормальной работе программы или среды. Этот тест просто необходим при разработке веб-приложений, потому что из-за потери данных вы можете потерять много клиентов, деньги, а главное репутацию вашего продукта.[4]
Технически это все достигается имитацией симуляцией отключения электричества, обрыва связи, отключением носителей, либо специальным тестовым набором для ситуации наличия в системе неверных данных.
Необходимо отметить, что тест на отказ и восстановление является довольно специфическим тестированием. При разработке сценариев тестирования следует учитывать все особенности тестируемого программного обеспечения. Методы воздействия при этом применяются достаточно жесткие, поэтому следует сразу решить: необходимо и целесообразно вообще проводить подобные испытания для конкретной программы?
Конфигурационное тестирование направлено на проверку работоспособности программы в разных конфигурациях системы, платформах, средах, железе и т.д. Целями данного тестирования могут быть: определение оптимальной конфигурации оборудования или возможность миграции и совместимости системы с разными платформами и конфигурациями компьютеров.
В клиент-серверных приложениях тесты выполняются на уровне сервера и клиента. На уровне сервера продукт тестируется с использованием аппаратного и программного обеспечения. Особое внимание уделяется определению оптимальной конфигурации устройств, которая предлагает хорошее качество, производительность и надежность.
На уровне клиента производительность программы анализируется конечным пользователем с использованием различных конфигураций клиентских компьютеров и операционных систем. Особое внимание уделяется функциональности и удобству использования программного продукта. Тесты проводятся с учетом всех типов параметров: типа операционной системы, ее горечи, типа браузера, функций видеоадаптеров, драйверов, библиотек, разрешения экрана и т. Д.
И чем больше требований предъявляется к программе для работы с различными конфигурациями компьютера, тем больше разных тестов требуется. Именно в таких случаях очень эффективным будет автоматизация процесса тестирования, позволяющая экономить много времени и средств разработчиков.
Связанные с изменениями виды тестирования реализуются после внесения необходимых изменений и корректировки. Программа должна быть заново протестирована, чтобы подтвердить, что ошибка была устранена. [5]
1.4 Сущность и методика отладки программ. Виды ограничений и ошибок.
Весь спектр возможных ошибок в программных продуктах можно условно разделить на четыре категории:
- Нелогичный пользовательский интерфейс;
- Неудовлетворенные ожидания;
- Низкая производительность;
- Аварийные завершения или разрушение данных.
Нелогичный пользовательский интерфейс это разновидность не очень серьезных ошибок, однако может привести к потере потенциальных клиентов и снижению рейтинга вашего продукта. Почему, например, операционная система Windows от Microsoft пользуется такой популярностью? Одной из причин является как раз – удобный и понятный пользовательский интерфейс во всех ее приложениях. Если отклониться от ее стандартов, программа становится трудной для использования пользователем. В качестве примера такого трудного приложения можно привести Microsoft Outlook. В нем различные сочетания клавиш для быстрой работы не соответствуют вызовам привычных функций и действий пользователя; например поиск и др.
Если говорить о клиентских приложениях, то в них проблема нелогичности решается довольно просто. При разработке лишь необходимо придерживаться специальных рекомендаций и стандартов для Windows-приложений.
В случае разработки интерфейса веб-приложения эта задача значительно усложняется. Нет более определенных стандартов пользовательского интерфейса. При разработке интерфейса для веб-клиента важно учитывать возможную низкую скорость трафика, поэтому следует создать максимально простой пользовательский интерфейс и избегать загрузки с сервера ненужных мелочей, тяжелых графических элементов и т. Д. Например, простые решения, такие как CNN.com, подходят практически всем пользователям. Использование простого набора ссылок выглядит намного лучше и работает быстрее, чем накапливание ненужного функционального мусора, причиняя неудобства и пугая клиентов.
Одна из самых неразрешимых ошибок - неудовлетворенные ожидания пользователей. Причиной этого обычно является отсутствие исследования реальных потребностей потребителя, то есть существует проблема взаимодействия. Подобные ошибки обычно возникают на самых ранних этапах проектирования программы.[6]