Программное обеспечение на протяжении своего жизненного цикла подвергается многочисленным изменениям. Когда в уже протестированное ПО вносят небольшие исправления, не затрагивающие всю программу, то нет смысла проводить полное тестирование всех ее модулей. Вместо этого после исправлений в работающем ПО выполняют только ограниченное количество тест-кейсов. Такое тестирование – это регрессионное тестирование.
В этой статье мы подробно расскажем все, что нужно знать о регрессионном тестировании.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Содержание:
- Определение регрессионного тестирования
- Необходимость регрессионного тестирования
- Особенности регрессионного тестирования
- Достоинства регрессионного тестирования
- Методы регрессионного тестирования
- Инструменты регрессионного тестирования
- Выбор тест-кейсов для регрессионного тестирования
- Регрессионное тестирование в Agile
- Отличия между регрессионным и повторным тестированием
Определение регрессионного тестирования
Регрессионное тестирование — это вид тестирования, которое подтверждает, что исправление бага или изменение кода не повлияло негативно на действующий функционал программы.
По сути, мы выполняем полный или частичный набор тест-кейсов, чтобы удостовериться в том, что изменения в коде не нарушили работу ПО.
Необходимость регрессионного тестирования
Несмотря на то, что регрессионное тестирование может быть достаточно долгим и утомительным, оно играет важную роль в процессе тестирования программного обеспечения по следующим причинам.
- Необходимость регрессионного тестирования возникает, когда в код системы вносятся изменения. Эти изменения могут привести к нежелательным последствиям в работе программы. Поэтому крайне важно протестировать затронутый изменениями модуль.
- Регрессионное тестирование необходимо, когда добавляется или удаляется какая-либо функциональность. Потенциально изменения могут повлиять на работу других модулей программы, а не только на тот, который затронуло изменение. Обеспечение бесперебойной работы всего ПО после внесения изменений – именно на это направлено регрессионное тестирование.
Особенности регрессионного тестирования
- Регрессионные тесты обычно автоматизируются, так как их количество велико. А выполнение всех этих тестов вручную заняло бы слишком много времени.
- Эффективность регрессионного тестирования зависит от выбранных тест-кейсов. Выбор тест-кейсов, в свою очередь, определяется тем, на какие участки программы повлияло обновление и насколько важен этот компонент.
- При регрессионном тестировании нам приходится, с одной стороны, сокращать количество тест-кейсов (для уменьшения времени на тестирование) и в то же время сохранять достаточно полный охват.
Достоинства регрессионного тестирования
- Гарантируется, что исправление не повлияет на функциональность.
- Возможность автоматизации, а следовательно, экономия времени.
- Регресс особенно полезен при выпуске обновлений для оптимизации производительности, поскольку он не затрагивает саму логику работы приложения с точки зрения бизнеса. Таким образом, в целях тестирования достаточно проверить действующий функционал.
- Регресс удобен при настройке процесса непрерывной интеграции, когда при каждом изменении кода разработчиком сразу формируется новый билд. Затем автоматически запускаются регрессионные тесты, чтобы убедиться, что изменения в коде не повлияли на уже работающие функции.
Методы регрессионного тестирования
- Полный регресс – как следует из названия, все модули тестируются заново, что гарантирует отсутствие ошибок в программном обеспечении.
- Выборочное регрессионное тестирование – при этом методе из тест-сьюта выполняются только отдельные тест-кейсы. Это помогает избежать тестирования всего тест-сьюта целиком. Таким образом, экономится время и вместе с тем обеспечивается отсутствие багов в программе.
- Приоритезация тест-кейсов – в данном подходе тест-кейсы сначала распределяются по приоритетам: высокий, средний и низкий. Выполняются они в такой же последовательности. Приоритеты назначаются на основе частоты использования функциональности, ее влияния на систему и важности.
- Гибридный метод – это сочетание выборочного регрессионного тестирования и приоритизации тест-кейсов. Из всего тест-сьюта выбираются отдельные тест-кейсы, которые затем выполняются в порядке приоритета.
Инструменты регрессионного тестирования
Очевидно, что регрессионные тест-кейсы идеально подходят для автоматизированного тестирования. Ниже приводится список наиболее популярных инструментов автоматизации, которые мы можем использовать в своей работе.
- Selenium – благодаря таким особенностям, как открытый исходный код, поддержка нескольких языков программирования и совместимость с различными браузерами, Selenium является одним из самых популярных инструментов.
- Katalon Studio – это универсальный инструмент для автоматизации тестирования веб-сайтов, веб-сервисов и мобильных приложений. Поддерживает работу со множеством устройств, браузеров в различных окружениях.
- TestComplete – инструмент, оптимально подходящий для параллельного запуска регрессионных тестов. Тесты, разработанные в нем, сохраняют стабильность даже при изменении графического интерфейса (GUI).
- IBM rational functional tester – поддерживает различные приложения, включая веб-приложения на таких платформах, как Java, .NET, SAP, Ajax и Adobe. Благодаря функции записи скриншотов он облегчает визуализацию и редактирование тестов, что делает его одним из самых популярных инструментов на рынке.
Выбор тест-кейсов для регрессионного тестирования
Перед проведением регрессионного тестирования важно тщательно отобрать тест-кейсы. Это избавит тестировщика от спешки в последний момент и сэкономит время. Ниже приведены основные критерии, по которым происходит выбор тест-кейсов.
- Тест-кейсы для недавних изменений и дополнений
В первую очередь следует выбрать тест-кейсы, которые связаны с последними изменениями кода. В них наиболее высока вероятность обнаружения дефектов. - Тест-кейсы должны отражать требования к программному обеспечению
Тест-кейсы должны быть отобраны таким образом, чтобы они отвечали спецификации требований программного обеспечения (Software Requirement Specifications, SRS). Функциональность ПО должна соответствовать ожиданиям пользователей и клиентов. - Тест-кейсы для часто используемых функций
Большинство отобранных тест-кейсов должны охватывать функции, чаще всего используемые пользователем. Таким образом гарантируется отсутствие серьезных багов, которые могут повлиять на основную функциональность. - Тест-кейсы с расстановкой приоритетов
Для оптимизации времени и ресурсов тест-кейсы необходимо расставить по приоритету, от высокого к низкому. Это уменьшит объем тест-сьюта и облегчит процесс тестирования. - Тест-кейсы должны учитывать степень важности
Тест-кейсы необходимо сортировать по уровню критичности. Это означает, что если возможный баг не окажет значительного влияния на работу системы, то тест-кейсы по его обнаружению могут быть исключены из набора или выполнены в последнюю очередь.
Регрессионное тестирование в Agile
Прежде чем рассматривать регрессионное тестирование в контексте гибкой методологии Agile, для начала необходимо разобраться, в чем она заключается.
Методология Agile – это итеративный и инкрементальный подход к разработке программного обеспечения (то есть разработка выполняется небольшими шагами, итерациями, по мере внесения в программу улучшений). В Agile на каждом этапе разработчики постепенно добавляют новый функционал, создавая промежуточные сборки. На протяжении разработки сборки демонстрируются конечным пользователям и другим заинтересованным сторонам, чтобы получить от них обратную связь.
На основе анализа обратной связи вносятся изменения в сборки на следующих итерациях, в соответствии с их приоритетом.
Теперь перейдем к регрессионному тестированию в Agile. Благодаря итеративному подходу тестировщики могут концентрироваться на проверке нового функционала. На каждом этапе регрессионное тестирование обеспечивает стабильность уже работающих модулей.
Отличия между регрессионным и повторным тестированиями
Один из самых распространенных вопросов на собеседованиях по тестированию – разница между регрессом и ретестом. Давайте выясним, в чем она заключается.
Регрессионное тестирование | Повторное тестирование |
---|---|
Осуществляется для проверки, действительно ли баг был устранен. | Осуществляется для проверки, действительно ли баг был устранен. |
Включает в себя выполнение либо всех тест-кейсов, либо ограниченного набора тест-кейсов, который охватывают всю функциональность. | Включает в себя выполнение только тех тестов, которые провалились, и после этого код был исправлен разработчиками. |
Регресс можно считать менее приоритетным, чем ретест, так как наша задача — проверить, что ранее успешно выполненные тест-кейсы по-прежнему проходят. | Ретест считается более приоритетным, чем регресс, потому что важно сначала убедиться, что исправленные ошибки больше не проявляются и ранее не пройденные тесты теперь успешно выполняются. |
В заключение хочется отметить, что регрессионное тестирование – это поиск новых дефектов, возникающих в результате изменения кода. В то время как повторное тестирование – это подтверждение факта исправления дефектов.
Смотрите также: “Регрессионное тестирование: Практическое руководство с примерами”.
Перевод статьи «Regression Testing».