Знаешь ли синтаксис запросов к БД для задач тестирования?

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

Ответ

Да, я уверенно владею SQL и активно применяю его в тестировании для:

  1. Проверки состояния данных после тестовых действий: Например, после создания заказа через UI проверяю, что соответствующая запись появилась в таблице orders с правильным статусом.
  2. Подготовки и очистки тестовых данных: Перед запуском теста вставляю необходимые записи, а после — удаляю созданные данные, чтобы обеспечить изоляцию тестов.
  3. Верификации сложной бизнес-логики, которую проще проверить прямым запросом, чем через интерфейс приложения.

Основные операции, которые я часто использую:

  • SELECT с JOIN для проверки связей:
    -- Проверка, что заказ пользователя содержит конкретный товар
    SELECT o.id, u.email, p.name
    FROM orders o
    JOIN users u ON o.user_id = u.id
    JOIN order_items oi ON o.id = oi.order_id
    JOIN products p ON oi.product_id = p.id
    WHERE o.id = 100 AND p.sku = 'SKU123';
  • INSERT для подготовки данных:
    INSERT INTO test_users (username, email, is_active)
    VALUES ('test_user_001', 'test@example.com', TRUE);
  • UPDATE для изменения состояния (например, эмуляции внешнего события):
    -- Эмуляция успешного платежа от платежного шлюза
    UPDATE payments SET status = 'SUCCESS', processed_at = NOW() WHERE order_id = 100;
  • DELETE для очистки (часто в связке с транзакциями или через teardown-скрипты):
    DELETE FROM audit_log WHERE created_at < CURRENT_DATE - INTERVAL '7 days';

    Я также работаю с агрегатными функциями (COUNT, SUM), подзапросами и понимаю важность транзакций для целостности данных во время тестов.