Виды тестирования программного обеспечения

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

Виды Тестирования ПО можно разделить на несколько групп:

    • Функциональные.
    • Нефункциональные.
    • Связанные с изменениями.

Основные функциональные виды тестирования

Первым, непосредственно, является Функциональное тестирование (Functional testing).

Направленное на проверку реализуемости функциональных требований. Иными словами — проверка способности ПО решать задачи, необходимые пользователям. Функциональные тесты могут проводиться на всех уровнях тестирования (компонентном, интеграционном, системном, приемочном).  При этом, что делает ПО и какие задачи решает определяется Функциональными Требованиями.

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

    • Функциональная пригодность.
    • Точность.
    • Способность к взаимодействию.
    • Соответствие стандартам и правилам.
    • Защищенность.

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

Вторым из распространенных видов является Тестирование безопасности (Security and Access Control Testing).

Данная стратегия направлена на проверку безопасности системы, а также на анализ рисков, связанных с обеспечением защиты от различного вида атак.

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

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

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

Говоря о функциональном тестировании не стоит забывать и про Тестирование взаимодействия (Interoperability Testing).

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

Основные нефункциональные виды тестирования

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

Нефункциональные требования:

    • Производительность.
    • Удобство пользования.
    • Портируемость (установки).
    • Надежность (отказ/восстановление).

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

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

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

Тестирование производительности (Performance and Load Testing).
Данный вид подразумевает собой автоматизированное тестирование, имитирующее работу определенного количества пользователей на ресурсе.
У него также есть свои виды:

    • Нагрузочное тестирование (Определение масштабируемости приложения под нагрузкой. При этом измерениям подвержено время выполнения операций, интенсивность выполнения, определение количества одновременно работающих пользователей, границы приемлемой производительности и производительность на различных типах нагрузок (высокой, предельной и стрессовой)
    • Стрессовое тестирование (Проверка, насколько приложение и сама система, в целом, сохраняют работоспособность в условиях стресса.)
    • Объемное тестирование. (Проверка производительности, при увеличении объемов данных в базе данных.)
    • Тестирование стабильности/Надежности (Проверка работоспособности приложения при длительном (многочасовом) тестировании при среднем уровнем нагрузки. На первое место выходит важность проверки — отсутствие утечек памяти, перезапусков серверов под нагрузкой и прочие аспекты, влияющие непосредственно на стабильную работу ПО)

Вторым видом нефункционального тестирования является Тестирование Установки (Installation testing).

Этот вид направлен на проверку успешной инсталляции и настройки, а также обновления или удаления программного обеспечения.

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

Тестирование Удобства Пользования (Usability Testing), будет следующим видом, который мы рассмотрим.

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

Тестирование на Отказ и Восстановление (Failover and Recovery Testing) проверяет продукт на возможность сопротивления и успешного восстановления в последствиях возможных сбоев возникших из-за ошибок ПО, оборудования или прерывания связи.

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

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

Связанные с изменениями виды тестирования

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

В таких случаях принято использовать:

Дымовое тестирование (Smoke Testing) — короткий цикл проверок, выполняемых для подтверждения того, что после сборки, устанавливаемое приложение стартует и выполняет основные функции.

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

Регрессионное тестирование (Regression Testing) — направлено на проверку изменений, для подтверждения факта, что существовавшая в приложении функциональность, которая должна была быть неизменной, работает так же, как и до вмешательств.

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

В заключении

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

Виды:

Классификация: Преимущества:

Недостатки:

Функциональные Функциональное тестирование Возможность имитации фактической работы системы. Высокая вероятность избыточных тестов.
Есть шанс упустить логические ошибки в ПО.
Тестирование безопасности Уверенность, что шансы повреждения системы внешними воздействиями — минимальна. Независимо от количества тестов невозможно быть уверенным, что система полностью защищена от любых атак.
Тестирование взаимодействия Включает в себя совместимость и интеграцию, облегчает работу по внедрению ПО. Высокие шансы не охватить все виды интеграции и совместимости. Необходимость постоянного учета обновления/выхода из актуализации устройств.
Нефункциональные Тестирование производительности Автоматизированное тестирование, что облегчает ручное тестирование и экономит время.
Защищенность ПО в виду готовности к ситуациям, ведущим к нагрузкам на систему.
Автоматизированное тестирование, требует серьезных навыков программирования, а также знания сетевых протоколов, различных серверов приложений и БД.
Считается одним из самых сложных тестов, требует много времени на обучение.
Тестирование установки Помогает избежать проблем с установкой ПО в промышленную среду (Невозможность установить ПО, Потеря данных после установки новой версии, Невозможность отката версии). Дополнительное время на разработку, либо привлечение дополнительных ресурсов для выполнения этих работ.
Тестирование удобства пользования Проверяется удобство использования внутренних объектов, классов, методов и переменных, а также рассматривается удобство изменения, расширения системы и интеграции ее с другими модулями или системами. Не всегда есть возможность провести тестирование при “сером/черном ящике”. Высокие шансы потери сценариев.
Тестирование на отказ и восстановление Предусмотрение ситуаций, для сохранения целостности данных пользователей ПО. Невозможность предусмотреть все ситуации.

 

Конфигурационное тестирование Использование матрицы покрытия.
Определение оптимальной конфигурации оборудования, проверка объекта тестирования на совместимость.
Низкие расходы при наличии автоматизации.
Чем больше требований к работе приложения при различных конфигурациях рабочих станций, тем больше тестов нам необходимо будет провести. Необходимость ввода автотестов.
Связанные с изменениями Дымовое тестирование Сравнительно низкие показатели по затраченному на тестирование времени.
Приоритет на гарантию работы основного функционала.
Поверхностное тестирование. Намеренный пропуск части функционала при охвате.
Регрессионное тестирование Гарантия, что изменения в новой версии приложения не повредили уже существующую функциональность.
Ускорение ре-тестов.
Гарантия обнаружения дефектов на ранних стадиях разработки.
Возросшее количество времени и активности на проекте.
Потеря концентрации при постоянном ре-тестировании.

 

Заказать тестирование
Правила обработки персональных данных

Пользователь, заполняя форму обратной связи на интернет-сайте http://qualitica.ru, принимает настоящие Правила обработки персональных данные (далее — Правила). Действуя свободно, своей волей и в своем интересе, а также подтверждая свою дееспособность, Пользователь дает свое согласие ИП Бормотов Иван Сергеевич на обработку своих персональных данных со следующими условиями:

1. Данное согласие дается на обработку персональных данных, как без использования средств автоматизации, так и с их использованием;

2. Согласие дается на обработку следующих персональных данных, не являющихся специальными или биометрическими: фамилия и имя, телефон, e-mail, пользовательские данные (сведения о местоположении; тип и версия ОС; тип и версия Браузера; тип устройства и разрешение его экрана; источник, откуда пользователь пришел на сайт; язык ОС и Браузера; какие страницы открывает и на какие кнопки нажимает пользователь; ip-адрес);

3. Персональные данные не являются общедоступными.

Письмо отправлено

Наш менеджер свяжется с вами в ближайшее время