Файл: Отладка и тестирование программ: основные подходы и ограничения (ПОНЯТИЕ ТЕСТИРОВАНИЯ И ОТЛАДКИ).pdf

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

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

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

Добавлен: 30.03.2023

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

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

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

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

Нахождение подобных ошибок на стадии внедрения достаточно дорогостоящая проблема. Поэтому проведение не только верификации и валидации необходимо проводить на ранних этапах разработки программного обеспечения [8].

Входными требованиями является бизнес модель.

Объектом тестирования выступает созданная система.

Разделение тестов на виды по объектам тестирования, а также на уровни тестирования производится при определении обобщённой модели жизненного цикла. Стоит отметить, что для каждого уровня тестирования, можно использовать довольно разные виды тестирования, а для каждого тестирования можно использовать различные типы тестовых испытаний [5].

2. ТЕСТИРОВАНИЕ И ОТЛАДКА ПРОГРАММ

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

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

  1. Функциональные тесты.
  2. Нефункциональные тесты.
  3. Тесты, связанные с изменениями.

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

Функциональные требования включают в себя:

  1. Функциональную пригодность.
  2. Точность.
  3. Способность к взаимодействию.
  4. Соответствие стандартам и правилам.
  5. Защищённость.

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

  1. Тестирование производительности.
    1. нагрузочное тестирование.
    2. стрессовое тестирование.
    3. тестирование стабильности или надежности.
    4. объемное тестирование.
  2. Тестирование установки.
  3. Тестирования для удобства пользования.
  4. Тестирование на отказ и восстановление.
  5. Конфигурационное тестирование.

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

  1. Регрессионное тестирование.
  2. Дымовое тестирование.
  3. Тестирование сборки.
  4. Санитарное тестирование (проверка согласованности или исправности).

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

Основные принципы безопасности программного обеспечения. Стратегия безопасности базируется на трех принципах:

  1. Целостность.
  2. Доступность.
  3. Конфиденциальность.

Для определения целостности существует два основных понятия:

  1. Доверие – ресурс будет изменен только соответствующим способом определенной группой пользователей.
  2. Повреждение и восстановление – данные повреждаются или меняются авторизованными и неавторизованными пользователями. Необходимо определить, насколько важна процедура восстановления информации [13].

Доступность. Это требование о том, что ресурсы должны быть доступны авторизованному пользователю, внутреннему объекту или устройству. Как правило, чем более критичен ресурс, тем выше уровень доступности должен быть.

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

Тестирование взаимодействия. Взаимодействие различных системе, сервисов и приложений друг с другом приобрело значительную актуальность при развитии сетевых технологий и интернета. Любые связанные с этим проблемы могут привести к паданию авторитета компании, вследствие чего произойдут финансовые потери. Эта является одной из самых главных стадий и необходимо подходить к тестированию со всей серьезностью [9].

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


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

Количество изменений и времени, требуемое на выполнение, можно использовать для измерения возможности взаимодействия.

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

Тестирование производительности. При тестировании производительности главной задачей является определение критериев под нагрузкой, при этом происходит:

  1. измерение времени выполнения выбранных операций при определенных интенсивностях выполнения этих операций;
  2. определение количества пользователей, одновременно работающих с приложением;
  3. определение границ приемлемой производительности при увеличении нагрузки (при увеличении интенсивности выполнения этих операций);
  4. исследование производительности на высоких, предельных, стрессовых нагрузках [19].

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

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

  1. измеряется время выполнения определённых операций при выбранных интенсивностях выполнения этих операций.
  2. производится определение количества пользователей, которые одновременно работают с приложением.

Затем необходимо произвести тестирование стабильности, которое иногда называют тестированием надежности.

Тестирование стабильности. Главной задачей тестирования надежности (стабильности) является проверка на работоспособность приложения при долговременном (многочасовом) тестировании со средним уровнем нагрузки. При этом время выполнения операций играет в этом тестировании не главную роль. На первом месте стоит утечка памяти, перезапуск сервера под нагрузкой, а также другие немаловажные аспекты, влияющие на стабильность работы [10].


Дымовое тестирование, также называется Smoke Test, это минимальный набор тестов, который выявляет явные ошибки. Такой тест выполняется самим программистом и если программа не проходит этот тест, то дальнейшее, более глубокое тестирование уже не имеет смысла.

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

Это тестирование можно проще автоматизировать, нежели глубокое или интеллектуальное тестирование. При автоматизации снижается количество ручного труда, за счет этого можно проводить тести намного чаще. При этом чем чаще выполняются тесты, то тем быстрее становится известно о проблемах, выявляемых этими тестами. Чем быстрее найдена проблема, тем легче ее устранить, а автоматизация тестирования зачастую выполняется с помощью непрерывной интеграции [11].

Санитарное тестирование. Это определенный, узконаправленный вид конкретных функций системы, согласованный заранее со спецификациями. Иногда санитарное тестирование и дымовое отождествляют, хотя у этих видов тестирования есть большая разница в направлении изучения объекта [12].

Регрессионное тестирование. Это тестирование рекомендуется проводить после исправления программы, а именно исправление бага, объединение кода, интеграция на другую операционную систему [5].

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

Основные преимущества этого тестирования:

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

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


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

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

  1. Невозможность установки программного обеспечения.
  2. Потерю данных после установки более новой версии программы.
  3. Невозможность отката до предыдущей версии.

При этом значительно экономятся деньги и время, а также облегчается работа администраторов. Тестирование инсталляции проводится согласно плану установки программного обеспечения. Главным образом проверяется установка, обновление, настройка и откат версии, а также удаление программного обеспечения на всех заявленных раннее платформах [14].

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

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

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

Сам процесс тестирования фиксируется в протоколе, иногда на аудиоустройства и или видео устройства, для более детального анализа. Если выявляются какие-либо трудности, то разработчики дорабатывают продукт и повторяют тестирование. При наблюдении взаимодействия пользователей с продуктом можно найти для него оптимальное решение. Одна из трудностей после проведения проверки эргономичности является большие потоки информации, которые не упорядочены [15].

Тестирование на отказ и восстановление. Это тестирование позволяет проверить способность успешно восстанавливаться после сбоя сети, а также отказа оборудования или критических ошибок программного обеспечения. Оно рекомендуется для систем, которые работают круглосуточно [16].