Функциональное, нефункциональное, smoke, sanity, regression, retest

Разбираем основные виды и типы проверок, которые чаще всего встречаются в реальной работе QA: что значат smoke, sanity, regression и retest, чем функциональное тестирование отличается от нефункционального.

Обновлено:

Содержание

Функциональное, нефункциональное, smoke, sanity, regression, retest

На старте карьеры QA легко запутаться в терминах: functional, non-functional, smoke, sanity, regression, retest. Они часто звучат рядом, но отвечают за разные задачи. Чтобы не путаться, полезно смотреть на них не как на набор слов для собеседования, а как на разные цели тестирования в реальной работе команды.

Функциональное тестирование

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

  • →Функциональное тестирование опирается на требования и бизнес-логику.
  • →Оно отвечает за корректность действий и результатов.

Нефункциональное тестирование

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

  • →Функционально правильно не всегда значит качественно.
  • →Нефункциональные риски часто критичны для бизнеса.

Smoke testing

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

  • →Smoke отвечает на вопрос: сборка пригодна для дальнейшей проверки?
  • →Обычно smoke проверяет самые критичные пользовательские пути.

Sanity testing

Sanity testing — это быстрая проверка конкретной области после изменений. Например, после фикса скидок в корзине QA не гоняет весь продукт, а проверяет, что именно измененная зона ведет себя разумно. Sanity уже уже по охвату, чем regression, и обычно идет после точечных доработок.

  • →Sanity — это узкая проверка здравого смысла после изменения.
  • →Она полезна после багфиксов и локальных доработок.

Regression testing

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

  • →Regression защищает уже работавший функционал.
  • →Его состав должен опираться на риски и историю дефектов.

Retest

Retest — это повторная проверка конкретного дефекта после его исправления. Если regression отвечает на вопрос не поломали ли что-то вокруг, то retest отвечает на вопрос исправили ли именно эту проблему. Эти два типа проверки часто выполняются рядом, но это не одно и то же.

  • →Retest проверяет конкретный фикс.
  • →Regression проверяет побочные последствия изменений.

Как это выглядит на практике

На реальном проекте после нового билда команда может сначала сделать smoke. Если все живо, QA идет в sanity по измененной функциональности, затем делает retest по исправленным дефектам, а перед релизом или по крупному обновлению выполняет regression. Параллельно могут существовать и нефункциональные проверки — например, performance или security.

  • →Один и тот же релиз может включать сразу несколько типов тестирования.
  • →Полезно думать не терминами, а целями каждой проверки.

Вывод

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