В чем разница между приемочным и регрессионным тестированием?

Ответ

Приемочное тестирование (Acceptance Testing, UAT) — это финальная проверка, что реализованный продукт соответствует бизнес-требованиям и готов к использованию конечным пользователем. Фокус на валидацию (правильный ли продукт мы сделали?).

Регрессионное тестирование (Regression Testing) — это проверка, что новые изменения (фичи, багфиксы) не нарушили существующий, ранее работавший функционал. Фокус на верификацию (старая функциональность всё ещё работает правильно?).

Сравнительная таблица:

Критерий Приемочное тестирование Регрессионное тестирование
Цель Подтвердить соответствие бизнес-требованиям. Обнаружить регрессионные дефекты после изменений.
Кто выполняет Заказчик, продукт-оунер, бизнес-аналитик, иногда QA. Преимущественно QA-инженеры (ручное/авто).
Основа User Stories, критерии приемки (Acceptance Criteria), бизнес-сценарии. Набор регрессионных тест-кейсов, чек-листы, автотесты.
Уровень Системный, часто сквозные (end-to-end) сценарии. Все уровни (юнит, интеграционные, системные).
Идеальный подход Ручное выполнение реальных пользовательских сценариев. Автоматизированное для скорости и повторяемости.

Практический пример для интернет-магазина:

  • Приемочный тест:
    • Сценарий: "Как зарегистрированный пользователь, я хочу применить промокод 'SUMMER10' к корзине, чтобы получить скидку 10% на заказ свыше 1000 рублей."
    • Выполнение: Продукт-оунер вручную создаёт заказ, применяет промокод и проверяет, что итоговая сумма корректно пересчиталась, а скидка отобразилась в чеке.
  • Регрессионный тест:
    • Сценарий: После внедрения новой функции "подарочные карты" необходимо убедиться, что:
      1. Старый промокод 'SUMMER10' по-прежнему работает.
      2. Промокод и подарочная карта не могут быть применены одновременно, если это запрещено логикой.
      3. Оформление заказа без промокода работает как прежде.
    • Выполнение: QA запускает набор автотестов, покрывающих эти и другие ключевые сценарии работы с корзиной и заказами.

Связь: Успешное приемочное тестирование часто добавляет новые сценарии в регрессионную базу для защиты от будущих регрессий.

Ответ 18+ 🔞

Давай разжую, в чём разница, а то у некоторых в голове уже каша, ёпта. Представь, что ты заказал у прораба баню. Вот он её построил, выкатывает тебе ключи и говорит: «Принимай работу!»

Приемочное тестирование (UAT) — это когда ты, как хозяин, приходишь и начинаешь проверять. Топишь печь, паришься, льёшь квас на каменку — в общем, делаешь всё, для чего баню и строил. Цель одна: валидация. То есть, правильную ли баню тебе, сука, построили? Та ли, что в договоре? Или вместо парной у тебя холодильник получился? Выполняет ли она своё главное предназначение — греть и чтоб душа радовалась? Вот это и есть UAT. Делает его заказчик (ты) или твой доверенный представитель (бизнес-аналитик, например).

Регрессионное тестирование — это совсем другая история. Допустим, через месяц ты прорабу звонишь: «Мужик, тут у меня полок треснул, почини!». Он приезжает, меняет полок. И вот тут начинается регрессия. Потому что после его «ремонта» может оказаться, что:

  1. Печь перестала топить (ёперный театр!).
  2. Дверь в предбанник не закрывается.
  3. Вода из шайки теперь выливается сама по себе, будто её кот, сука, собака, опрокинул.

Цель регресса — верификация. То есть, убедиться, что починив одну херню (полок), ты не сломал к хуям десять других, которые до этого работали. Делает это обычно сам прораб (наш QA-инженер) по своему чек-листу: проверил печь, проверил дверь, проверил шайки. Идеально, если у него это автоматизировано — приехал, нажал кнопку, и система сама проверила, не протекает ли крыша после замены полка. Овердохуища скорости и надёжности.

Короче, таблица, чтоб вообще мозг не взорвался:

Критерий Приемочное тестирование Регрессионное тестирование
Суть вопроса Это та баня, которую я заказывал? (Валидация) Чиня полок, ты не разъебал печь? (Верификация)
Кто мучает Я, хозяин (Заказчик/PO). Прораб со своей бригадой (QA-инженеры).
На что смотрит На договор и мои хотелки (User Stories, Acceptance Criteria). На свою техническую документацию и прошлые работы (регресс-тест-кейсы).
Как тырит По-человечески, пытается попариться (сквозные сценарии). По-рабочему, методично долбит все узлы (все уровни тестов).
Идеал Ручной осмотр и использование. Автоматическая проверка всего и вся после каждого чиха.

Пример из жизни, чтобы стало совсем ясно, как дважды два:

Допустим, у нас интернет-магазин.

  • Приемочный тест (заказчик проверяет фичу):

    • Сценарий: «Хочу ввести промокод SUMMER10 в корзину и получить свои 10% скидочки».
    • Действие: Продукт-оунер (или ты) заходит, тыкает в корзину, вводит этот самый промокод и смотрит — упала ли цена. Если упала — афигенно, принято! Если нет — иди ты нахуй, разработчик, переделывай! Всё просто и по делу.
  • Регрессионный тест (QA страхует от пиздеца):

    • Сценарий: Через месяц программисты добавили возможность оплаты подарочными картами. Классно? Классно. Но теперь надо проверить, не сломали ли они при этом всё остальное, я тебя умоляю. Запускаем автотесты, которые проверяют:
      1. Старый промокод SUMMER10 всё ещё работает? (Вдруг его хуй с горы снёс?)
      2. А если я попробую и промокод, и подарочную карту впихнуть, система не пизда рулю? Ведёт ли себя как задумано?
      3. Оформление заказа вообще без всяких акций — живое ещё?
    • Действие: QA не сидит и не тыкает это всё руками каждый раз. Он жмёт кнопку, и пачка автотестов сама всё прогоняет. Нашёл баг — кричит: «Э, шалава, что ты там накодил? Регресс повалился!».

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