Назад к вопросам
Middle
417
questionbank

Что такое атомарность в контексте тестирования и QA?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Атомарность в контексте тестирования и QA означает, что каждый тест-кейс или автоматизированный тест должен быть независимым, самодостаточным и выполнять проверку одной минимальной единицы функциональности.

Основные принципы атомарности:

  • Независимость: Результат одного теста не должен зависеть от выполнения другого. Тесты могут выполняться в любом порядке.
  • Самодостаточность: Каждый тест должен содержать все необходимые данные и действия для своего выполнения (настройка, исполнение, очистка).
  • Проверка одной единицы: Тест должен фокусироваться на проверке одного конкретного аспекта функциональности, одной бизнес-логики или одного сценария использования.

Преимущества атомарности:

  • Стабильность: Независимые тесты более устойчивы к изменениям в других частях системы или в наборе тестов.
  • Удобство отладки: При падении теста легко определить причину, поскольку он проверяет только одну вещь.
  • Параллельное выполнение: Атомарные тесты идеально подходят для параллельного запуска, что значительно сокращает время выполнения тестового набора, особенно для автоматизированных тестов.
  • Повторное использование: Независимые, сфокусированные тесты легче переиспользовать или адаптировать для других сценариев.
  • Надежность отчетов: Результаты по каждому тесту четко показывают, какая именно функциональность прошла или не прошла проверку.

Пример атомарного vs. неатомарного теста (автоматизированного):

Неатомарный (связанные шаги):

# Неатомарный тест
def test_full_checkout_process():
    # Шаг 1: Регистрация пользователя
    register_user()
    # Шаг 2: Добавление продукта в корзину
    add_product_to_cart()
    # Шаг 3: Переход к оформлению заказа
    go_to_checkout()
    # Шаг 4: Ввод платежных данных
    enter_payment_details()
    # Шаг 5: Подтверждение заказа
    confirm_order()
    # Шаг 6: Проверка статуса заказа
    verify_order_status()
    # Если Шаг 2 упадет, мы не знаем, упал ли Шаг 1 или Шаг 3

Атомарные (отдельные тесты):

# Атомарные тесты
def test_user_registration():
    # Тестирует только регистрацию
    register_user()
    verify_registration_success()

def test_add_product_to_cart():
    # Тестирует только добавление в корзину (предполагая, что пользователь зарегистрирован)
    # Может использовать фикстуру или предварительную подготовку
    add_product_to_cart()
    verify_product_in_cart()

def test_checkout_with_valid_payment():
    # Тестирует только процесс оформления заказа (предполагая наличие продуктов в корзине)
    # Может использовать фикстуру или предварительную подготовку
    go_to_checkout()
    enter_payment_details()
    confirm_order()
    verify_order_confirmation()

В ручном тестировании атомарность также важна и достигается за счет четкого определения шагов, ожидаемого результата и тестируемой функциональности в каждом тест-кейсе.

| Тест-кейс ID | Название тест-кейса              | Предусловия                 | Шаги выполнения                                                              | Ожидаемый результат                         |
|--------------|---------------------------------|-----------------------------|------------------------------------------------------------------------------|---------------------------------------------|
| TC_001.01    | Успешная регистрация пользователя | - Пользователь не зарегистрирован | 1. Открыть страницу регистрации. 2. Заполнить все обязательные поля валидными данными. 3. Нажать кнопку "Зарегистрироваться". | Пользователь успешно зарегистрирован и перенаправлен на страницу профиля. |
| TC_002.01    | Добавление товара в корзину        | - Пользователь авторизован     | 1. Перейти на страницу товара. 2. Нажать кнопку "Добавить в корзину".       | Товар успешно добавлен в корзину.           |

Каждый из этих ручных тест-кейсов является атомарным, фокусируясь на одной конкретной операции.

Соблюдение принципа атомарности значительно повышает качество, надежность и поддерживаемость тестового набора.