Регрессионное тестирование

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

В этой статье мы подробно расскажем все, что нужно знать о регрессионном тестировании.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Содержание:

Определение регрессионного тестирования

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

По сути, мы выполняем полный или частичный набор тест-кейсов, чтобы удостовериться в том, что изменения в коде не нарушили работу ПО.

Необходимость регрессионного тестирования

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

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

Особенности регрессионного тестирования

  • Регрессионные тесты обычно автоматизируются, так как их количество велико. А выполнение всех этих тестов вручную заняло бы слишком много времени.
  • Эффективность регрессионного тестирования зависит от выбранных тест-кейсов. Выбор тест-кейсов, в свою очередь, определяется тем, на какие участки программы повлияло обновление и насколько важен этот компонент.
  • При регрессионном тестировании нам приходится, с одной стороны, сокращать количество тест-кейсов (для уменьшения времени на тестирование) и в то же время сохранять достаточно полный охват.

Достоинства регрессионного тестирования

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

Методы регрессионного тестирования

  1. Полный регресс как следует из названия, все модули тестируются заново, что гарантирует отсутствие ошибок в программном обеспечении.
  2. Выборочное регрессионное тестирование – при этом методе из тест-сьюта выполняются только отдельные тест-кейсы. Это помогает избежать тестирования всего тест-сьюта целиком. Таким образом, экономится время и вместе с тем обеспечивается отсутствие багов в программе.
  3. Приоритезация тест-кейсов в данном подходе тест-кейсы сначала распределяются по приоритетам: высокий, средний и низкий. Выполняются они в такой же последовательности. Приоритеты назначаются на основе частоты использования функциональности, ее влияния на систему и важности.
  4. Гибридный метод это сочетание выборочного регрессионного тестирования и приоритизации тест-кейсов. Из всего тест-сьюта выбираются отдельные тест-кейсы, которые затем выполняются в порядке приоритета.

Инструменты регрессионного тестирования

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

  1. Selenium – благодаря таким особенностям, как открытый исходный код, поддержка нескольких языков программирования и совместимость с различными браузерами, Selenium является одним из самых популярных инструментов.
  2. Katalon Studio – это универсальный инструмент для автоматизации тестирования веб-сайтов, веб-сервисов и мобильных приложений. Поддерживает работу со множеством устройств, браузеров в различных окружениях.
  3. TestComplete – инструмент, оптимально подходящий для параллельного запуска регрессионных тестов. Тесты, разработанные в нем, сохраняют стабильность даже при изменении графического интерфейса (GUI).
  4. IBM rational functional tester – поддерживает различные приложения, включая веб-приложения на таких платформах, как Java, .NET, SAP, Ajax и Adobe. Благодаря функции записи скриншотов он облегчает визуализацию и редактирование тестов, что делает его одним из самых популярных инструментов на рынке.

Выбор тест-кейсов для регрессионного тестирования

Перед проведением регрессионного тестирования важно тщательно отобрать тест-кейсы. Это избавит тестировщика от спешки в последний момент и сэкономит время. Ниже приведены основные критерии, по которым происходит выбор тест-кейсов. 

  1. Тест-кейсы для недавних изменений и дополнений
    В первую очередь следует выбрать тест-кейсы, которые связаны с последними изменениями кода. В них наиболее высока вероятность обнаружения дефектов.
  2. Тест-кейсы должны отражать требования к программному обеспечению
    Тест-кейсы должны быть отобраны таким образом, чтобы они отвечали спецификации требований программного обеспечения (Software Requirement Specifications, SRS). Функциональность ПО должна соответствовать ожиданиям пользователей и клиентов.
  3. Тест-кейсы для часто используемых функций
    Большинство отобранных тест-кейсов должны охватывать функции, чаще всего используемые пользователем. Таким образом гарантируется отсутствие серьезных багов, которые могут повлиять на основную функциональность.
  4. Тест-кейсы с расстановкой приоритетов
    Для оптимизации времени и ресурсов тест-кейсы необходимо расставить по приоритету, от высокого к низкому. Это уменьшит объем тест-сьюта и облегчит процесс тестирования.
  5. Тест-кейсы должны учитывать степень важности
    Тест-кейсы необходимо сортировать по уровню критичности. Это означает, что если возможный баг не окажет значительного влияния на работу системы, то тест-кейсы по его обнаружению могут быть исключены из набора или выполнены в последнюю очередь.

Регрессионное тестирование в Agile

Прежде чем рассматривать регрессионное тестирование в контексте гибкой методологии Agile, для начала необходимо разобраться, в чем она заключается.

Методология Agile – это итеративный и инкрементальный подход к разработке программного обеспечения (то есть разработка выполняется небольшими шагами, итерациями, по мере внесения в программу улучшений). В Agile на каждом этапе разработчики постепенно добавляют новый функционал, создавая промежуточные сборки. На протяжении разработки сборки демонстрируются конечным пользователям и другим заинтересованным сторонам, чтобы получить от них обратную связь. 

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

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

Отличия между регрессионным и повторным тестированиями

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

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

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

Смотрите также: “Регрессионное тестирование: Практическое руководство с примерами”.

Перевод статьи «Regression Testing».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *