← Назад к вопросам

Есть ли в тест кейсе предусловия?

1.0 Junior🔥 232 комментариев
#Теория тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Есть ли в тест-кейсе предусловия?

Да, в тест-кейсе предусловия (preconditions) — это обязательный и критически важный элемент. Они описывают состояние системы, среды и данных, которое должно быть выполнено до начала выполнения шагов тест-кейса, чтобы сам тест был возможен, корректен и его результат был однозначно интерпретируем.

Зачем нужны предусловия?

  • Обеспечение воспроизводимости: Гарантируют, что тест, запущенный в разное время или разными инженерами, начнется из одного и того же известного состояния. Без этого один и тот же кейс может давать разные результаты из-за «грязного» окружения.
  • Изоляция теста: Минимизируют влияние других тестов или действий пользователя. Например, если мы тестируем функционал редактирования профиля, предусловием будет существование уже созданного и авторизованного пользователя. Мы не должны в рамках этого кейса описывать шаги регистрации.
  • Повышение эффективности: Позволяют сосредоточиться на проверке именно целевой функциональности, а не на подготовительных, часто повторяющихся, операциях. Эти операции выносятся в отдельный раздел.
  • Снижение хрупкости: Четко определенные условия уменьшают количество ложных срабатываний (false positives), когда тест падает не из-за бага, а из-за неподготовленной среды.

Что обычно входит в предусловия?

Предусловия могут касаться разных аспектов:

  1. Состояние данных:
    *   Наличие конкретной учетной записи пользователя с определенными правами.
    *   Существование в системе заказа, товара, документа с конкретными атрибутами (например, статус "В обработке").
    *   Очистка базы данных или использование тестовых фикстур.

  1. Состояние системы/среды:
    *   Приложение развернуто на тестовом стенде определенной версии.
    *   Выполнен вход в систему (авторизация).
    *   Открыта определенная страница или экран (например, "Главная страница").
    *   Установлены/настроены необходимые сторонние сервисы или моки.

  1. Конфигурация:
    *   В настройках приложения включены или выключены определенные опции.
    *   В браузере установлены нужные cookies или local storage.

Пример тест-кейса с предусловиями

Заголовок кейса: Проверка успешного добавления товара в корзину с главной страницы.

Предусловия (Preconditions):

  1. Пользователь с логином test_user@mail.com и паролем Qwerty123 зарегистрирован в системе.
  2. Пользователь авторизован в системе.
  3. Открыта главная страница интернет-магазина (https://test-shop.example.com).
  4. В каталоге присутствует товар с названием "Смартфон Model X" и ценой "29999 руб.".

Шаги (Test Steps):

  1. В блоке "Каталог товаров" найти карточку товара "Смартфон Model X".
  2. Нажать на кнопку "В корзину" на этой карточке.
  3. Нажать на иконку "Корзина" в верхнем правом углу страницы.

Ожидаемый результат (Expected Result):

  1. Всплывающее уведомление с текстом "Товар добавлен в корзину" отображается и исчезает.
  2. Счетчик на иконке корзины увеличивается на 1.
  3. На странице корзины отображается один товар: "Смартфон Model X" с ценой "29999 руб." и общая сумма равна "29999 руб.".

Предусловия в автоматизации

В автоматизированных тестах предусловия реализуются в методе setUp() (или с помощью декораторов/фикстур, как в PyTest). Они выполняются перед каждым тестом или группой тестов.

Пример на Python (pytest):

import pytest
from selenium import webdriver
from pages.login_page import LoginPage
from pages.main_page import MainPage

@pytest.fixture(scope="function")
def authorized_user(driver):
    """Фикстура: авторизованный пользователь (предусловие для многих тестов)."""
    login_page = LoginPage(driver)
    main_page = MainPage(driver)

    # Выполняем предусловие: авторизация
    driver.get(login_page.URL)
    login_page.login("test_user@mail.com", "Qwerty123")
    assert main_page.is_user_menu_visible(), "Авторизация не прошла"

    yield driver  # Тест будет запущен здесь

    # Постусловие (опционально): разлогин
    main_page.logout()

def test_add_item_to_cart(authorized_user):
    """Тест добавления товара в корзину."""
    driver = authorized_user
    main_page = MainPage(driver)

    # Шаги теста начинаются с уже выполненного предусловия
    main_page.add_item_to_cart_by_name("Смартфон Model X")
    assert main_page.is_cart_notification_displayed()
    cart_page = main_page.go_to_cart()
    assert cart_page.get_total_sum() == "29999 руб."

Заключение:

Игнорирование или нечеткое описание предусловий — одна из частых причин нестабильных (flaky) тестов. Хороший тест-кейс всегда однозначно определяет точку старта. Таким образом, предусловия — это не просто формальность, а фундаментальная практика, которая напрямую влияет на надежность, скорость выполнения и удобство поддержки как ручного, так и автоматизированного тестирования.