Как часто вы проводили регрессионное тестирование на проекте?

Ответ

На проектах регрессионное тестирование проводилось по регламентированному графику и по событию.

Типичная частота:

Тип регресса Частота / Триггер Объем
Smoke-тесты При каждой сборке (CI) Минимальный набор ключевых сценариев (5-10%)
Частичный регресс После фикса дефекта или изменения модуля Тесты затронутой функциональности (20-30%)
Полный регресс Перед релизом или в конце спринта Все или большинство регрессионных тестов (80-100%)

Пример маркировки и запуска автоматизированных регрессионных тестов в pytest:

import pytest

@pytest.mark.regression
@pytest.mark.smoke
def test_user_login():
    """Ключевой сценарий входа. Запускается при каждой сборке."""
    assert login("valid_user", "valid_pass") is True

@pytest.mark.regression
def test_order_creation_flow():
    """Расширенный бизнес-сценарий. Запускается в полном регрессе."""
    user = login("valid_user", "valid_pass")
    order = create_order(user, items=["item1", "item2"])
    assert order.status == "CREATED"

Вывод: Частота определяется балансом между необходимостью гарантировать стабильность и скоростью доставки изменений.

Ответ 18+ 🔞

А, ну смотри, тут про регресс-тесты, блядь, рассказывать — это как объяснять, почему нужно мыть руки после туалета. Вроде очевидно, а всё равно находятся те, кто пытается сэкономить на этом времени, а потом охуевают от сюрпризов в продакшене.

Так вот, на проектах у нас регрессионное тестирование было, как два сапога — пара. Или, точнее, как два хуя в одном тазу. Оно было по расписанию, чётко по календарю, и по событию — когда кто-то что-то накосячил и нужно срочно проверить, не развалилось ли всё к ебеням.

Как часто это происходило, ёпта:

Тип регресса Когда запускали / Что спровоцировало Сколько всего тестов гоняли
Smoke-тесты (дымовые) Каждую сборку, как только что-то закоммитили (CI) Самый сок, минимальный набор, чтобы понять, не сгорело ли всё нахуй сразу (5-10%)
Частичный регресс После того, как баг пофиксили или в одном модуле поковырялись Только то, что рядом с местом происшествия, чтобы не тратить время зря (20-30%)
Полный регресс Перед тем, как выкатить релиз, или в конце спринта, когда все уже без сил Всё, что накопилось, полная прогонка, чтобы спать спокойно (80-100%)

Вот, смотри, как это в коде выглядело, чтоб ты понимал масштаб распиздяйства, если этого не делать:

import pytest

@pytest.mark.regression
@pytest.mark.smoke
def test_user_login():
    """Ключевой сценарий входа. Запускается при каждой сборке."""
    assert login("valid_user", "valid_pass") is True

@pytest.mark.regression
def test_order_creation_flow():
    """Расширенный бизнес-сценарий. Запускается в полном регрессе."""
    user = login("valid_user", "valid_pass")
    order = create_order(user, items=["item1", "item2"])
    assert order.status == "CREATED"

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