При создании качественного программного обеспечения необходимо не только написать строки кода, но и удостовериться, что в них нет ошибок. И если примитивные неисправности обнаруживаются в большинстве языков ещё на стадии компиляции, то более сложные необходимо искать уже при запуске приложений. Такой процесс называется тестированием. Он, в свою очередь, делится на целый ряд ветвлений, которые разнятся своим содержанием и особенностями ошибок. В рамках статьи будет рассмотрено, что такое регрессионное тестирование. Что оно собой представляет? Какие тесты здесь есть? Существует ли возможность автоматизации? Итак, что такое регрессионное тестирование? Поговорим подробнее.
Типы, виды, направления
Регрессионное тестирование (regression testing) – это механизм проверки, который направлен на обнаружение различных проблем в уже проверенных участках программ. Делается это не для окончательного убеждения в отсутствии неработающих участков кода, а чтобы найти и исправить регрессионные ошибки. Под ними понимают баги, которые появляются не во время написания программы, а при добавлении новых участков кода или исправлении допущенных ранее промахов в синтаксисе кода.
Подытожив всё сказанное, можно сделать вывод, что цель регрессионного тестирования – убедиться в том, что исправлении существующих проблем не привело к новым в уже проверенных участках кода программы. Различают два основных типа тестов:
- Функциональные.
- Нефункциональные.
Они могут быть выражены в виде:
- Скриптов.
- Наборов.
- Комплектов для запуска.
Что же, собственно, включает в себя регрессионное тестирование программного обеспечения? Проводится работа в 3 основных направлениях. А именно регрессия:
- Багов.
- Старых проблем.
- Побочных эффектов.
Функциональные тесты
Они основываются на функциях, которые выполняет система. Могут проводиться на компонентном, интеграционном, системном и приемочном уровнях. Два основных аспекта, по которым проводится тестирование:
- Требования.
- Бизнес-процессы.
При работе над требованиями необходимо составить список того, что должно быть протестировано. При этом желательно выделить приоритетные детали, чтобы определиться с направлением работы. Это необходимо, чтобы не оставить без внимания весь наиболее важный функционал. При тестировании «бизнес-процессов» упор делается именно на них, т. е. прогоняются сценарии каждодневной работы.
К преимуществам функциональной проверки следует отнести то, что программное обеспечение имитирует реальное использование системы. Но имеются и свои недостатки: так, программа может быть поддана избыточному тестированию. Также не исключено упущение логических ошибок в самом программном обеспечении.
Нефункциональные тесты
Данные виды тестов направлены на проверку всех свойств, которые не относят к функциям системы. Из них можно привести такие параметры:
- Надежность. Проводится проверка реакции на различные не предусмотренные ситуации.
- Производительность. Как работает система, которая поддаётся разным нагрузкам.
- Удобство. Насколько удобно работать с приложением, по мнению пользователя.
- Масштаб. Требования к изменению высоты и ширины приложения при работе с разными мониторами.
- Безопасность. Насколько защищены пользовательские данные, а также информация при передаче разными каналами.
- Портативность. Проверяется, работает ли приложение на разных платформах, и если да – на скольких.
Какие свойства системы могут быть исследованы в данных случаях? Всего их 4.
- Тестирование установки. Проверяется, насколько успешно удаётся поставить программу на компьютер, настроить её, а при надобности и удалить. Качественная настройка позволяет уменьшить риск потери данных пользователя или уменьшения (ухудшения) работоспособности приложения.
- Тестирования комфортности использования. Проверка разработанного программного обеспечения на удобство использования и понятность конечному пользователю.
- Конфигурационное тестирование. Подразумевает проверку работоспособности программы при установке разных системных настроек, а также экспериментирование с внутренними настройками программы.
- Тестирование на отказ и восстановление. Проверка работоспособности после возникновения ошибок. Оценивается реакция защитных свойств, а также то, какие данные и в каком объеме сохраняются после внезапного прекращения работы приложения.
Подытожив, следует сказать, что, хотя от нефункциональных тестов и не зависит проверка работоспособности приложения в плане выполнения поставленных задач, они позволяют говорить о таких свойствах, как надежность, производительность и безопасность программного обеспечения. Данные параметры характеризируют качество программы и тем или иным образом оставляют определённые впечатления у пользователя. Поэтому важность данного тестирования не меньше, чем у функционального.
Тест-кейсы
Тест-кейсами называют заготовки для проверки программного обеспечения. Они называются инструментами для автоматизированного тестирования. Это специальное программное обеспечение, с помощью которого специалист создаёт, отлаживает, выполняет и анализирует результаты прогона приложения через такие разработки:
- Тест-скрипты. Сюда относят комплекты инструкций, разработанные для проведения автоматических проверок отдельных частей программного обеспечения.
- Тестовые наборы. Это комбинации скриптов, которые проверяют определенные части программного обеспечения, которые объединены общим функционалом или целями.
- Тесты для запуска. Это комбинации различных скриптов или наборов для одновременного запуска при проверке программы.
Автоматизация регрессионных тестов
Автоматизация труда - одна из основ развития человечества в 21-м веке. Коснулась она и данной темы. Так, под автоматизированным тестированием программного обеспечения понимают процесс верификации ПО, во время которого основные функции и задачи, такие как запуск, инициализация и выполнение, а также анализ и выдача результатов, проводятся автоматически, с применением соответствующего инструментария. Это действие выполняется техническим специалистом, отвечающим за создание, отладку и поддержку в рабочем состоянии тест-скриптов, тестовых наборов и инструментария. Работа может проводиться с различным программным обеспечением, в том числе и регрессионное тестирование автоматизированных систем.
Регрессия багов
Под этим тестированием понимают поиск проблем, которые официально «были устранены», но есть основания полагать, что они до сих пор существуют. Особенность данного вида проверок заключается в том, что необходимо проверять все действия с определённым объектом в различных комбинациях. В первую очередь тестируют соответствие реальности сообщения об устранении проблемы по тому механизму, благодаря которому она была выявлена. Регрессионное тестирование верстки в данном случае помогает удостовериться в отсутствии нежелательных эффектов.
Регрессия старых ошибок
Под этим понимают выявление ситуаций, когда недавние изменения, внесенные в код программы, аннулировали исправления старых ошибок. Таким образом, они снова начинают быть активными. Поэтому при внесении изменения в код программного обеспечения необходимо начинать процессы тестирования с начала (при условии, конечно, что возникали проблемы с работоспособностью).
Регрессия побочного эффекта
Под нею понимают ситуации, когда недавнее изменение кода в одной части приложения сделало нерабочим некоторые или все другие части разрабатываемой программы. В качестве указания о наличии таких проблем служит отсутствие работоспособности в одной или нескольких частях программы. Задача тестера определить все проблемные места.
Подытожив всё написанное, что можно сказать про регрессионное тестирование? Что это теперь та тема, которая больше не должна вызывать вопросов. Осталось только освоить всё на практике.