Ответ
Оба типа тестов важны для автоматизации, но выбор первоочерёдности зависит от целей проекта и процесса разработки.
Smoke-тесты (санитарные проверки)
- Цель: Быстрая проверка работоспособности критичного core-функционала после сборки или деплоя.
- Почему важно автоматизировать: Даёт мгновенную обратную связь о "сломанной" сборке, предотвращая дальнейшую работу с нерабочим билдом. Это основа Continuous Integration (CI).
Часто повторяющиеся регрессионные тесты
- Цель: Проверка, что новые изменения не сломали существующий функционал.
- Почему важно автоматизировать: Ручной прогон объёмной регрессии занимает много времени, подвержен ошибкам усталости и замедляет релизы. Автоматизация экономит ресурсы и повышает coverage.
Критерии выбора приоритета:
- Частота релизов: При частых деплоях (CI/CD) smoke-тесты в приоритете.
- Стабильность продукта: В крупном легаси-проекте с большим количеством регрессий приоритет у часто падающих/повторяющихся сценариев.
- Идеальная стратегия: Построение Test Pyramid, где в основании — множество быстрых и стабильных юнит- и API-тестов, а smoke и UI-регрессия — её верхняя часть.
Пример структуры в коде:
import pytest
# Приоритет 1: Smoke-тест, помечен для запуска в CI
@pytest.mark.smoke
def test_smoke_login(api_client):
response = api_client.login(username="valid", password="valid")
assert response.status_code == 200
assert "token" in response.json()
# Приоритет 2: Часто повторяющийся регрессионный тест
@pytest.mark.regression
def test_full_checkout_flow(ui_driver):
ui_driver.add_product_to_cart()
ui_driver.proceed_to_checkout()
assert ui_driver.is_order_successful() == True