Из каких этапов состоит структура автотеста?

«Из каких этапов состоит структура автотеста?» — вопрос из категории Автоматизация тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стандартная структура автотеста следует паттерну AAA (Arrange-Act-Assert) или его расширенной версии и состоит из четырёх этапов:

  1. Подготовка (Arrange / Setup)

    • Настройка тестового окружения: создание тестовых данных, инициализация объектов, настройка моков (mock) или стабов (stub).
  2. Действие (Act)

    • Непосредственное выполнение тестируемого действия: вызов метода, отправка HTTP-запроса, клик по элементу UI.
  3. Проверка (Assert)

    • Верификация результата: сравнение фактического результата с ожидаемым с помощью утверждений (assertions).
  4. Очистка (Teardown)

    • Приведение системы в исходное состояние: удаление тестовых данных, закрытие соединений, сброс моков. Часто выполняется автоматически (через аннотации @pytest.fixture, @AfterEach в JUnit).

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

import pytest

def test_user_login_success():
    # 1. Arrange (Подготовка)
    test_user = User(email="test@example.com", password="secure_pass")
    db.session.add(test_user)
    db.session.commit()

    # 2. Act (Действие)
    response = client.post("/login", json={
        "email": "test@example.com",
        "password": "secure_pass"
    })

    # 3. Assert (Проверка)
    assert response.status_code == 200
    assert "access_token" in response.json
    assert response.json["user_id"] == test_user.id

    # 4. Teardown (Очистка) - в pytest часто через фикстуры
    db.session.delete(test_user)
    db.session.commit()