Ответ
Объем регрессионного тестирования определяется балансом между рисками, сроками и ресурсами. Нет универсального ответа, но выбор стратегии зависит от характера изменений.
Основные подходы:
- Полный регресс (Full Regression): Тестирование всей системы. Применяется редко из-за высокой стоимости и времени выполнения, обычно для критичных обновлений или при отсутствии надежной автоматизации.
- Выборочный регресс (Selective/Partial Regression): Тестирование только затронутых изменением модулей и связанных с ними интеграций. Это наиболее распространенный подход.
Стратегии выбора тестов для выборочного регресса:
- По приоритету: Сначала выполняются тесты для функций с наивысшим бизнес-приоритетом.
- По зоне влияния (Impact Analysis): Тестируются модули, которые непосредственно затронуты изменением, и те, что от них зависят.
- По истории дефектов: Особое внимание уделяется компонентам, которые часто ломались в прошлом.
Практический пример (Изменение API):
При обновлении эндпоинта /users с v1 на v2 регрессия должна включать:
# 1. Прямое тестирование измененного эндпоинта
def test_updated_api_endpoint():
response = api_client.post('/v2/users', data=valid_user_data)
assert response.status_code == 201
assert 'id' in response.json()
# 2. Тестирование связанного функционала
def test_user_creation_flow():
# Проверка, что новый пользователь корректно появляется в БД
user_id = create_user_via_api('/v2/users')
assert User.objects.filter(id=user_id).exists()
# 3. Тестирование обратной совместимости (если требуется)
def test_v1_endpoint_still_works():
response = api_client.get('/v1/users')
assert response.status_code == 200
Ключевой вывод: Оптимальный объем — это минимальный набор тестов, который с достаточной уверенностью покрывает риски, связанные с изменениями. Автоматизация регрессионных тестов — ключ к снижению затрат на их регулярное выполнение.