Rusau LearnВойти

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

Регрессионное и смоук-тестирование: что это и в чём разница

Регрессионное тестирование – это повторная проверка уже работавшей функциональности после изменений в коде: не сломало ли её новое или исправленное. Смоук-тестирование – короткая проверка новой сборки: запускается ли приложение, работают ли главные функции и можно ли тестировать её дальше. Повторное тестирование, или ретест, проверяет только то, что конкретный дефект действительно исправлен.

Мой видеоурок: Урок 5. Что такое регрессионное тестирование и smoke-тестирование?Открыть на YouTube
Смоук
решает, принимать ли новую сборку в тестирование
Регресс
проверяет, что изменения не сломали работавшее
Ретест
подтверждает, что исправлен конкретный дефект

Что такое регрессионное тестирование

Регрессионное тестирование (regression testing) – это проверка ранее протестированной функциональности после изменений: не повлияли ли они на то, что уже работало. Изменением может быть новая функция, исправление дефекта, обновление библиотеки или окружения.

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

Регрессионные проверки повторяются из сборки в сборку, поэтому их охотно автоматизируют. Автотесты берут на себя однообразные прогоны, и у тестировщика остаётся время на новое.

Что такое смоук-тестирование

Смоук-тестирование (smoke testing, дымовое тестирование) проводят первым, как только пришёл новый билд, то есть промежуточная версия продукта. Его задача – понять, готова ли сборка к подробному тестированию. В англоязычных источниках встречаются близкие названия: build verification test и intake test.

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

Исходов у смоука два, да или нет. При ответе "нет" сборку дальше не тестируют: дефект уходит разработчику, и тестирование останавливается до новой сборки. Поэтому смоук-тесты делают быстрыми и лёгкими, чтобы запускать их часто.

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

Чем регресс отличается от смоука

Оба вида запускают на новой сборке, поэтому их часто путают.

  • Что проверяют

    Смоук отвечает, можно ли вообще тестировать эту сборку. Регресс отвечает, не сломали ли изменения то, что работало раньше.

  • Объём

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

  • Когда запускают

    Смоук идёт первым, как только пришла сборка. Регресс начинают после успешного смоука, а последний прогон делают перед релизом.

  • Если не прошёл

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

Повторное тестирование, или ретест

Ретест (re-testing, confirmation testing) – это проверка того, что дефект действительно исправлен. Разработчик сообщает, что починил баг, тестировщик повторяет шаги из баг-репорта и убеждается, что функциональность работает так, как задумано в требованиях. Иногда ретест называют defect validation.

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

В программе ISTQB 2018 года ретест и регресс объединены под общим названием: тестирование, связанное с изменениями (change-related testing). В программе 2023 года оба вида описаны в одном разделе, но без общего названия.

Как отобрать тесты в регрессию

Большое приложение целиком на каждой сборке не перепроверить, поэтому набор для регрессии собирают по приоритетам. Глубину проверки тоже выбирают. Тесты по степени важности делят на смоук, тест критического пути (critical path test), где проверяют типичные действия обычного пользователя, и расширенный тест (extended test) с нестандартным использованием вроде спецсимволов в поле логина или работы в нескольких вкладках сразу. Регресс можно провести на любом из этих уровней.

Как выбрать тесты в регрессию, часто спрашивают на собеседовании. Ответить можно по такому порядку.

  • Безопасность и важное для бизнеса

    Первыми в регрессию попадают тесты безопасности и критичных функций: входа, оплаты, оформления заказа.

  • Часто меняющиеся области

    То, что переделывают от спринта к спринту, ломается чаще остального.

  • Функции, где ошибки вероятнее

    Здесь работает принцип скопления дефектов: где дефекты уже находили, там их скорее всего найдут снова.

  • Всё, что связано с изменением

    Проверяют соседние функции, которые зависят от изменённого кода, как вход в систему зависит от сброса пароля.

  • Пример отбора

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

Видеоурок, шпаргалки и задания

Я разбираю эту тему в пятом уроке курса "Тестировщик с нуля" на YouTube вместе с тестом критического пути, расширенным тестом и проверкой новой функциональности. В бесплатном базовом курсе по тестированию она идёт уроком "Тестирование, связанное с изменениями", и после теории в нём есть задания.

Шпаргалка по видам тестирования находит вид по русскому или английскому названию, а шпаргалка о прогоне билда показывает, где в работе со сборкой стоят смоук, ретест и регресс. В тренажёре классификации тесты нужно разложить по видам, уровням и методам.

Курсы по теме

Вопросы и ответы

Чем регрессионное тестирование отличается от смоук-тестирования?

Смоук быстро проверяет главные функции новой сборки и решает, можно ли тестировать её дальше. Регресс подробно проверяет, не сломали ли изменения то, что работало раньше. Смоук идёт первым и проходит быстро, регресс начинается после него и занимает больше времени.

Что такое смоук-тест простыми словами?

Короткая проверка того, что новая сборка вообще работает: приложение запускается и выполняет главные функции. Для интернет-магазина это один сценарий от входа в систему до получения заказа. Если он не прошёл, сборку возвращают разработчику, не тратя время на остальное.

Чем ретест отличается от регрессии?

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

Смоук и санити – это одно и то же?

В глоссарии ISTQB sanity test указан синонимом smoke test. В командах санити часто называют узкую проверку одной изменённой или исправленной функции, поэтому значение слова лучше уточнить на месте.

Регрессионное тестирование обязательно автоматизировать?

Нет, регресс можно проходить и вручную. Но его повторяют на каждой сборке, поэтому регрессию автоматизируют в первую очередь: автотесты снимают с тестировщика однообразную работу.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее