Подходы к сокращению регрессионного тестирования |
28.11.2024 00:00 |
Меня зовут Ксения Сергеева, я QA-инженер в компании SM Lab, IT-компания Спортмастера. Сейчас работаю с мобильным приложением для продавцов, а за последние несколько лет успела потрудиться на благо финтеха и сервисов топливной компании. И, конечно, на каждом из проектов я сталкивалась с проведением регрессионного тестирования. Что самое креативное в работе QA-инженера? Тестировать новую функциональность. Что самое скучное в работе QA-инженера? Гонять регресс. Здесь со мной могут не согласиться нелюбители писать документацию, но и в таком случае прохождение регресса занимает почетное второе место в списке самых занудных активностей QA. Регрессионное тестирование (от латинского regressio — движение назад) — это совокупность проверок ранее протестированной программы с целью убедиться в том, что внесенные в программу изменения и доработки не привели к появлению дефектов и несоответствий во всех остальных частях программы. А еще регрессу как правило сопутствует куча ограничений. Сдвинулись сроки передачи фичи в тест? Время на регресс уменьшилось. Близится конец периода, а мы не все успеваем? Режем регресс. Коллега ушел на больничный и рук не хватает? Ну, вы понимаете. Плюс, регресс — штука дорогая, ведь в это время команда (особенно QA) не занимается созданием новой ценности для заказчика и пользователя, а перелопачивает старую. И объективная реальность такова, что уйти от регрессионного тестирования мы тоже особо не можем — ведь оно как раз обеспечивает нас уверенностью, что новые правки не поломали старый функционал. И что, выкатив супер-крутую свистоперделку в прод, мы его не положим, лишив тем самым наших пользователей не только новой фичи, но и сильно необходимых старых. Конечно, нам хочется и на кактус залезть, и самим не оцарапаться, поэтому сегодня мы будем рассматривать, какие есть подходы к регрессионной модели тестирования, позволяющие нам сэкономить ресурсы и сберечь наше ментальное здоровье. Я сформулировала шесть основных подходов к работе со временем и набором регресса, плюс еще несколько нюансов, которые могут помочь. Рассмотрим их плюсы и минусы. Погнали! Вариант первый, самый, казалось бы, простой. Увеличиваем интервал между релизами и тем самым снижаем удельный вес регресса относительно остальных наших активностей. Условно: если регресс занимает 5 рабочих дней команды, то при релизе 1 раз в месяц мы тратим на регрессионное тестирование 15 дней за квартал, а при релизе раз в 1,5 месяца — 10 дней за квартал. Экономия 33%. Минусы подобного подхода:
Вариант второй: проверяем только критичную и/или популярную функциональность. Например, если у нас приложение платежей за электроэнергию, то нам обязательно нужно проверять, что у нас работает функционал оплаты, а вот тестированием верстки справочника видов электросчетчиков можно пренебречь. Тут уже экономия ресурсов составит от скромных 5-10% до почти 90%. Что стоит иметь в виду при использовании такого подхода?
Вариант третий: ставим во главу выборки импакт-анализ. То есть формируем набор тестов для регресса, исходя из того, какую функциональность дорабатывали в этом релизе. Хорошо работает с микросервисами, хуже — с монолитами (если архитектура монолита позволяет). Экономия — в зависимости от того, из скольких модулей состоит ваш продукт и сколько из них было задето изменениями. Какие риски?
Вариант четвертый: выбираем самые проблемные части нашего продукта (как правило, те, в которых выявляется больше багов, особенно критичных) и регрессим их. Экономим время, не занимаясь проверками стабильного функционала, сосредотачиваемся на тех объектах, которые требуют нашего пристального внимания. Что насчет сложностей?
Вариант пятый: прохождение только позитивных проверок. То, с чего стоит начинать любой регресс — это убедиться, что функционал работает при нормальных условиях. Если он не дает пользователю пройти хеппи пас, то о каком релизе вообще идет речь? Неплохо экономит время, больше применимо на стабильном функционале с малым возможным количеством ошибок или же, например, на сервисах, входные и выходные данные для которых поставляют и потребляют другие сервисы, а не люди. Минусы:
Вариант шестой: автоматизация. Думаю, даже в пояснениях не нуждается. Автоматизируем те кейсы, которые можем, и перестаем тратить время на прохождение мануального регресса по ним. Все счастливы. Но, как всегда, есть нюансы:
Итак, это основные, на мой взгляд, шесть вариантов сокращения регрессионных проверок. Каждый можно применять обособленно от других, но можно (и нужно, как мне кажется) комбинировать. Что нам может помочь еще? Во-первых, хорошая практика — иметь под рукой минимально необходимый набор проверок самых основных вещей в продукте. Если есть сомнения, какой объем проверок нужен — начните с базовых, а дальше сориентируйтесь по оставшемуся времени. Во-вторых, индивидуальное определение тестового набора для каждого релиза. Если мы катим быстрый хотфикс, в котором исправили один экран — скорее всего, можно пренебречь проверками всего остального. В релиз вошло 100500 задач, да еще и смежные системы задействованы? Да уж, простым смоуком мы в таком случае не обойдемся — надо гнать максимально полный регресс. Трогали только один модуль — базовые проверки + регрессим модуль. В-третьих, можно проводить условную «инвентаризацию» по функционалу раз в какой-то период. Как в прошлом варианте, только помимо доработанного модуля еще какой-нибудь (например, самый проблемный или же тот, который дольше всех не проверяли). Кстати, это можно делать как в рамках регрессионного тестирования, так и присовокуплять к тестированию каких-то доработок фичи, или же просто в рамках каких-то регулярных QA-активностей. Так вы сможете существенно снизить количество слепых зон, при этом не сильно увеличивая регресс. В-четвертых, часть регрессионного тестирования можно делегировать представителям бизнеса и/или дизайнерам в рамках проведения авторского надзора. Всегда существуют риски, что в процессе разработки кто-то кого-то не так понял, а на авторском надзоре от бизнеса это достаточно быстро выясняется. Из минусов — большая стоимость переделок по замечаниям. Если говорить про авторский надзор от дизайнера, то он позволяет QA-специалистам тратить меньше времени на pixel perfect и на нефункциональные проверки (например, на UX-тестирование). Главное —не злоупотреблять этим и заранее проговорить зоны ответственности каждого. Резюмирую Пожалуй, это все, что я хотела рассказать сегодня про работу с регрессионным тестированием. В заключение хочу подчеркнуть несколько пунктов:
А что помогало вам сократить регрессионное тестирование с сохранением нужного уровня качества? |