Как регрессионное тестирование помогает находить ошибки в продукте
Как регрессионное тестирование помогает находить ошибки в продукте
Регрессионное тестирование — способ найти ошибку, которая появилась из-за изменений в коде, базе данных или добавления новой функции в продукт. Разбираем его особенности и этапы.
Рассмотрим пример веб-приложения для социальной сети, в котором пользователи могут публиковать и комментировать посты, ставить лайки. Допустим, команда разработчиков внесла изменения в систему комментариев, чтобы добавить новую функцию. Теперь одни пользователи могут отвечать на комментарии других.
Разработчики протестировали функцию и убедились, что она работает корректно. Но изменения могли повлиять на другие функции, которые уже работают. Например, лайки под постами перестали правильно учитываться: пользователь поставил лайк на пост, добавил комментарий, ему кто-то ответил, а лайк пропал. Такие ошибки называют регрессионными. Они возникают, когда:
● Добавляется новый функционал. Изменения в одной части системы влияют на другую. При добавлении новой функции разработчики могли внести изменения в код, структуру базы данных или логику работы сервера, что привело к непредвиденным последствиям для уже существующих функций. В нашем случае — для лайков.
● Вносятся изменения в существующий функционал. Например, в приложении для управления продажами менеджеры могут создавать новые заказы, просматривать активные и отслеживать статус доставки. Разработчики изменили отображение статуса доставки заказов: обновлять страницу теперь не нужно — она делает это автоматически. Менеджер видит статус заказа в реальном времени. Но появилась проблема: если применить к списку заказов фильтры, часть из них не отображается.
Регрессионные ошибки критичны для пользователя: он привык к функциональности, а заменить её нечем
Регрессионные ошибки могут возникать из-за недосмотра менеджера проекта, владельца продукта, архитектора, системного аналитика, разработчиков на этапе проектирования или тестировщика в тестовых кейсах. Такая ошибка в работающем приложении — это не только дополнительные траты на срочное исправление, но и возможные штрафы согласно пользовательскому соглашению. Кроме того, пользователи теряют доверие к продукту — у них уже нет уверенности, что после очередного обновления что-нибудь не сломается.
Дешевле и безопаснее исправить ошибку до того, как обновленный продукт попал к пользователям. Для этого проводят регрессионное тестирование — проверку системы или продукта, чтобы убедиться: изменения не навредили уже работающим функциям. Чтобы заниматься регрессионным тестированием, важно освоить базу — научиться писать тест-кейсы, составлять баг-репорты и разбираться, как устроено веб-приложение. Этому учат на курсе «Инженер по тестированию: от новичка до автоматизатора» — в теории и на примерах реальных проектов.
Есть три основных метода регрессионного тестирования:
1. Полная регрессия. Тестировщик прогоняет тесты после каждого изменения в программе. Это может занять не день и даже не неделю, но так получится найти максимальное количество ошибок. Метод особенно полезен, когда программу меняют для новой платформы или обновляют операционную систему. Например, выпускают версию приложения для новой модели смартфона.
2. Выбор регрессионного теста. Метод позволяет ограничить регрессионное тестирование только теми частями программы, которые могут затронуть изменения. Это позволяет сосредоточиться на наиболее важных областях и сократить время тестирования. Например, в приложении банка изменили логику авторизации. Можно сосредоточиться только на тестировании этой функции, а транзакции не тестировать.
3. Приоритизация тест-кейсов. При регрессионном тестировании важно определить порядок запуска тестов. Это помогает сосредоточиться на важных функциях приложения и ускорить процесс проверки. Приоритизация тест-кейсов зависит от частоты возникновения ошибок, задач бизнеса и ожиданий пользователей. Например, в приложении внедряют новую функцию, которую многие пользователи долго ждали, — оплату с помощью электронного кошелька. Важно в первую очередь протестировать именно её.
✅Помогает уменьшить количество ошибок после обновлений в программе: получится сохранить качество продукта и доверие пользователей.
✅Помогает оценить влияние нового кода. Тестировщики применяют регрессионное тестирование при каждом обновлении программы: так получается понять, как код влияет на её функции. Сначала проверяют приложение перед добавлением нового кода. Затем тестируют обновлённое приложение, чтобы удостовериться: новый фрагмент кода работает, как нужно.
✅Ускоряет вывод продукта на рынок за счёт автоматизации регрессионных тестов.
✅Удешевляет подготовку продукта к запуску: не придётся тратить ресурсы разработчиков на исправление ошибок после релиза.
Разберём план выборочного регрессионного тестирования: часть тест-кейсов тестировщик будет переиспользовать.
Разберём регрессионное тестирование на примере веб-приложения, в котором можно писать короткие посты и обсуждать их с другими пользователями. Чтобы улучшить пользовательский опыт, решили добавить функцию персональных рекомендаций постов на основе предпочтений и истории действий пользователей. После создания новой функции нужно провести регрессионное тестирование, чтобы проверить, не повлияет ли эта рекомендация на работу остальных функций приложения.
Что в приложении изменится, тестировщик уже знает. Как он будет действовать дальше:
1. Подготовит тестовое окружение — среду, в которой выполняется тестирование. Оно включает оборудование, программное обеспечение, тестовые данные. Например, профили пользователей с различными предпочтениями и историей действий. Специальные инструменты для регрессионного тестирования уже содержат готовые тестовые окружения и совместимы с разными браузерами и операционными системами. Примеры популярных инструментов — Selenium, TestComplete, Telerik Test Studio.
2. Определит тестовые кейсы — список сценариев, которые проверят новую функцию рекомендации и её взаимодействие с уже существующими функциями приложения. Документ тест-кейса описывает входные данные, действия и ожидаемые результаты, которые используют для тестирования конкретной функции приложения. Разберём несколько примеров.
3. Выполнит тесты. Тестировщик запускает тесты согласно тестовым сценариям. Часть из них он может автоматизировать, чтобы сократить время на выполнение рутинных задач и повысить точность тестирования.
4. Проанализирует результаты и зафиксирует ошибки. Опишет проблемы, шаги для воспроизведения и ожидаемый результат. Разберём несколько примеров ошибок.
5. Создаст отчёт. Тестировщик подготовит отчёт о результатах тестирования, включая информацию о проведённых тестах, найденных ошибках и рекомендациях по исправлению. Отчёт передаст разработчикам, чтобы они могли исправить ошибки.
Совет эксперта
Читать также: