Работали ли вы с базами данных в контексте тестирования?

«Работали ли вы с базами данных в контексте тестирования?» — вопрос из категории Базы данных и SQL, который задают на 52% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в своей работе QA Automation инженера я регулярно взаимодействую с базами данных. Основные задачи включают:

  • Валидацию данных: Проверка корректности записей в БД после выполнения API-запросов или действий в UI.
  • Подготовку тестовых данных: Наполнение базы специфичными данными для воспроизведения различных сценариев (например, создание пользователя с определённым статусом).
  • Очистку данных: Приведение БД в исходное состояние после тестов для обеспечения изоляции и повторяемости.
  • Проверку состояний: Контроль изменений в данных между этапами выполнения бизнес-процесса.

Я использую как сырые SQL-запросы, так и ORM (например, SQLAlchemy в Python). Для изоляции тестов применяю транзакции или фикстуры, которые откатывают изменения.

Пример проверки данных с помощью SQLAlchemy:

from sqlalchemy import create_engine, text

def test_order_status():
    # Подключение к тестовой БД
    engine = create_engine("postgresql://test:test@localhost/test_db")
    with engine.connect() as conn:
        # Выполняем запрос для проверки статуса заказа
        result = conn.execute(
            text("SELECT status FROM orders WHERE order_id = :order_id"),
            {"order_id": 789}
        )
        db_status = result.fetchone()[0]
        # Сравниваем с ожидаемым значением
        assert db_status == "SHIPPED", f"Expected 'SHIPPED', got '{db_status}'"